- From: Graham Klyne <GK@ninebynine.org>
- Date: Mon, 23 Jan 2006 10:26:40 +0000
- To: "Miles, AJ \(Alistair\)" <A.J.Miles@rl.ac.uk>
- CC: public-swbp-wg@w3.org, semantic-web@w3.org
According to RFC 3986 [1], a base URI is not permitted to have a fragment. See sections 5.1 and 4.3. #g -- [1] http://www.ietf.org/rfc/rfc3986.txt Miles, AJ (Alistair) wrote: > Just putting this on the record ... > > I've just discovered a technical detail wrt xml:base attribute in RDF/XML docs - if you put a hash at the end of the base URI it is ignored when constructing relative URIs. > > I.e. the following RDF/XML: > > <?xml version="1.0" encoding="UTF-8"?> > <rdf:RDF > xml:base="http://example.com/foo#" > xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> > > <rdf:Description rdf:about=""> > <rdfs:label>this</rdfs:label> > </rdf:Description> > > </rdf:RDF> > > ... gives the following triple: > > <http://example.com/foo> rdfs:label "this". > > It doesn't matter if you put more than one hash at the end of the base URI, they are all ignored. I.e. the following RDF/XML: > > <?xml version="1.0" encoding="UTF-8"?> > <rdf:RDF > xml:base="http://example.com/foo####" > xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> > > <rdf:Description rdf:about=""> > <rdfs:label>this</rdfs:label> > </rdf:Description> > > </rdf:RDF> > > ... gives the same triple as above: > > <http://example.com/foo> rdfs:label "this". > > Note however that the absolute URI <http://example.com/spong> is treated by RDF parsers as different from the absolute URI <http://example.com/spong#> (which spec can verify that this?). I.e. the following RDF/XML: > > <?xml version="1.0" encoding="UTF-8"?> > <rdf:RDF > xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> > > <rdf:Description rdf:about="http://example.com/spong#"> > <rdfs:label>spong#</rdfs:label> > </rdf:Description> > > <rdf:Description rdf:about="http://example.com/spong"> > <rdfs:label>spong</rdfs:label> > </rdf:Description> > > </rdf:RDF> > > ... gives the following triples: > > <http://example.com/spong#> rdfs:label "spong#". > <http://example.com/spong> rdfs:label "spong". > > Interestingly, the URI <http://example.com/spong##> raises an error when using the W3C RDF validation service (running ARP) - > > Error: {W107} Bad URI <http://elsewhere.org/spong##>: Fragment contains invalid character:# > > However, Sesame 1.2.3 doesn't raise an error, and creates a new URI resource in the graph. > > I remember vaguely Jeremy Carroll saying that hashes are actually allowed in fragment ids ... is this right or wrong? > > Finally, this has implications for RDFS/OWL vocabularies/ontologies that use a hash namespace, because it means we have to be careful not to confuse the 'vocabulary URI' (a.k.a. the 'ontology URI', i.e. the URI that identifies the vocabulary/ontology) and the 'namespace URI' (i.e. the actual URI you append the local name of each term to). E.g. > > http://example.com/vocab - vocabulary URI. > http://example.com/vocab# - namespace URI. > > For RDFS/OWL vocabularies/ontologies that use a slash namespace both the vocabulary URI and the namespace URI are the same, e.g. > > http://example.com/anothervocab/ - vocabulary URI. > http://example.com/anothervocab/ - namespace URI. > > Cheers, > > Al. > > --- > Alistair Miles > Research Associate > CCLRC - Rutherford Appleton Laboratory > Building R1 Room 1.60 > Fermi Avenue > Chilton > Didcot > Oxfordshire OX11 0QX > United Kingdom > Email: a.j.miles@rl.ac.uk > Tel: +44 (0)1235 445440 > > > -- Graham Klyne For email: http://www.ninebynine.org/#Contact
Received on Monday, 23 January 2006 10:31:32 UTC