evoks

EVOKS (Editor for Vocabularies to Know Semantics)

https://github.com/kit-data-manager/evoks

Science Score: 62.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    8 of 13 committers (61.5%) from academic institutions
  • Institutional organization owner
    Organization kit-data-manager has institutional domain (www.scc.kit.edu)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.0%) to scientific vocabulary

Keywords

editor fullstack skos skos-tool thesaurus vocabularies

Keywords from Contributors

mesh sequences interactive hacking network-simulation
Last synced: 6 months ago · JSON representation ·

Repository

EVOKS (Editor for Vocabularies to Know Semantics)

Basic Info
  • Host: GitHub
  • Owner: kit-data-manager
  • License: apache-2.0
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 2.07 MB
Statistics
  • Stars: 5
  • Watchers: 2
  • Forks: 3
  • Open Issues: 114
  • Releases: 2
Topics
editor fullstack skos skos-tool thesaurus vocabularies
Created over 1 year ago · Last pushed 6 months ago
Metadata Files
Readme License Citation Codeowners

README.md

EVOKS repository

tests codecov License

EVOKS (Editor for Vocabularies to Know Semantics) is a software for creating and publishing SKOS vocabularies and thesauri. It allows you to: - create a SKOS vocabulary from scratch - import SKOS vocabularies in RDF/XML or Turtle format - edit SKOS vocabularies without using its textual representation - work collaboratively - publish the vocabulary with a single click in the vocabulary browser SKOSMOS

Note

Caution Use of this software in a production environment or with external access is at your own risk. No warranties, guarantees, or liabilities are provided, and the software is offered as-is.

Know issues

  • See github issues of this repo for all known issues.

Installation

The main way to install EVOKS and its depending services is to build and run the docker images locally using docker compose.

Prerequisites

  • Unix-based system (e.g. Linux, MacOS, Windows using WSL (untested))
  • Installation of most recent versions of
    • git
    • Docker (at least docker compose version v2.27.1 needed)

Installation procedure:

  1. Clone this repository:

    user@localhost:/home/user/$ git clone https://github.com/kit-data-manager/EVOKS.git Clone to 'EVOKS' [...] user@localhost:/home/user/$ cd EVOKS user@localhost:/home/user/EVOKS$

  2. Copy .example.env and rename to .env

  3. Open .env and change the variables if desired, see Overview of variables.

    Caution Change of Fuseki and Postgres credentials is strongly recommended, especially if it will be accessible from outside

  4. Open evoks/evoks/settings.py and change the SECRET_KEY. Use of a key generator like https://djecrety.ir/ is strongly recommended.

  5. Run docker compose build

  6. Run docker compose up

  7. Open PUBLICURL:PROXYPORT/EVOKS_URL (as set in .env), with default values http://localhost:9000/ in your browser (opening in Firefox not working currently)

  8. To open the vocabulary browser Skosmos, open PUBLICURL:PROXYPORT/skosmos-dev or PUBLICURL:PROXYPORT/skosmos-live

  9. To stop the services, run docker compose down and to restart docker compose up

Variables

| VAR NAME | Default value | Description | Change recommended | | |-------------------|--------------------|----------------------------------------------------------------------------------------------------------------------------|--------------------|---| | INSTANCENAME | defaultinstance | Prefix of docker container names | no | | | PROXYPORT | 9000 | Port where the proxy is located | no | | | PUBLICURL | localhost | (public) base URL under which the services will be reached ("http://" resp. "https://" is added automatically) | no | | | EVOKSMAIL | example@example.de | Mailaddress for automatically sending notifications to the instance admin (typically the person who installed the service) | no | | | FUSEKIPASSWORD | insecurechangeme | Default fuseki password, change especially if not used locally | yes | | | POSTGRESUSER | postgres | Default postgres username, change especially if not used locally | yes | | | POSTGRESPASSWORD | insecurechangeme | Default postgres password, change especially if not used locally | yes | | | EVOKSURL | / | path directory under which the web app (evoks) will be reached | no | | | POSTGRESPORT | 8005 | (Developers only) Port of Postgres DB, service not forwarded to host if unset | no | | | FUSEKIDEVPORT | 8003 | (Developers only) Port of Fuseki Triple Store, service not forwarded directly to host if unset | no | | | FUSEKILIVEPORT | 8004 | (Developers only) Port of Fuseki Triple Store (of published vocabularies), service not forwarded directly to host if unset | no | | | EVOKSPORT | 8000 | (Developers only) Port of EVOKS, service not forwarded directly to host if unset | no | | | SKOSMOSDEVPORT | 8001 | (Developers only) Port of Skosmos for vocabulary development, service not forwarded directly to host if unset | no | | | SKOSMOSLIVE_PORT | 8002 | (Developers only) Port of Skosmos for published vocabularies, , service not forwarded directly to host if unset | no | |

Create an administrator

You need to create an administrator account for EVOKS by performing the following steps:

  1. Run docker ps, look for <container_prefix>_web (or ...web_1) container
  2. Run docker exec -it <container_prefix>_web bash (or ...web1 accordingly)
  3. Now you are within the container. Run: python evoks/manage.py createsuperuser
  4. Follow instructions to create a superuser. You can choose whatever username, password and (arbitary) mailaddress you like
  5. Log into EVOKS using the email as username and the chosen password

Note on running the service in production state (e.g. available from the www)

Apply the Django deployment checklist. Most of it is already implemented, you should at least do the following: - Setup https using the provided reverse proxy nginx - Log into the web container and run python evoks/manage.py check --deploy and check & solve all issues - Make sure to set / change all variables in .env where it is recommended

Further settings (not needed for initial setup)

Configure Mail Server

  1. Open .env file
  2. Fill out EMAIL_HOST_USER=your-email EMAIL_HOST_PASSWORD=your-password in this file. Caution: Be aware that the password is stored as plain text!
  3. Open evoks/evoks/settings.py and configure the SMTP server. E.g. for gmail EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_USE_TLS = TRUE

Most of the email providers (e.g. Gmail) do not accept Less Secure Apps by default, so you have to accept Less Secure Apps in the settings of the email you are using.

Optional: Monitoring

You can optionally enable monitoring to be able to collect some insights on the number of stored vocabularies and terms, as well as the number of unique and total accesses. These can be collected with Prometheus and used with your monitoring setup.

To detect unique accesses, a hashed version of the users IP will be stored in memory (non-persistent) if monitoring is explicitly activated. Apart from the hashed IP, no sensitive user information is recorded. You can collect metrics yourself from the /metrics endpoint. Metrics will never be sent anywhere. The metrics endpoint is secured with HTTP Basic Authentication, the credentials can be set using environment variables (see the table below).

The following environment variables are used to configure monitoring. Note that the monitoring endpoint is disabled by default and must be activated by setting METRICS_ENABLED=true in your environment variables.

| VAR NAME | Default value | Description | Change recommended | | |-------------------|--------------------|-----------------------------------------------------------|--------------------|---| | METRICSENABLED | false | Set to true to enable the metrics endpoint | only if needed | | | METRICSUSER | metrics | Username for metrics endpoint (HTTP Basic Authentication) | yes | | | METRICS_PASS | metricsPass | Password for metrics endpoint (HTTP Basic Authentication) | yes | |

For Developers

Bypass proxy setup for direct access to services and enable Django debug mode:

  • Open .env file
  • Adjust all variables marked as "(Developers only)" in the Overview of variables. docker compose -f docker-compose.yml -f docker-compose.dev.yml up

Execution of Tests (only for developers needed)

Run the tests: docker compose -f docker-compose.yml -f docker-compose.test.yml up --abort-on-container-exit --exit-code-from web Run tests within container (e.g. for test bug fixing): Log into web container, cd to evoks, execute python manage.py test tests/model/ tests/migration/ tests/skosmos/ tests/fuseki/ tests/views/ tests/evoks

License

EVOKS is licensed under the Apache License, Version 2.0. License owner: Karlsruhe Institute of Technology (KIT)

Acknowledgement Development of this software product was funded by the German Research Foundation (DFG)—CRC 980 Episteme in Motion, Project-ID 191249397, and by the research program “Engineering Digital Futures” of the Helmholtz Association of German Research Centers.

Owner

  • Name: KIT Data Manager
  • Login: kit-data-manager
  • Kind: organization
  • Email: webmaster@datamanger.kit.edu
  • Location: Karlsruhe, Germany

Generic software and recommendations for FAIR research data management by DEM.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Kraus"
  given-names: "Felix"
  affiliation: Karlsruhe Institute of Technology
  email: felix.kraus@kit.edu
  orcid: "https://orcid.org/0000-0002-2102-4170"
title: "EVOKS"
type: software
abstract: EVOKS allows to create, import, edit, curate and publish controlled vocabularies. It uses the SKOS data model and supports RDF/XML and JSON-LD.
url: "https://github.com/kit-data-manager/EVOKS"
repository-code: "https://github.com/kit-data-manager/EVOKS"
license: Apache-2.0

GitHub Events

Total
  • Issues event: 33
  • Watch event: 3
  • Delete event: 22
  • Issue comment event: 100
  • Push event: 61
  • Pull request review event: 64
  • Pull request review comment event: 53
  • Pull request event: 82
  • Fork event: 1
  • Create event: 25
Last Year
  • Issues event: 33
  • Watch event: 3
  • Delete event: 22
  • Issue comment event: 100
  • Push event: 61
  • Pull request review event: 64
  • Pull request review comment event: 53
  • Pull request event: 82
  • Fork event: 1
  • Create event: 25

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 369
  • Total Committers: 13
  • Avg Commits per committer: 28.385
  • Development Distribution Score (DDS): 0.566
Past Year
  • Commits: 119
  • Committers: 2
  • Avg Commits per committer: 59.5
  • Development Distribution Score (DDS): 0.118
Top Committers
Name Email Commits
Felix Ernst (macbook) f****t@k****u 160
evoksontologe 8****e 42
Jonas Scholz j****z@b****e 40
felix@vocabulary.datamanger.kit.edu f****x@v****u 29
Jan j****y@g****e 25
umut ulaş cin u****3@g****m 17
dependabot[bot] 4****] 14
Jonas Scholz j****2@s****u 12
Klara Eckhardt k****t@s****u 10
ufrum u****m@s****u 10
uhzsg u****g@s****u 6
uvsfa u****a@s****u 3
danah.tonne d****e@k****u 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 59
  • Total pull requests: 118
  • Average time to close issues: 5 months
  • Average time to close pull requests: 6 days
  • Total issue authors: 6
  • Total pull request authors: 4
  • Average comments per issue: 0.54
  • Average comments per pull request: 1.19
  • Merged pull requests: 91
  • Bot issues: 0
  • Bot pull requests: 20
Past Year
  • Issues: 29
  • Pull requests: 77
  • Average time to close issues: 2 months
  • Average time to close pull requests: 9 days
  • Issue authors: 4
  • Pull request authors: 4
  • Average comments per issue: 0.34
  • Average comments per pull request: 1.6
  • Merged pull requests: 59
  • Bot issues: 0
  • Bot pull requests: 8
Top Authors
Issue Authors
  • FelixFrizzy (48)
  • philipphegel (12)
  • ToegelP (2)
  • lillyosburg (2)
  • gulzaure (1)
  • jschnasse (1)
Pull Request Authors
  • FelixFrizzy (152)
  • dependabot[bot] (40)
  • craquet (2)
  • VolkerHartmann (1)
Top Labels
Issue Labels
comment / enhancement (29) usability (19) unit::setup(docker) (16) priority::4(urgent) (14) bug (13) priority::1(low) (10) unit::backend (10) priority::3(high) (9) production-ready (8) priority::2(medium) (7) release checklist (4) unit::tests (3) question (3) unit::frontend (2) unit::skosmos (2)
Pull Request Labels
dependencies (42) javascript (20) ruby (9) comment / enhancement (1)

Dependencies

.github/workflows/pages.yml actions
  • actions/checkout v3 composite
  • actions/configure-pages v3 composite
  • actions/deploy-pages v2 composite
  • actions/upload-pages-artifact v1 composite
  • ruby/setup-ruby v1 composite
.github/workflows/tests.yml actions
  • actions/checkout v2 composite
  • codecov/codecov-action v4.0.1 composite
  • docker/setup-buildx-action v1 composite
  • docker 20.10.7 docker
Dockerfile docker
  • python 3.9.2-slim-buster build
docker-compose.dev.yml docker
docker-compose.test.yml docker
  • postgres latest
  • secoresearch/fuseki latest
docker-compose.yml docker
  • postgres latest
  • secoresearch/fuseki latest
evoks/theme/static_src/package-lock.json npm
  • 444 dependencies
evoks/theme/static_src/package.json npm
  • @tailwindcss/aspect-ratio ^0.2.0 development
  • @tailwindcss/forms ^0.3.2 development
  • @tailwindcss/line-clamp ^0.2.0 development
  • @tailwindcss/typography ^0.4.0 development
  • autoprefixer ^10.2.5 development
  • browser-sync ^2.26.14 development
  • clean-css-cli ^5.2.2 development
  • cross-env ^7.0.3 development
  • nodemon ^2.0.7 development
  • npm-run-all ^4.1.5 development
  • postcss ^8.2.9 development
  • postcss-cli ^8.3.1 development
  • postcss-import ^14.0.1 development
  • postcss-nested ^5.0.5 development
  • postcss-simple-vars ^6.0.3 development
  • rimraf ^3.0.2 development
  • tailwindcss ^2.2 development
requirements.txt pypi
  • Django >=3.0,<4.0
  • coverage *
  • django-environ *
  • django-stubs *
  • django-tailwind *
  • langcodes *
  • language_data *
  • psycopg2-binary >=2.8
  • rdflib *
  • rdflib-jsonld *
  • requests *
  • skosify *
  • sparqlwrapper *
  • sty *
  • unidecode *
docs/Gemfile rubygems
  • jekyll ~> 4.3.3
  • just-the-docs = 0.8.2
docs/Gemfile.lock rubygems
  • addressable 2.8.6
  • bundler 2.5.9
  • colorator 1.1.0
  • concurrent-ruby 1.2.3
  • em-websocket 0.5.3
  • eventmachine 1.2.7
  • ffi 1.16.3
  • forwardable-extended 2.6.0
  • google-protobuf 4.26.1
  • http_parser.rb 0.8.0
  • i18n 1.14.4
  • jekyll 4.3.3
  • jekyll-include-cache 0.2.1
  • jekyll-sass-converter 3.0.0
  • jekyll-seo-tag 2.8.0
  • jekyll-watch 2.2.1
  • just-the-docs 0.8.2
  • kramdown 2.4.0
  • kramdown-parser-gfm 1.1.0
  • liquid 4.0.4
  • listen 3.9.0
  • mercenary 0.4.0
  • pathutil 0.16.2
  • public_suffix 5.0.5
  • rake 13.2.1
  • rb-fsevent 0.11.2
  • rb-inotify 0.10.1
  • rexml 3.2.6
  • rouge 4.2.1
  • safe_yaml 1.0.5
  • sass-embedded 1.75.0
  • terminal-table 3.0.2
  • unicode-display_width 2.5.0
  • webrick 1.8.1