Tag Archives: XML

Modelling RDF

> reading: Chapter 3 "Modelling Information", Semantic Web Programming, J. Hebeler et al.

Very briefly: there are three ways of writing information in RDF-style. Most likely there are much more ways of writing, or better representing, infortmation with RDF. But the following three are the most popular ones. The first one is RDF/XML, which is a XML presentation of RDF. Second is the Terse RDF Triple Language (aka Turtle ... why Turtle!?). And the third on is N-Tripel.

The XML notation is obvious. It's specialised XML for RDF. In the entry to the RDF Primer are some little examples. A snippet from a full RDF/XML could look like this:

<rdf:RDF
     xmlns:rdf="http://www.w3.org/rdf"
     xmlns:ext="http://example.org/ext"
     xmlns:foaf="http://xmlns.com/foaf/"
     xmlns:people="http://example.org/people">
  <rdf:Description rdf:about="http://.../people#Paul">
     <ext:worksWith rdf:resource="http://.../people#John/>
  </rdf:Description>
<!-- More -->
</rdf:RDF>

Well, it's XML. Not pretty, but it's interpretable for software.

The second one, Turtle, is supposed to be more human-friendly:

@prefix rdf:    <http://www.w3.org/rdf>
@prefix ext:    <http://example.org/ext>
@prefix foaf:   <http://xmlns.com/foaf>
@prefix people: <http://example.org/people> 

people:Paul ext:worksWith people:John .
people:Matt foaf:knows people:John .
people:Andrew
     foaf:knows people:Matt ;
     foaf:surname "Lopez" .

But I must say it is not that easier to read. Maybe a bit, because it has less brackets, obviously. The biggest benefit from this one is I think, that it has much less overhead (well the bracket-stuff). So file sizes would be much smaller, especially because with RDF you  can produce incredibly huge files.

And thirdly the N-Triples, which is a "simplified version of Turtle":

<urn:http://example.com/peoples:Paul> <urn:http://xmlns.com/foaf:worksWith> <urn:http://example.com/peoples:John>

So N-Triples are expressed in one line. Each entry is filled up with one line. There is no such thing as @prefix as in Turtle, which is stupid I think. Imagine: There is the full URL to a certain namespace for each subject, predicate and object. Of course this can be considered a "simplified version of Turtle", but I don't see this as practicable. If there would be a possibility to define QNames for the namespaces, this would be great. It would be so compact.