UserPreferences

PaceSparqlLink


Abstract

Define a link relation to point to a SPARQL query end point.

Status

Initial pace draft.

Try it out:

Rationale

The [WWW]Atom Charter used to have a section mentioning how there should be a semantics for atom (what happened to this?). This is being defined by the [WWW]atom-owl group, which is working on the [WWW]AtomOWL ontology that is designed to fit very closely the model of the atom-syntax.

Such an official semantics gives us the tools to both understand atom with more precision, but it also automtically makes it possible to query a atom web site with the full power of the SPARQL query language, allowing an atom service to offer a search facility for the store that is as powerful as possibly can be.

This means that it becomes very easy for a client to get exactly the data he is interested in for example, thereby reducing the load on the server. For example it is very easy to generate a query that only asks for changed entries on a particular day of some year and that were written by someone. No need to download and process all the feeds to get that information.

Proposal

Add a link relation of relation type "sparql" that points to a SPARQL end point. This link relation would appear in feeds.

  Client                                      Server 
    |                                           |
    |  1.) GET feed with sparql link            |     
    |------------------------------------------>|     
    |                                           |     
    |  1a.) Return feed document                |    
    |<------------------------------------------|
    |                                           |
    |  2.) Post SPARQL query                    |
    |------------------------------------------>|     
    |                                           |     
    |  2a.) Return SPARQL result                |    
    |<------------------------------------------|
    

1. A software agent finds a sparql link in a feed document

   <feed>
       <link rel="sparql" href="http://example.org/query/sparql.cgi?">
       ...
    </feed>

2. The software agent can query the endpoint using the atom-owl ontology

Example Usages

a) list all entries ids (not terribly useful)

SELECT ?id
WHERE { [] a awol:Entry;
          awol:id ?id .
      }

b) find all entries and their titles

SELECT ?entry ?title 
WHERE { 
         ?entry a awol:Entry;
               awol:title ?title .
 }

c) find all entries written after 13 October 2006

SELECT * 
WHERE { 
     [] a awol:Entry; 
        awol:id ?id;
        awol:updated ?dt .
      FILTER ( ?dt > "2006-10-13T00:00:00Z"^^xsd:dateTime  )
 }


d) find all distinct categories

SELECT DISTINCT ?cat 
WHERE { 
   [] a awol:Entry; 
      awol:category ?cat .
}


e) find all feeds whose authors are named henry

SELECT DISTINCT *
WHERE {
    ?feed a awol:Feed ; 
         awol:author ?auth; 
         awol:title ?feedTitle . 
   ?auth awol:name ?name .
   FILTER regex(?name, "Henry", "i")
}


f) list all entries in the collection belonging to the software category

SELECT DISTINCT *
WHERE {
        [] a awol:Entry;
         awol:id ?id;
         awol:category [ awol:term "software" ] .
      }


Impacts

No negative impacts.

Positive:

Notes


CategoryProposals