SPARQL endpoint discovery - two suggestions

Mulling the problem of discovering provenance SPARQL endpoints, without defining 
additional features or terms, I have two suggestions:


1. Extend provenance service description; e.g.

{
   "provenance_service_uri":         "http://example.info/provenance_service/",
   "provenance_query_uri":           "http://example.info/provenance/sparql/",
   "provenance_locations_template": 
"http://example.info/provenance_service/locations/?uri={uri}",
   "provenance_content_template": 
"http://example.info/provenance_service/provenance/?uri={uri}"
}

(Note that the new field is a URI not a template.)


2. use void:sparqlEndpoint

2a. In link header field:

   Link: <http://example.info/provenance/sparql/> ;
         rel=http://rdfs.org/ns/void#sparqlEndpoint ;
         anchor=_provenance-URI_

Notes:
(i) the anchor here is the provenance URI, not the resource/entity URI, to match 
the definition of void:sparqlEndpoint.  The provenance URI here MAY be different 
from any provenance link relation given, as it would denote the complete set of 
triples available at the sparql endpoint, not necessarily those related to the 
single entity concerned.  The URI is not required to be dereferenceable.
(ii) RFC5988 says that link relation URIs SHOULD be lowercase, but not MUST.  In 
this case, I think to change the case of the void:sparqlEndpoint URI would be 
counter-rpoductive, but I'm not offhand sure of the other ramifications of this.
(iii) I'm not sure if this approach of mirroring RDF statement in link relations 
has any snags, but it seems a useful option to me.


2b in RDF

An RDF resource may refer to its own provenance SPARQL endpoint; e.g.

   ex:someEntity prov:hasProvenance
     [ void:sparqlEndpoint <http://example.info/provenance/sparql/> ]

Here, a blank node is introduced to denote the full provenance triple set.  An 
explicit URI could be used.


#g
--

Received on Saturday, 19 November 2011 13:04:36 UTC