Lab: RDFS Programming in Jena

From Info216
Revision as of 17:07, 11 January 2017 by Sinoa (talk | contribs) (Created page with " =Lab 3: RDFS Programming in Jena= ==Topics== Draw RDFS graphs on paper. Basic RDFS graph programming in Jena. Entailments and axioms. ==Classes/interfaces== Model (createRD...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Lab 3: RDFS Programming in Jena


Draw RDFS graphs on paper. Basic RDFS graph programming in Jena. Entailments and axioms.


Model (createRDFSModel) InfModel (getRawModel, remove + the same methods as Model) RDFS (label, comment, subClassOf, subPropertyOf, domain, range)


"Draw an RDFS graph on paper for (as much as you can of) the following extensions to the task from lab 2: University of California, Berkeley and University of Valencia are both Universities. All universities are higher education instituttions (HEIs). Having a B.Sc. from a HEI and having a M.Sc. from a HEI are special cases of gradutating from that HEI. That a person has a degree in a subject means that the person has expertise in that subject. Only persons can have expertise, and what they have expertise about is always a subject."

Create and output the RDFS graph in Jena (as an InfModel that wraps a default Model) - if you can, try to build on your example from lab 2!

Check that simple inference works - make sure that your graph contains triples like these, even if you have not asserted them explicitly:

  • that UCB and UV are HEIs
  • that Case and Ines have both graduated from some HEI
  • that Case and Ines both has expertises
  • that Case and Ines are both persons
  • that biology and chemistry are both subjects

Rewrite some of your existing code to use rdfs:label in a triple and add an rdfs:comment to the same resource.

Create a new RDFS graph that wraps an empty base (or raw) model. This graph contains only RDFS axioms. Write it out in Turtle and read through them.

Honour tasks

Get the base (or raw) model from the RDFS graph (InfModel) and write it out (to check that it is empty).

Add some triple to the RDFS graph (InfModel). Get the base (or raw model) again and write it out to see where the new triple went.

Take the first RDFS graph you made and remove from it all the triples that are also in the graph of RDFS axioms (the one with an empty base/raw model). Write out the result. What do you see?

Download the FOAF vocabulary from and save it to a file called, e.g., FOAF.rdf . Use the schemagen tool (it is inside your Jena folders) to generate a Java class for the FOAF vocabulary.

Include the file into your project and try to use FOAF classes and properties where they fit. Try to relate the other classes and properties you have used to the classes and properties in FOAF.