|
Hi, is there a vocabulary that allows to describe the API of a semantic REST service? By this term, I mean some HTTP service that takes, for instance, URIs of things, or some form of RDF, as input, and returns some RDF, or the kind of XML returned by SPARQL SELECTs. Typically a HTTP service that is built on top of a SPARQL endpoint, and exposes a functionality implemented by a complex SPARQL query. For instance, you have RDF data about persons and the things they like, and data about places in towns, and you provide a service that takes one person and one town as input, and returns the list of places that she should visit in the town. How could you describe that, in a "machine understandable" way? |
You might be interested in SPARQL 1.1 Service Descriptions. Quote:
But doesn't that require one to introduce an extension function to stand for any computation that the client want to rely on (behind the server)? I'm all for moving from RPC to REST but, as a former Semantic Web Services researcher, I get frustrated when every example I see merely wraps storing and retrieving representations. That's not how distributed computing works (there's some actual computation to account for). I can't edit the answer, but the updated link is here: http://www.w3.org/TR/sparql11-service-description/ @Barry, your comment is intended for the question itself? No, it was directed at your answer. I remember 'service' descriptions being added.to the SPARQL.draft but, name aside, they seemed retrieval-oriented, plus only inference, which although nice doesn't give me means to describe general.computation (I must be missing something...) |
|
Here's some pointers that might help you on your quest. Semantic Web Services: a RESTful approach has a RESTful grounding ontology that maps OWL-S and WADL where OWL-S is w3c submission for semantic web service descriptions and Web Application Description Language (WADL) is w3c submission for describing REST over http web services. WADL is to REST as WSDL is to SOAP. That said, in all the RESTful web services I've used and mashed up over the years, I have never actually seen WADL in use. Wikipedia has a nice list of semantic web service technologies and research projects that might be a good jumping off point to get started. |
|
I'm not sure what about your example is RESTful. A RESTful service doesn't generally need an API description, it's all in the media types and link relationship definitions. And since RDF uses a couple of pre-defined media types and is generally all about defining link relationships you're pretty close to REST already. You could say that Linked Data as defined by TimBL is a read-only RESTful web. |
|
Maybe the Linked Data API address into your direction. As described in their rationale
The specification provides a vocabulary for describing such APIs. An Java implementation of this Linked Data API is Elda. *) read-only (!) Edit: I got recently aware of the Service Ontology, which might be useful in that context. (Although, this ontology follows not always best practice of ontology design. However, this might be another issue.) |
|
One thing to look at is Clark & Parsia's vocabulary that they use for their Pellet Server product. If you request RDF/XML from http://ps.clarkparsia.com you can see a real-world example of this It doesn't have dereferenceable URIs so can't be reused as-is but should give you a good place to get started |

