RE: Instantiation

Frank, thanks!

-----Original Message-----
From: Frank Manola [] 
Sent: Wednesday, November 09, 2005 5:45 PM
To: Hans Teijgeler
Cc: Semantic Web Forum
Subject: Re: Instantiation

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 

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 "", 
and the base URI would have to be "".

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.


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=""
> 3.             xmlns:exterms="">   
> 4.   <rdf:Description rdf:about="">
> 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 18:37:34 UTC