|
How are
related to the
Let's take the constraints of the REST architectural style as figured out here:
Resource Identification is clearly address in point 1 (URIs) and 2 (HTTP URIs) of the Linked Data principles as defined by timbl. However, the explicit suggestion of the use of HTTP URIs is against the REST feature of a uniform generic interface between components ("A REST API should not be dependent on any single communication protocol", see here). Identification is separated from interaction. Is the common, layered Semantic Web technology stack a implementation of a Uniform Interface re. REST principles? Or is it only HTTP as communication protocol? And what does "The same small set of operations applies to everything" then mean? Do I have to enable an processing of every operation on every (information) resource? Or does this mean, that I only have to provide a uniform behaviour of processing of operations on (information) resource, e.g., if a specific operation is not possible or allow on a specific resource, then the component has to communicate this in a uniform way?
This is in accord with my last statement.
Side note: I know, there is some progress in providing media type specification as resources with a URI. However, as far as I know, their resource URIs lack of a good machine-processable, dereferencable specification description, e.g., the lack of a machine-processable HTML specification that enables a machine agent to know that "the anchor elements with an href attribute create a hypertext link that, when selected, invokes a retrieval request (GET)" (this issue is derived from community statement and is not really verified, however, I currently would agree with it ;) ; please correct me, if this assertion is wrong). All in all, an agent must be able to automatically learn the processing model of a previously unknown media type, if wanted (analogues the HTTP Upgrade header field). I know, that there is some progress (discussion) in the TAG community re. a better introduction of new media types. Self-Describing Messages are enforced for machine processing by using as basis the common knowledge representation languages of the Semantic Web (i.e. RDF Model, RDF Schema, OWL, RIF) and all knowledge representation languages (incl. further Semantic Web ontologies) are referenced in this 'message'. This is somehow generalized in the third Linked Data principls as defined by timbl ("provide useful information, using the standards"). The forth Linked Data principle as defined by timbl ("Include links to other URIs
") is somehow related to Hypermedia Driven Application State of the REST principles. This principle can again be powered for better machine processing by using the common knowledge representation languages of the Semantic Web as basis. However, I'm a bit unclear how the links drive my application state. Nevertheless, I guess that the application state would change when navigating to a resource by dereferencing a link (HTTP URI).
[/edit] Stateless Interaction is not really covered by the Linked Data principles as defined by timbl, or? Albeit, when realizing "state as a resource" (cf. here), I can use again the common knowledge representation languages of the Semantic Web as basis for describing states and using HTTP URIs to make these resources also accessible. Would you agree with (parts of) my interpretation? Source, where this topic is also discussed somehow:
|
|
Concerning read-only - for Linked Data currently found in the wild, yes, this is the case, but people are working on solutions for a write-enabled Linked Data Web. Rob already mentioned SPARQL as one of the key components, for the big picture see Realizing a write-enabled Web of Data. In fact, we're now launching the WebID Incubator Group at W3C, another pivotal piece in the overall puzzle re a full-fledged write-enabled Web of Linked Data. |
|
Here is another approach, which differs from the mainstream REST vs RDF interpretation. What if we have a domain model, relying on RDF, split it into domain objects and expose subset of triples, describing each object via REST interface? And allow writing /updating triples back via REST interface ? And also allowing to generate new triples, by launching calculations, that create new REST resources and new triples. And consider using SPARQL on the client side of REST :) The implementation of the server side is not restricted to be a SPARQL endpoint, or even implemented as triple storage. It just needs to offer RDF serialization of resources, instead/or in addition to XML, microformats and HTML. Then we can use conventional technologies for implementing read/write REST services, but expose objects via their RDF representation, and link to the big LOD cloud, when necessary. If the LOD cloud finds its useful at certain point, it is trivial to retrieve the RDF representations of these REST resources, in a similar way search engines gather their information, rather than compiling the LOD cloud manually. That's what we have been doing at http://opentox.org, trying to develop REST - RDF web services platform for predictive toxicology with REST / RDF OpenTox API This has been also presented at last year ACS RDF Symposium - RESTful RDF services for predictive toxicology.
link
This answer is marked "community wiki".
I'm unsure whether your description really differs from the proposed REST + Linked Data comparision. Furthermore, the LOD cloud is not part of this discussion - it is rather than Linked Data in general (see, e.g., http://smiy.wordpress.com/2011/02/17/a-generalisation-of-the-linked-data-publishing-guideline/). Furthermore, I'm unsure about the RESTfulness of your web service. I don't endorse your interpretation of HATEOAS that is given the references presentation (http://vedina.users.sourceforge.net/publications/2010/ACS-RDF-NJ.pdf). ... ... Besides, I recognized from a short view on your API documentation, that you make use of parameters such as "content-type". This a feature that is commonly handled by the HTTP protocol via the ACCEPT header. You may have a look at http://nordsc.com/ext/classification_of_http_based_apis.html to classify your web service. We do handle content-type via ACCEPT header. Yes, it doesn't really differ, besides lifting the restriction that services should offer a SPARQL endpoint. The hypermedia constraint basically means that the client can follow the links and figure out what should do next without any external documentation. While it can is feasible for human Web, it is hardly true for any automatic client. For example the user could probably find what to paste in the forms at one of the OpenTox REST services http://apps.ideaconsult.net:8080/ambit2/algorithm/LR, but there is no generic way to achieve this for a client without some preliminary information. HATEOAS and REST classifications were extensively discussed on rest-discuss list, and still controversial to the point of somebody setting up this service http://isitrestful.com/ :) Regarding HATEOAS: I think there are clear statements given by Roy T. Fielding (see http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven). There is no such restriction that services should offer a SPARQL endpoint from a general Linked Data publishing guideline view (which is independent from concrete Semantic Web technologies). Regarding the "content-type" issue: maybe then the description at, e.g., http://opentox.org/dev/apis/api-1.1/Feature is probably a bit misleading (it suggests me that it is a parameter). Correct, there is no such restriction, but it is somehow generally assumed that linked data == a triple storage solution + SPARQL (even in this page). Thank you, this part of the documentation should be clarified - this particular entry should denote the Content-type header on POST should be sent to reflect the mime type of the content posted to the service. (imho) REST is a great design from network architecture point of view, but some aspects are a bit underspecified, which leads to all different interpretations and classifications. Even the post cited above is not really helpful when one starts to implement a REST service. Commenting each point in detail may need another thread though. Yes, trying to grasp the REST architectural style often causes much confusion. For the moment, I'm not aware of any service/API that completely fulfils the constraints ofh the REST architectural style. I'm in doubt whether this is even possible. Albeit, your project seems to be very interesting in the aspects of REST and Linked Data. I'm currently quite impressed. Well done! Thank you! There is a public mailing list, feel free to join discussions.
showing 5 of 10
show 5 more comments
|
|
Even without mentioning REST explicitly, "Toward a Basic Profile for Linked Data" essentially merges ideas from REST and Semantic web worlds. |
|
I think Data Wikis are exciting, but I think many Linked Data publishers have a distinct point-of-view, and that's a good thing. Have you ever heard of a game called "Association Football?" http://en.wikipedia.org/wiki/Association_football You know the game, but you probably don't know that name. I like watching the World Cup and I've coached soccer for kids but until I became a semantician I never knew that, according to Wikipedia and Freebase, the game that many people call soccer or football (or some derivative of football) is officially called "Association Football." Some political decision was made to call it that on Wikipedia, and I guess that's how it is, but if I was making a service aimed at ordinary people, I think I'd use a different name for that sport. I could certainly use the Freebase API to change that name, but it would get changed back. Organizations that want to maintain a stable POV won't want a write interface. Sorry, but this does not really have something to do with the stated question, or? (btw, write access can be secured by an access control mechanism) to make something scalable, write access on a data wiki needs defense in depth -- you need access control to make sure people are authenticated and to prevent changes that threaten the integrity of the system as a whole. On the other hand, you need protection against spam and other things that endanger the correctness and POV of a system. Yes, I know. However the question of this thread is: How are the principles of Linked Data as data publishing guide (independent of Semantic Web technology) and the Semantic Web as common, standardized technology stack for machine-processable knowledge representation and management in the Web is related to the principles of REST as an architectural design guideline for distributed hypermedia systems? (I guess, that the majority is aware of that an authentication and authorisation mechanism is a necessary requirement for a write-enabled system) |
|
relevant references: http://openjena.org/wiki/Fuseki http://code.google.com/p/djubby/wiki/ReadWriteLinkedData 1
Please explain a bit more the relation of the referenced frameworks to the asked question. Only posting references isn't quite comfortable on a Q&A site. To get more into detail, can you explain for instance, how the "hypermedia as the engine of application state" constraint is fulfilled in Fuseki? |

