On Tue, 7 Dec 1999, Sergey Melnik wrote:
[...]
> the current serialization syntax can produce models containing resources
> that are not explicitly named in the serialization. If a third person
> wants to refer to such resource, it is essential that every parser is
> guaranteed to produce the same URI for the resource. Period.
For reifications of triples, I'm inclined to agree, since the threee
defining information items are present (subject, predicate,
object) whenever an URI is generated for some RDF statement.
For anonymous resources, I don't think your proposal can work in the way
you hope. URIs are just more information about a resource, as are
temporary placeholder URIs.
"it is essential that every parser is guaranteed to produce the same URI
for the resource. Period."
This is a very strong statement, and one that could be qualified in a
number of ways.
Do you mean: produce the same generated URI for the same (anonymous) resource
- given byte-for-byte identical XML input (from same source)
- given byte-for-byte identical XML input (from different sources)
- given statement-for-statement identical graphs from varying sources
Here's a problematic example. Many different copies of this file could be
scattered around the web. While they're byte for byte identical, they
describe different WebMasters. I don't believe that fact that the XML is
byte-for-byte identical gives us reason to assign the same
content-derrived identifiers to the anonymous node...
Example 1: same XML bytes, different servers
<rdf:Description about="/robots.txt">
<creator>
<WebMaster> <!-- an anon node of type WebMaster -->
<emailAddress>webmaster</emailAddress>
<notes> Contact the webmaster regarding the robots.txt file</notes>
<homePage rdf:resource="/~webmaster/"/>
</WebMaster>
</creator>
</rdf:Description>
<!-- this RDF fragment will make sense on many servers and might
be copied verbatim, with the relative URIs resolved at parse-time -->
Example 2: same XML bytes, same server, different resource.
<rdf:RDF>
<WeatherReport>
<todayCloudCoverPhoto rdf:resource="/weathertoday.png"/>
<description>this is a daily weather report; the
todaysCloudCoverPhoto property is a reference to a dynamically changing
resource, created by a different person each day</description>
</WeatherReport>
</rdf:Description>
</rdf:RDF>
Feeding this to an XML/RDF parser we'd get an anonymous resource of type
"WeatherReport". On different days we might get descriptions of different
(anonymous) WeatherReports.
If we're not told the URI for a resource, we're often pretty much
stuck. Writing out parsers so they try to always generate the same
identifier given sufficent context (server, date, content-negotiation,
language-negotiation, bytes-to-parse etc) seems to me fraught with
difficulty.
My inclination is to run the other way and make sure that these URIs are
evident as generated IDs, so that processors can always tell when the URI
was cooked up by some parser instead of being widely agreed.
Dan