- From: Hans Teijgeler <hans.teijgeler@quicknet.nl>
- Date: Wed, 9 Nov 2005 19:37:12 +0100
- To: "'Frank Manola'" <fmanola@acm.org>
- Cc: "'Semantic Web Forum'" <semantic-web@w3.org>
Frank, thanks!
-----Original Message-----
From: Frank Manola [mailto:fmanola@acm.org]
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
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 18:37:34 UTC