- From: Max Völkel <voelkel@fzi.de>
- Date: Sat, 11 Nov 2006 10:41:57 +0100
- To: rest-discuss@yahoogroups.com, Roy T. Fielding <fielding@gbiv.com>
- CC: semantic-web@w3.org
HEAS = Hypermedia as Engine of Application State (REST constraint #4)
----
Hi Roy and all,
first, Roy, thank you for answering all these fuzzy questions about
almost any aspect of REST, HTTP, OO, the web, and life ;-)
I try to see the semantic web as a part of the web and describe this
in terms of REST. In particular, I am asking myself how a "web of
data" as described by timbl can be woven by resources which return
representations as content-type application/rdf+xml.
Clearly defined by REST (and HTTP) we have some kind of
web:resources, which give a requesting component a representation of
their state. Then we have rdf:resources, which are concepts which
are described in the knowledge representation language RDF, RDFS,
or OWL. Now, if we want to marry the two, we have to check what
happens to the REST contraints:
---
REST is defined by four interface constraints: -- Fielding's Thesis, p. 82
(R1) "identification of resources;"
Ok, both web:resources and rdf:resources are clearly identified, even
via the same namespace: URIs. (Today, URIs even include fragment
identifiers, so thats fine, although the resolving process is
content-type specific wrt to the fragID part).
(R2) "manipulation of resources through representations;"
In the web, clear. For RDF, well, not clear. For RDF, one could
imagine
to PUT a document to a URI serving it, in order to update it. Ok.
Using hash-URIs (like http://example.com/doc1#concept3) for
rdf:resources, a single PUT to http://example.com/doc1 would change
the state of all concepts. Some would even disappear, others be added.
A PUT to an rdf:resource URI using a hash is not even possible. Hmm.
Ok, let's try 303-URIs, as dictated by http-range-14 (@@add link). If
we have an rdf:resource a which redirects to the web:resource b, then
we can PUT to a, which gets redirected to b, so we put to b. This, in
turn, has changed the state of what we GET when we GET a and follow
redirects again.
Now, if we have an rdf:triple (x,y,z) that we want to save, to which
URI do we PUT it? To x? To z? To x and z? PUTing to x and z would
really weave the web of data, allowing someone GETing x to find out
(x,y,z) and then navigate to z - and the other way round. But PUTin to
two URIs seems a bit wired. Any comments on these ideas?
Second round: SPARQL endpoint. We can POST to the endpoint-URI and we
can GET from many, many URIs. A SPARQL endpoint exposes a "data set",
which is a set of RDF graphs. How can we set the state of such a
SPARQL endpoint? By PUTing a TRiX-representation? How can we PUT the
state of a single graph?
(R3) "self-descriptive messages;"
This seems easly possible with RDF, as it was designed for this
purpose. The only drawback is, you cannot just look at the HTTP
headers to know what's inside.
(R4) "hypermedia as the engine of application state." = ~ stateless servers
So, this where I am really lost. Which "links" in an RDF graph should
one follow? Don't we need a way in RDF to distinguish between
- pure rdf:resources (those which are not a web:resource = not an
information resource = not returning HTTP 200 OK)
- web:resources
- SPARQL endpoints, where we have a recipe to construct URIs
In HTML, all links make sense to follow, but in RDF they don't. Of
course, one can try to dereference all given URIs, but this is not
very efficient for large documents. Why not send the flag "you can
retrieve this"/"you don't have to try, it's not a web:resource" along
with the RDF? If we don't do this, the meaning of our RDF also
partially depends on whether some remote server is running properly
or not. This is something which should be possible to avoid in some
cases.
I would be really happy to receive some comments on these thoughts and
questions. I hope that neither the semweb people nor the REST people
say: "this is not our business" :-)
Kind regards,
Max Völkel
--
Dipl.-Inform. Max Völkel, Universität Karlsruhe / FZI
nepomuk.semanticdesktop.org
voelkel@fzi.de +49 721 9654-854 www.xam.de
Received on Saturday, 11 November 2006 09:52:06 UTC