Institute for Informatics
Georg-August-Universität Göttingen

Databases and Information Systems

Uni Göttingen

Practical Course Semantic Web Technologies
Summer Term 2019

Note: this course does not give an introduction to Semantic Web, but builds upon the knowledge from the Semantic Web WS 2018/19 lecture. The next introductory course to Semantic Web will prospectively take place in WS 2019/20.

Prof. Dr. Wolfgang May
Lars Runge, M.Sc., Sebastian Schrage, M.Sc.

Date and Time: Friday 14-18, depending on how long the course takes. The course meeting will not take place every week.
Room: IFI 2.101 (North Campus)

The course yields 6 ECTS-credits; it is graded (=benotet)


  • Successful participation in the module "Semantic Web"
  • Successful participation in the "General Programming Lab/Allgemeines Programmierpraktikum" (or an equivalent course).

Course Description

The practical course builds upon the lecture Semantic Web. Among other sources, the Mondial database in RDF format is used.

Documentation: use the slides from the Semantic Web lecture (the full slide set can be found here)

The course takes place in groups of 3-4 persons. There will be several units.
Usually, for every unit there is a course meeting, and additionally individual meetings with the groups.

Potential topics include:

  • More exercises with SPARQL
  • Linked Open Data, distributed Queries in SPARQL (e.g. using Wikidata), Multilinguality based on RDF (Wikidata, DBpedia)
  • RDF/OWL with Java I: Jena
  • RDF/OWL with Java II: RDF4J (ex-Sesame), OWL-API (OWL Manchester Syntax)
  • OWL Reasoning: rule-based internal Jena (Datalog-style) Reasoner vs. Pellet DL Reasoner
  • Openllet (open source continuation of the Pellet reasoner)
  • Ontology Generation (Protege-Tool)
  • Querying and analyzing OWL Metadata (which is not easily possible with only SPARQL)
  • RDF Databases/Data Management (with updates etc.), Data Acquisition/Consolidation
  • OWL puzzles
  • SWRL rules
  • Web Services (aside: basically a simple thing, and a good way to make the above programs accessible)

Time Schedule

  • (Friday 19.4.: holiday - easter weekend)
  • 1. Meeting 26.4. (Friday), 14-16 ct SR 2.101: Introduction, Formalities, SPARQL revisited
    Exercises: SPARQL - to be discussed until 10.5.2019.
  • 3.5.: Linked Open Data. Mondial as LOD example.
    Other examples: Wikidata and its Modeling. DBPedia, Yago, ...
    Some examples for HTML LOD SPARQL endpoints with Web forms to explore these sources: Syntax of SPARQL functions and operators: An URL-encoding service can be found here
  • 10.5.: RDF/RDFS/OWL and SPARQL and Java. The Jena API.
  • 17.5.: no course
  • from now on, the course takes place in SR -1.101 because the Smartboard in 2.101 is dead.
  • 24.5.: Rule-based Reasoning: RDFS, OWL-RL, Rules in Jena; the internal rule-based Jena reasoner.
    The new semweb-23-mai-2019.jar (ist jetzt nur noch 20MB gross, dafür ist nicht mehr alles dreimal drin ...).
  • 31.5.: no course (30.5. is Himmelfahrt holiday)
  • 7.6.: OWL-API (Manchester-Syntax for OWL/DL ), Hermit, Protege (Ontology editing; supports also SWRL rules in Manchester Syntax)
    Slides: OwlAPI, Hermit, Protege
  • 14.6.: 13:00 2.101. Besprechung von Aufgaben, Fragen etc.,
  • 21.6., 13:00: RDF4J (ex-Sesame, now with Eclipse Foundation), Discussion of Exercise Sheet 4
  • 28.6., 13:00: Discussion of Exercises
    Web-Server-Technology, HTTP, Servlets.
    Slides: Web Services
    Installation instructions for tomcat
    XQuery Demo Servlet as .war-file
    Servlet Demo Source Code
  • 5.7., 13:00: Discussion of Exercises ...
  • 12.7., 13:00: Discussion of Exercises ...
  • Anmeldung in FlexNow bis 21.7.2019

Exercise Sheets


basically the same as in the Lecture, but updated (subject to change and extension)


Jena: RDF and SPARQL

Apache JENA ( ) is a free and open source Java framework for building Semantic Web and Linked Data applications.
The course uses a lightweight housemade shell interface to Jena with Pellet for querying in a still experimental unstable version:
If something does not work, send us an email.

  • requires Java 8
  • set alias (bashrc etc.)
     alias jena310='java -jar /afs/'
  • query: (if=input-files, qf=query-file, e.g. in SPARQL)
    jena -q -if inputfiles -qf queryfile
  • general options:
    -il: input language (not necessary, is auto-detected)
    -if: input files
  • query options:
    -q: query
    -il, -if: as above
    -qf: query-file
    -ofo optimize-federated-off (concerns the eval. of SERVICE clauses in SPARQL)
  • transform options:
    -t: transform
    -ol: output format (allows RDF/XML RDF/XML-ABBREV N-TRIPLE N3-PLAIN N3-PP N3-TRIPLE N3 TURTLE; N3 is default)
  • export class tree; options:
    -e: export class tree (gives some insight for debugging an ontology ...)
    -il, -if: as above
  • reasoner options (for -q and -e):
    activate reasoning; default: internal rule-based reasoner: option -inf (for "inference")
    or use the pellet/openllet class that comes with the semweb.jar:
     jena -q -inf -qf query-filename
     jena -q -pellet -qf query-filename

Raptor RDF Syntax Library - Raptor RDF parser utility

  • access URLs as RDF client rapper instructions