- From: Dave Beckett <dave.beckett@bristol.ac.uk>
- Date: Tue, 03 Dec 2002 09:56:15 +0000
- To: Chet Murthy <chet@watson.ibm.com>
- cc: www-rdf-interest@w3.org
>>>Chet Murthy said: > > In the subject testcase, there are two uses of rdf:ID. The first is > to reify an edge; the second is the ID of a node (thus, no > reification). We know that; in particular it used to be ambiguous which one did what, this is something RDF Core has clarified, or at least tried to. The test cases should make this entirely explicit, since you can see the triples that result from the different forms. > > <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:foo="http://foo/"> > <foo:Bar> > <rdf:li rdf:ID="e1">1</rdf:li> On a non-empty property element - reifies a triple. See Node Elements and Property Elements http://www.w3.org/TR/rdf-syntax-grammar/#section-Syntax-node-property-elements Reifying Statements http://www.w3.org/TR/rdf-syntax-grammar/#section-Syntax-reifying > <rdf:li rdf:parseType="Literal">2</rdf:li> > <rdf:li rdf:parseType="Resource"> > <rdf:type rdf:resource="http://foo/Bar"/> > </rdf:li> > <rdf:li rdf:ID="e4" foo:bar="foobar"/> On an empty property element - reifies a one of the generated triples, this one: _:foobarnode rdf:_4 _:id1 . where _:foobarnode is the blank node id made by the <foo:Bar> node element and the _:id1 blank node id made implicitly by the empty property element in question. _:id1 then gets the foo:bar property with the "foobar" value. [Aside: I think there are entirely too many foos & bars here, I'll consider changing them to different terms ] Empty property elements: http://www.w3.org/TR/rdf-syntax-grammar/#section-Syntax-empty-property-elements > </foo:Bar> > </rdf:RDF> > > > It seems that by using the rdf:ID for two different purposes, we end > up making it impossible to both name a node, and to reify it, in this > syntax. Instead, one wonders if, just as with "bagID", it wouldn't > make sense to use "edgeID" or some equivalent attribute-name, hence, You can name a node - give it a URI-ref - and reify it. Nodes are named by attributes on a node element - rdf:about, rdf:ID or rdf:nodeID (not what you are discussing here), or by an attribute of a property element - rdf:resource. You can't "reify a node", only a triple. You do that with rdf:ID on a property element See Reifying Statements http://www.w3.org/TR/rdf-syntax-grammar/#section-Syntax-reifying > > <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:foo="http://foo/"> > <foo:Bar> > <rdf:li rdf:edgeID="e1">1</rdf:li> equivalent to rdf:ID > <rdf:li rdf:parseType="Literal">2</rdf:li> > <rdf:li rdf:parseType="Resource"> > <rdf:type rdf:resource="http://foo/Bar"/> > </rdf:li> > <rdf:li rdf:ID="e4" foo:bar="foobar"/> Same thing here. > </foo:Bar> > </rdf:RDF> > > so that the reified edge would be (manifestly) syntactically > distinguished from a node with a specified name. I think you are confusing (fair enough) <a:nodeElement rdf:ID="blah"> and <a:propertyElement rdf:ID="blah"> which do different things, and with hindsight, shouldn't have. Dave
Received on Tuesday, 3 December 2002 04:58:26 UTC