https://dokk.org

zPlus ad43a41cbd [website] Smaller fonts in homepage. 2 months ago
databases ff3800ffe9 Add controller for dokk articles. 2 months ago
fuseki b9c35c28f2 Restructure directory to include "community graphs". 6 months ago
sparql_api 5556f58d8b [topics] Add SPDX template. 7 months ago
website ad43a41cbd [website] Smaller fonts in homepage. 2 months ago
.gitignore 4a56b3427d [website] Add "explore" topic. 2 months ago
LICENSE 02d41269b3 Change license GPL->AGPL 6 months ago
README.md a8e483b930 README.md: Add link to the "graphs" repository. 5 months ago
dokk.png 2398912c0f Add DOKK logo. 5 months ago
dokk.svg 2398912c0f Add DOKK logo. 5 months ago

README.md

DOKK

This is the main repository for the DOKK website.

There is also a separate repository for graphs.

Requirements

These tools are required to work with the files in this repository. Install them before continuing.

  • aria2c
  • autoconf
  • closure-compiler (from google)
  • GCC v6+
  • hdt-cpp

    $ git clone https://github.com/rdfhdt/hdt-cpp.git
    $ cd hdt-cpp
    $ ./autogen.sh
    $ ./configure
    $ make
    $ make install
    $ ldconfig
    
  • java

  • jena

    Download latest snapshot

    $ tar xzf ...
    $ mv jena-directory /usr/local/bin
    $ echo "/usr/local/bin/jena/bin:PATH" >> ~/.profile
    
  • libraptor / libraptor-dev v2+

  • libserd / libserd-dev v0.28+

  • libtool

  • libz

  • maven

  • python3

  • stylus (CSS preprocessor)

  • tidy (HTML cleanup tool)

SPARQL endpoint

These are the instructions to setup your own Fuseki server if you want to have a local copy of the DOKK database. You are not required to follow these steps unless you want your own local copy of the DOKK database.

Install Fuseki

Follow the instructions from the official website. to install Fuseki, either as a service or a standalone server. Also read Fuseki File System Layout.

Compile and install hdt-java libraries

    $ git clone https://github.com/rdfhdt/hdt-java.git

    Compile hdt-java
    --file: Specify a POM file as if we were executing Maven from that directory.
    $ mvn --file hdt-java/pom.xml clean install package

    Delete sources and only keep hdt-java .jar files
    $ cp hdt-java/hdt-api/target/hdt-api-*-SNAPSHOT.jar "${FUSEKI_HOME}/hdt-api.jar"
    $ cp hdt-java/hdt-java-core/target/hdt-java-core-*-SNAPSHOT.jar "${FUSEKI_HOME}/hdt-java-core.jar"
    $ cp hdt-java/hdt-jena/target/hdt-jena-*-SNAPSHOT.jar "${FUSEKI_HOME}/hdt-jena.jar"

    $ rm -rf hdt-java/

Customize Fuseki configuration

  1. Copy fuseki/config.ttl and fuseki/log4j.properties into your $FUSEKI_BASE folder
  2. Edit the startup script ${FUSEKI_HOME}/fuseki-server like this:

    • Adjust JVM_ARGS=${JVM_ARGS:--Xmx1G} to increase the JVM memory. This is required to accomodate HDT indices. If the memory is too low, you'll get an error when starting the server
    • Replace exec $JAVA $JVM_ARGS -jar "$JAR" "$@" with this Path to HDT jars to add to the class path. $ export FUSEKI_CLASSES="${FUSEKI_HOME}hdt-api.jar:${FUSEKI_HOME}hdt-java-core.jar:${FUSEKI_HOME}hdt-jena.jar" $ exec $JAVA $JVM_ARGS -classpath "$JAR:$FUSEKI_CLASSES" org.apache.jena.fuseki.cmd.FusekiCmd "$@"`

Run server

Create the fuseki user and group:

    $ sudo groupadd fuseki
    $ sudo useradd -g fuseki fuseki

As a standalone server

From $FUSEKI_HOME run ./fuseki-server. Make sure you have $FUSEKI_HOME and $FUSEKI_BASE defined in your environment.

As a service (systemd)

Create the file /etc/systemd/system/fuseki.service

    [Unit]
    Description=Fuseki server
    After=network.target

    [Service]
    Type=simple
    # This user must have permissions to modify FUSEKI_BASE
    User=fuseki
    Group=fuseki
    Environment=FUSEKI_HOME=/opt/fuseki/
    Environment=FUSEKI_BASE=/opt/fuseki/run/
    Restart=always
    RestartSec=1
    ExecStart=/usr/fuseki/fuseki-server

    [Install]
    WantedBy=multi-user.target

The server should be available at http://localhost:3030.

Add data (graphs) to the database

DOKK uses HDT files, so you can add data to the database simply by copying HDT files into ${FUSEKI_BASE}/databases/hdt/<graph-name>/. When you've copied all your HDT files, run ./write-configuration.sh to update the Fuseki configuration such that it will load the new graph at startup.

Website

This folder contains the public DOKK website. Execute ./debug.py to run a debug server. On production, you should use a WSGI server.

Python3 setup virtual environment

mkdir venv
virtualenv -p python3 venv
  -> alternative: python3 -m venv venv
source ./venv/bin/activate
pip3 install --no-binary :all: -r requirements.txt

Restart app on the server

touch tmp/restart.txt

License

DOKK is free software released under the GNU Affero General Public License, either version 3 or (at your option) any later version.

This license applies exclusively to the content of this repository. Graphs data is downloaded from other projects and has its own (free) license.