- From: Frank Manola <fmanola@acm.org>
- Date: Wed, 09 Nov 2005 11:45:07 -0500
- To: Hans Teijgeler <hans.teijgeler@quicknet.nl>
- CC: Semantic Web Forum <semantic-web@w3.org>
Hi Hans-- As Jeroen has already noted, "rdf:about can be used in any place where you would use rdf:ID, no matter whether the value has been "defined" before or not." Specifically, the RDF/XML Syntax Specification (Section 2.14) says: "The rdf:ID attribute on a node element (not property element, that has another meaning) can be used instead of rdf:about and gives a relative RDF URI reference equivalent to # concatenated with the rdf:ID attribute value. So for example if rdf:ID="name", that would be equivalent to rdf:about="#name". rdf:ID provides an additional check since the same name can only appear once in the scope of an xml:base value (or document, if none is given), so is useful for defining a set of distinct, related terms relative to the same RDF URI reference." The RDF Primer says roughly the same thing, in the discussion of Example 9 in Section 3.2. Both rdf:about and rdf:ID are just ways of writing (and in some cases abbreviating, e.g., when relative URIrefs are used) URIrefs in RDF/XML. But RDF/XML is just a way of writing RDF triples (and not the only way either, BTW), and the true "meaning" of the RDF is given by the triples. By the time all this RDF/XML is represented in RDF triples, what you have are complete URIrefs as the subjects of the relevant triples, and there is no way of determing whether a URIref was originally given in RDF/XML using rdf:about or rdf:ID (or, in fact, whether the triples were originally written in RDF/XML at all). So to be more specific about your questions: 1. Using rdf:ID no more implies "instantiation" than does using rdf:about; these are just different ways of providing the URIref of the thing you want to talk about. For rdf:ID to have a special meaning of "instantiation" as far as RDF was concerned, *additional* triples somehow saying something on the order of "this appearance of the URIref defines the denoted resource" would have to be generated (since the meaning of RDF resides in the triples), and no such mechanism exists in RDF. 2. (Assuming I understand the question) you can use rdf:about anytime you want. There may *never* be any RDF/XML has uses rdf:ID to write the corresponding URIref. 3. You could write lines 4-6 roughly as you describe, but you'd need to change things a bit: a. using rdf:ID always generates a "#" in the resulting full URIref, which the original Example 2 doesn't have in the full URI. And the in-scope base URI for resolving relative URI references (given either by the document URI or explicitly specified in xml:base) would have to be something which, concatenated with "#index", gives the full URI. So, for example, in order to use rdf:ID="index", the full URI of the resource would have to be something like "http://www.example.org#index", and the base URI would have to be "http://www.example.org". b. the relative URIref for the resource in Example 2 would have to be "index.html", not "index". The existence of both rdf:ID and rdf:about is in a sense "legacy code". The original 1999 RDF M&S suggested in some places that rdf:ID was used to "introduce" URIrefs, but the formal syntax said that rdf:ID was just a way of abbreviating a full URI (and so was equivalent to rdf:about), so rather than break existing RDF/XML, the new specs simply formalized the equivalence. The OWL specs unfortunately reintroduce the idea that rdf:ID introduces a name, and rdf:about simply extends the definition. While this is a *convention* that some people may use, by the time the RDF/XML is converted to triples, that distinction disappears. So using that convention implies that you also have some central control over (and guaranteed access to) all the RDF/XML documents themselves, in order to enforce constraints like "you can't use anything in an rdf:about that hasn't already been defined using rdf:ID". These constraints may exist in (some) OWL processors (and I believe some earlier specs based on RDF used the same convention), but they aren't formally part of RDF. --Frank Hans Teijgeler wrote: > Hi Frank, > > I have a question about the RDF Primer: > > If I look at: > > Example 2: RDF/XML for the Web Page's Creation Date > > 1. <?xml version="1.0"?> > 2. <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > 3. xmlns:exterms="http://www.example.org/terms/"> > > 4. <rdf:Description rdf:about="http://www.example.org/index.html"> > 5. <exterms:creation-date>August 16, 1999</exterms:creation-date> > 6. </rdf:Description> > > 7. </rdf:RDF> > > > then I wonder whether: > > - this implies the instantiation ("putting it on the map") of > that thing > > - one can use rdf:about when it is not accompanied by a > statement, now or earlier or imported, with rdf:ID that instantiates it > > - if that is not required, one may write the lines 4-6 as: > > > > 4. <rdf:Description rdf:ID="index"> > 5. <exterms:creation-date>August 16, 1999</exterms:creation-date> > 6. </rdf:Description> > > > > Regards, > > Hans >
Received on Wednesday, 9 November 2005 16:50:42 UTC