- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Mon, 25 Jun 2012 12:25:06 +0100
- To: public-ldp-wg@w3.org
This email is some notes for the telecon slot on the SPARQL Graph Store
Protocol (GSP).
Andy
The document is:
http://www.w3.org/TR/sparql11-http-rdf-update/
"SPARQL 1.1 Graph Store HTTP Protocol"
Editor: Chimezie Ogbuji
Motivation
+ Utility of simple actions to manage data
=> Easy to script and write data management tools
=> No need to have a complex subsystem.
or ... basic data management by "curl".
== Graph Store
A "graph store" is a collections of graphs - one unnamed, default graph
and zero or more named slots. Really, it is a collection of slots and
it is the mutable version of an "RDF dataset". SPARQL Update works on
"graph stores", SPARQL Query works on "RDF datasets", which may be the
the state of a graph store at the point of query execution.
SPARQL Update allows fine change and control of the a graph store. But
it is also convenient to work by using HTTP actions (GET, PUT, DELETE,
POST) on whole graphs. This is especially true if the default graph is
the union of the named graphs, which is a common setup. Then different
parts of the default graph can be added and removed using GET, PUT,
DELETE, POST, and by scripting common tools.
== HTTP Usage
The document describes using HTTP for graphs - it is not defining the
HTTP verbs, rather it is explaining how HTTP is applied.
GET returns a graph
PUT replaces or creates a graph
DELETE removes a graph
The body of the actions is a serialized RDF graph with the usual content
negotiation.
The only action defined is POST. In HTTP (RFC 2616, sec 9.5) POST is
not exactly defined but one usage is "Extending a database through an
append operation."
For RDF data, it has been found useful to have POST to a graph mean to
add triples to graph (or create it if it does not exist) as the "extend"
action. As an RDF graph has no ordering of the triples, adding triples
this means add to the set.
The GSP doc also defines some things for graph stores:
POST to a graph store creates a new graph, a little like Basic Profile
Containers. It's simpler in SPARQL because the only thing you can post
to a graph store is a graph (no containers inside containers) and there
is no metadata.
GET on a graph store is not defined. No quads formats is officially
defined yet (but "coming soon" from RDF-WG) and some systems overload
the URI of the graph store with the services for query and or update
where GET is the service description.
There is informative text about PATCH but PATCH deployment isn't
widespread. The suggestion is the PATCH body is a SPARQL Update request.
== Graph Identification
The other part of the document is to do with identifying the unit to be
acted upon when it is a graph.
"Direct Graph Identification" explains that using a URL is directly
identifying the resource to act on in the normal HTTP/AWWW way. While
the graph is in some way in a graph store, there is nothing special
here. It looks just like a graph on the web.
http://host/graph-store/
has a named graph
http://host/graph-store/graph1
"Indirect Graph Identification" deals with the case of a named graph in
a graph store where the named graph does not share the name of the graph
store - it came from somewhere else, maybe the naming indicates original
location.
http://host/graph-store/
has a named graph
http://example/abc/def
In this case the naming is done with the URI query string.
The default graph is ?default
A named graph is ?graph=http://example/foo (but %-encoded as well).
http://host/graph-store?graph=http%3A//example/foo
Received on Monday, 25 June 2012 11:25:36 UTC