Re: [proto-wd] determining the base IRI

Lee Feigenbaum wrote:
> Hi everyone,
> 
> Re: ACTION: Lee to adapt text from 4.1.1 to specify how the protocol can 
> contribute to the base IRI for query evaluation as per #relIRIs in the QL 
> spec
> 
> At the end of this week's teleconference, Eric and I discussed whether the 
> protocol specification should discuss how it contributes to determination 
> of the base IRI used for resolving relative IRIs when parsing/executing a 
> SPARQL query.
> 
> Currently, rq25 already contains this text in 4.1.1 Syntax for IRIs > 
> Relative IRIs:
> 
> """
> The BASE keyword defines the Base IRI used to resolve relative IRIs per 
> RFC3986 section 5.1.1, "Base URI Embedded in Content". Section 5.1.2, 
> "Base URI from the Encapsulating Entity" defines how the Base IRI may come 
> from an encapsulating document, such as a SOAP envelope with an xml:base 
> directive, or a mime multipart document with a Content-Location header. 
> The "Retrieval URI" identified in 5.1.3, Base "URI from the Retrieval 
> URI", is the URL from which a particular SPARQL query was retrieved. If 
> none of the above specifies the Base URI, the default Base URI (section 
> 5.1.4, "Default Base URI") is used.
> """
> 
> (Aside: Eric, can you add in the anchor point here that we discussed? 
> #relIRIs)
> 
> I took a stab at editing the protocol document (not yet checked into CVS) 
> and came up with something almost identical but a bit different:
> 
> """
> Determining the Base IRI
> 
> Relative IRIs that appear in a [SPARQL] query are resolved against a base 
> IRI as per [RFC3986] section 5.1, "Establishing a Base URI". If present in 
> the query, the BASE keyword defines the Base IRI used to resolve relative 
> IRIs per RFC3986 section 5.1.1, "Base URI Embedded in Content". Otherwise, 
> Section 5.1.2, "Base URI from the Encapsulating Entity", defines how the 
> Base IRI may come from an encapsulating document, such as a SOAP envelope 
> with an xml:base directive. (See 2.3 SOAP Envelope. Otherwise, the 
> "Retrieval URI" identified in 5.1.3, Base "URI from the Retrieval URI", is 
> the URL of the SPARQL protocol service implementing the SparqlQuery 
> interface. If none of the above specifies the Base URI, the default Base 
> URI (section 5.1.4, "Default Base URI") is used.
> """
> 
> In particular, note the difference in how to intepret 5.1.3 of RFC3986 - 
> the query spec. talks about the "retrieval URI" as "the URL from which a 
> particular SPARQL query was retrieved" whereas (following the discussion 
> with EricP) whereas the text I came up with for the protocol spec says 
> that the "retrieval URI" corresponds to the URL of the SPARQL service 
> endpoint. I'm not sure which is more correct (if either), but I am pretty 
> sure that the two documents should agree on their recommendation for 
> interpreting RFC3986 5.1.3.
> 
> thoughts?

Some thoughts:

I didn't know what a retrieval URI is so I had to look it up.  RFC3986 1.2.2 says:

[[
...
To use that access mechanism to perform an action on the
    URI's resource is to "dereference" the URI.

When URIs are used within information retrieval systems to identify
    sources of information, the most common form of URI dereference is
    "retrieval": making use of a URI in order to retrieve a
    representation of its associated resource.
]]
which seems to define the term "retrieval URI".

The resource being retrieved is the query results.

If the GET request is made to the URL:
   <http://example/service?query=SELECT...>
service and query, then the retrieval URI is
   <http://example/service?query=SELECT...>


5.1.3 says:

[[
if a URI was used to retrieve the
    representation, that URI shall be considered the base URI.
]]
which to me reading gives no license to define the "retrieval URI" other than 
as the query request.  I don't see how the service is the "retrieval URI" 
because the query request is the resource.


Earlier in 1.2.2 it says:
[[
URI "resolution" is the process of
    determining an access mechanism and the appropriate parameters
    necessary to dereference a URI; this resolution may require several
    iterations.
]]
but I don't think that "parameters" here can mean the parameters in the URL, 
more external parameters like access control.  It's not the service that is 
being retrieved.

It would be nice it were <http://example/service>  - I just don't read it that 
way.

(I'd also note that both yield fairly useless URIs in the query as it is 
unlikely the data has URIs based at service, let alone the query request itself.)

YMMV

	Andy




> 
> Lee
> 
> 

Received on Friday, 9 February 2007 14:05:02 UTC