- From: <Patrick.Stickler@nokia.com>
- Date: Tue, 13 Nov 2001 22:20:52 +0200
- To: w3c-rdfcore-wg@w3.org
Howdy folks, The following are extended versions of the previous examples showing the X Proposal graph model and notation, alongside equivalent NTriples and RDF/XML representations. The second example has also been corrected to have complete level 1 uriref compression as defined by the X Proposal. It's interesting (to me at least ;-) to note that of all the notations, the minimal X notation is by far the most concise, which may make it more efficient for system dumps and raw interchange of RDF knowlege than NTriples. If UUIDs are used for nodeIDs, then you can mix and match as you like between systems with no collisions, and the knowledge is highly portable. Just a thought... And the graphs generated for the RDF/XML examples when run through http://www.w3.org/RDF/Validator look "dern perty" ;-) Regards, Patrick --- Example 1: "John says that Mary says that Bob says that the sky is green": X Notation Arc Representation: -----------> [1,S] | | | ---- subject ------> [2,U,#Sky] | | | ---- predicate ----> [3,U,#is] | | | ---- object -------> [4,U,#green] | -----------------> [5,S] | | | | --- subject ---- | | | ---- predicate ----> [6,U,{rdfq:attributedTo}] | | | ---- object -------> [7,U,#Bob] | ---------------------> [8,S] | | | | --------- subject ---- | | | ---- predicate ----> [9,U,{rdfq:attributedTo}] | | | ---- object -------> [10,U,#Mary] | | [11,S] | | ------------- subject ---- | ---- predicate ----> [12,U,{rdfq:assertedBy}] | ---- object -------> [13,U,#John] X Notation Minimal Representation: [1,S,2,3,4] [2,U,#Sky] [3,U,#is] [4,U,#green] [5,S,1,6,7] [6,U,{rdfq:attributedTo}] [7,U,#Bob] [8,S,5,9,10] [9,U,{rdfq:attributedTo}] [10,U,#Mary] [11,S,8,12,13] [12,U,{rdfq:assertedBy}] [13,U,#John] In NTriples, Form 1: _:N1 rdfg:type rdfg:SNode . _:N1 rdfg:subject _:N2 . _:N1 rdfg:predicate _:N3 . _:N1 rdfg:object _:N4 . _:N2 rdfg:type rdfg:UNode . _:N2 rdfg:label <#Sky> . _:N3 rdfg:type rdfg:UNode . _:N3 rdfg:label <#is> . _:N4 rdfg:type rdfg:UNode . _:N4 rdfg:label <#green> . _:N5 rdfg:type rdfg:SNode . _:N5 rdfg:subject _:N1 . _:N5 rdfg:predicate _:N6 . _:N5 rdfg:object _:N7 . _:N6 rdfg:type rdfg:UNode . _:N6 rdfg:label rdfq:attributedTo . _:N7 rdfg:type rdfg:UNode . _:N7 rdfg:label <#Bob> . _:N8 rdfg:type rdfg:SNode . _:N8 rdfg:subject _:N5 . _:N8 rdfg:predicate _:N9 . _:N8 rdfg:object _:N10 . _:N9 rdfg:type rdfg:UNode . _:N9 rdfg:label rdfq:attributedTo . _:N10 rdfg:type rdfg:UNode . _:N10 rdfg:label <#Mary> . _:N11 rdfg:type rdfg:SNode . _:N11 rdfg:subject _:N8 . _:N11 rdfg:predicate _:N12 . _:N11 rdfg:object _:N13 . _:N12 rdfg:type rdfg:UNode . _:N12 rdfg:label rdfq:assertedBy . _:N13 rdfg:type rdfg:UNode . _:N13 rdfg:label <#John> . In NTriples, Form 2: [ rdfg:type rdfg:SNode; rdfg:subject [ rdfg:type rdfg:SNode; rdfg:subject [ rdfg:type rdfg:SNode; rdfg:subject [ rdfg:type rdfg:SNode; rdfg:subject [ rdfg:type rdfg:UNode; rdfg:label <#Sky> ]; rdfg:predicate [ rdfg:type rdfg:UNode; rdfg:label <#is> ]; rdfg:object [ rdfg:type rdfg:UNode; rdfg:label <#green> ]; ]; rdfg:predicate [ rdfg:type rdfg:UNode; rdfg:label rdfq:attributedTo ]; rdfg:object [ rdfg:type rdfg:UNode; rdfg:label <#Bob> ]; ]; rdfg:predicate [ rdfg:type rdfg:UNode; rdfg:label rdfq:attributedTo ]; rdfg:object [ rdfg:type rdfg:UNode; rdfg:label <#Mary> ]; ]; rdfg:predicate [ rdfg:type rdfg:UNode; rdfg:label rdfq:assertedBy ]; rdfg:object [ rdfg:type rdfg:UNode; rdfg:label <#John> ]; ]; In RDF/XML, Form 1: <rdfg:SNode rdf:ID="N1"> <rdfg:subject rdf:resource="#N2"/> <rdfg:predicate rdf:resource="#N3"/> <rdfg:object rdf:resource="#N4"/> </rdfg:SNode> <rdfg:UNode rdf:ID="N2" rdfg:label="#Sky"/> <rdfg:UNode rdf:ID="N3" rdfg:label="#is"/> <rdfg:UNode rdf:ID="N4" rdfg:label="#green"/> <rdfg:SNode rdf:ID="N5"> <rdfg:subject rdf:resource="#N1"/> <rdfg:predicate rdf:resource="#N6"/> <rdfg:object rdf:resource="#N7"/> </rdfg:SNode> <rdfg:UNode rdf:ID="N6" rdfg:label="rdfq:attributedTo"/> <rdfg:UNode rdf:ID="N7" rdfg:label="#Bob"/> <rdfg:SNode rdf:ID="N8"> <rdfg:subject rdf:resource="#N5"/> <rdfg:predicate rdf:resource="#N9"/> <rdfg:object rdf:resource="#N10"/> </rdfg:SNode> <rdfg:UNode rdf:ID="N9" rdfg:label="rdfq:attributedTo"/> <rdfg:UNode rdf:ID="N10" rdfg:label="#Mary"/> <rdfg:SNode rdf:ID="N11"> <rdfg:subject rdf:resource="#N8"/> <rdfg:predicate rdf:resource="#N12"/> <rdfg:object rdf:resource="#N13"/> </rdfg:SNode> <rdfg:UNode rdf:ID="N12" rdfg:label="rdfq:assertedBy"/> <rdfg:UNode rdf:ID="N13" rdfg:label="#John"/> In RDF/XML, Form 2: <rdfg:SNode> <rdfg:subject> <rdfg:SNode> <rdfg:subject> <rdfg:SNode> <rdfg:subject> <rdfg:SNode> <rdfg:subject> <rdfg:UNode rdfg:label="#Sky"/> </rdfg:subject> <rdfg:predicate> <rdfg:UNode rdfg:label="#is"/> </rdfg:predicate> <rdfg:object> <rdfg:UNode rdfg:label="#green"/> </rdfg:object> </rdfg:SNode> </rdfg:subject> <rdfg:predicate> <rdfg:UNode rdfg:label="rdfq:attributedTo"/> </rdfg:predicate> <rdfg:object> <rdfg:UNode rdfg:label="#Bob"/> </rdfg:object> </rdfg:SNode> </rdfg:subject> <rdfg:predicate> <rdfg:UNode rdfg:label="rdfq:attributedTo"/> </rdfg:predicate> <rdfg:object> <rdfg:UNode rdfg:label="#Mary"/> </rdfg:object> </rdfg:SNode> </rdfg:subject> <rdfg:predicate> <rdfg:UNode rdfg:label="rdfq:assertedBy"/> </rdfg:predicate> <rdfg:object> <rdfg:UNode rdfg:label="#John"/> </rdfg:object> </rdfg:SNode> ---------------------------------------------------------------------- Example 2: Typed, Scoped Values X Notation Arc Representation (with level 1 uriref compression): -----------> [1,S] | | | ---- subject ------> [2,U,#status] | | | ---- predicate ----> [3,U,{rdf:label}] <----- | | | | ---- object -------> [4,L,Status] | | | | [5,S] | | | | --- subject ---- | | | ---- predicate ----> [6,U,{rdfq:scope}] <---|--- | | | | | | | | | ---- object -------> [7,U,xsd:lang:en] <-- | | ^ ^ | | | | | | | | --------------------------------------- | | | | | | | | | | [8,S] | | | | | | | | | | | ---- subject ------------- | | | | | | | | | ---- predicate --> [9,U,{rdf:type}] | | | | | | | | | ---- object -----> [10,U,{xsd:lang}] | | | | | | | -----------------> [11,S] | | | | | | | | | | --- subject ---- | | | | | | | | | ---- predicate --------------------------|--- | | | | | | ---- object -------> [12,L,English] | | | | | | [13,S] | | | | | | --------- subject ---- | | | | | ---- predicate --------------------------|------ | | ---- object ------------------------------ X Notation Minimal Representation: [1,S,2,3,4] [2,U,#status] [3,U,{rdf:label}] [4,L,Status] [5,S,1,6,7] [6,U,{rdfq:scope}] [7,U,xsd:lang:en] [8,S,7,9,10] [9,U,{rdf:type}] [10,U,{xsd:lang}] [11,S,7,3,12] [12,L,English] [13,S,11,6,7] In NTriples: _:N1 rdfg:type rdfg:SNode . _:N1 rdfg:subject _:N2 . _:N1 rdfg:predicate _:N3 . _:N1 rdfg:object _:N4 . _:N2 rdfg:type UNode . _:N2 rdfg:label <#status> . _:N3 rdfg:type rdfg:UNode . _:N3 rdfg:label rdf:label . _:N4 rdfg:type rdfg:LNode . _:N4 rdfg:label "Status" . _:N5 rdfg:type rdfg:SNode . _:N5 rdfg:subject _:N1 . _:N5 rdfg:predicate _:N6 . _:N5 rdfg:object _:N7 . _:N6 rdfg:type rdfg:UNode . _:N6 rdfg:label rdfq:scope . _:N7 rdfg:type rdfg:UNode . _:N7 rdfg:label <xsd:lang:en> . _:N8 rdfg:type rdfg:SNode . _:N8 rdfg:subject _:N7 . _:N8 rdfg:predicate _:N9 . _:N8 rdfg:object _:N10 . _:N9 rdfg:type rdfg:UNode . _:N9 rdfg:label rdf:type . _:N10 rdfg:type rdfg:UNode . _:N10 rdfg:label xsd:lang . _:N11 rdfg:type rdfg:SNode . _:N11 rdfg:subject _:N7 . _:N11 rdfg:predicate _:N3 . _:N11 rdfg:object _:N12 . _:N12 rdfg:type rdfg:LNode . _:N12 rdfg:label "English" . _:N13 rdfg:type rdfg:SNode . _:N13 rdfg:subject _:N11 . _:N13 rdfg:predicate _:N6 . _:N13 rdfg:object _:N7 . In RDF/XML: <rdfg:SNode rdf:ID="N1"> <rdfg:subject rdf:resource="#N2"/> <rdfg:predicate rdf:resource="#N3"/> <rdfg:object rdf:resource="#N4"/> </rdfg:SNode> <rdfg:UNode rdf:ID="N2" rdfg:label="#status"/> <rdfg:UNode rdf:ID="N3" rdfg:label="rdf:label"/> <rdfg:LNode rdf:ID="N4" rdfg:label="Status"/> <rdfg:SNode rdf:ID="N5"> <rdfg:subject rdf:resource="#N1"/> <rdfg:predicate rdf:resource="#N6"/> <rdfg:object rdf:resource="#N7"/> </rdfg:SNode> <rdfg:UNode rdf:ID="N6" rdfg:label="rdfq:scope"/> <rdfg:UNode rdf:ID="N7" rdfg:label="xsd:lang:en"/> <rdfg:SNode rdf:ID="N8"> <rdfg:subject rdf:resource="#N7"/> <rdfg:predicate rdf:resource="#N9"/> <rdfg:object rdf:resource="#N10"/> </rdfg:SNode> <rdfg:UNode rdf:ID="N9" rdfg:label="rdf:type"/> <rdfg:UNode rdf:ID="N10" rdfg:label="xsd:lang"/> <rdfg:SNode rdf:ID="N11"> <rdfg:subject rdf:resource="#N7"/> <rdfg:predicate rdf:resource="#N3"/> <rdfg:object rdf:resource="#N12"/> </rdfg:SNode> <rdfg:LNode rdf:ID="N12" rdfg:label="English"/> <rdfg:SNode rdf:ID="N13"> <rdfg:subject rdf:resource="#N11"/> <rdfg:predicate rdf:resource="#N6"/> <rdfg:object rdf:resource="#N7"/> </rdfg:SNode> -- Patrick Stickler Phone: +358 50 483 9453 Senior Research Scientist Fax: +358 7180 35409 Nokia Research Center Email: patrick.stickler@nokia.com
Received on Tuesday, 13 November 2001 15:21:21 UTC