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?

asked 30 Sep '10, 23:15

fps's gravatar image

fps
9115
accept rate: 0%


Typically a HTTP service that is built on top of a SPARQL endpoint, and exposes a functionality implemented by a complex SPARQL query.

You might be interested in SPARQL 1.1 Service Descriptions.

Quote:

This document describes SPARQL Service Descriptions, a method for discovering and vocabulary for describing SPARQL services made available via the SPARQL Protocol. Such descriptions are intended to provide a mechanism by which a client or end user can discover information about the SPARQL implementation/service such as supported extension functions and details about the available dataset.

link

answered 01 Oct '10, 02:59

Signified's gravatar image

Signified ♦
23.5k1623
accept rate: 37%

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).

(15 Jun '12, 08:59) Barry Norton Barry%20Norton's gravatar image

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?

(16 Jun '12, 09:26) Signified ♦ Signified's gravatar image

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...)

(16 Jun '12, 09:56) Barry Norton Barry%20Norton's gravatar image

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.

link

answered 01 Oct '10, 00:21

burkestar%201's gravatar image

burkestar 1
25315
accept rate: 0%

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.

link

answered 02 Oct '10, 12:23

Simon%20Reinhardt's gravatar image

Simon Reinhardt
1.5k27
accept rate: 22%

Maybe the Linked Data API address into your direction. As described in their rationale

There is scope for a standard way to provide simple RESTful APIs* over RDF graphs to bridge the gap between Linked Data and SPARQL.

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.)

link

answered 24 Jan '11, 11:45

zazi's gravatar image

zazi
3.4k213
accept rate: 13%

edited 23 Feb '11, 09:42

How about the HTTP vocabulary for RDF:

http://www.w3.org/TR/HTTP-in-RDF10/

link

answered 15 Jun '12, 05:37

William%20Greenly's gravatar image

William Greenly
5.1k412
accept rate: 13%

Useful as a basis, but by itself it doesn't really give you enough vocabulary for a full description.

(15 Jun '12, 08:53) Barry Norton Barry%20Norton's gravatar image

Read-write (and compute!) descriptions for RESTful RDF-bearing services were considered in work on Linked Open Services (Linked Data Services are related); SPARQL graph patterns are used to describe input and output. The same approach (wrapped as a rule in n3) is taken in RESTdesc (though it doesn't insist that RDF is actually exchanged). We all had a workshop together called 'Linked APIs' at ESWC last month.

What's odd is that no one above mentions the new W3C group on Linked Data Platform. Unlike the read-only stuff (like Linked Data API), this seems to aim to be precisely the mix of RDF and REST that we've been discussing in this former work.

link

answered 15 Jun '12, 08:52

Barry%20Norton's gravatar image

Barry Norton
1.4k19
accept rate: 19%

"What's odd is that no one above mentions the new W3C group on Linked Data Platform."

The Linked Data Platform WG wasn't even a glint in the eye of Ivan Herman when this question was asked. :P

(16 Jun '12, 09:28) Signified ♦ Signified's gravatar image

Oh, this is really old... did I revive it?

(18 Jun '12, 07:23) Barry Norton Barry%20Norton's gravatar image

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

link

answered 01 Oct '10, 14:18

Rob%20Vesse's gravatar image

Rob Vesse ♦
13.6k1715
accept rate: 29%

Thanks for the answers and the useful links. My first conclusion is: there doesn't seem to be a vocabulary that is widely used to describe the API of such a "semantic web service" - maybe an indication that it is not very useful.
I have to think more about the question - my concern is about the integration of such services in a "linked data space" : data from several sources published as LD, sparql endpoints, and such services using or returning data in that space.
When you look at an HTTP get request: ex:get?param1=val1&param2=val2&...: you can see it as a Resource, with triples describing it (the params being the properties). Or you can see the set of parameters as a blank node, etc. Hmm, where do I go from there?
This brings me back to a related question that I asked somewhere else about a standardized way to "include forms" in RDF data: a way for a server of RDF data to require some input, with a well defined meaning, from its clients. (LD principles are based on links - the equivalent of HREF links in HTML - but they do not mention the equivalent of HTML forms, the second leg of the web of documents - and I have the feeling that the web of data lacks this second leg).
Coming back to my example about towns and persons: imagine that you are the provider of linked data about the towns, and you have developed the service able to return to a given person advices about the places that she should visit. When someone dereferences the URI of a town, you may want to include in the returned RDF description of it a "parametrized link" to the service (the general service has 2 arguments: a town and a person. In the description of a town, the town is set, just remains one unknown var: the person). How could you do it?

link

answered 02 Oct '10, 11:31

fps's gravatar image

fps
9115
accept rate: 0%

Exactly with a SPARQL graph pattern (governing the required contents of a HTTP POST body), attached as a description (retrievable via HTTP OPTIONS), for my tastes (see answer below).

(15 Jun '12, 08:54) Barry Norton Barry%20Norton's gravatar image
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "Title")
  • image?![alt text](/path/img.jpg "Title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Tags:

×98
×13

Asked: 30 Sep '10, 23:15

Seen: 4,619 times

Last updated: 18 Jun '12, 07:23