RADL

Hi folks,

Good to see the list.

I couldn't help wondering why a Web resource description format like
WADL didn't use the Resource Description Framework. For fun I've
rewritten the WADL syntax example in RDF/XML (below).

I very much like the lightweight design of WADL, though there are
certain aspects I'm not altogether comfortable with. The first is the
way resources are described - a URI identifies a resource, so a URI
'resource' element is rather unnecessary. More useful information is
the nature(s)/role(s) of the resource in the service context. RDF
properties would be an easy, standard way of expressing these (note
that I haven't attempted to refactor this in the RDF/XML below).

The extensive use of XSD typing, especially in the parameters, seems
to run counter to the usual idea of RESTful services being
loosely-coupled. What's there now seems closer to hard-wired RPC. It's
prescriptive rather than descriptive.

An RDF-based alternative could work quite well at this point too,
following the 'missing isn't broken' model [1]. Where parameters were
required, this could be *described* using OWL  cardinality.

I'm also not sure about enumerated representations, especially 'fault'
- again it seems very RPC, rather than allowing for the full range of
HTTP response codes. What I'm trying to say is that 400 isn't a HTTP
fault but is associated with a valid representation of the resource. I
do reckon 'fault' is a desirable piece of information, but would like
(somehow) for it to be pushed up to refer to the application rather
than the transport (or relate one to the other).

[Sorry if you receive another message very like this - mail problems this end]

Cheers,
Danny.

[1] http://rdfweb.org/mt/foaflog/archives/000047.html

--------------------

<?xml version="1.0" standalone="yes"?>
<application
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://research.sun.com/wadl wadl.xsd"
    xmlns:yn="urn:yahoo:yn"
    xmlns:ya="urn:yahoo:api"
    xmlns="http://research.sun.com/wadl"
    xmlns:w="http://research.sun.com/wadl"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:tns="urn:yahoo:yn">
  
  <types rdf:parseType="Resource">
    <include
	rdf:resource="http://api.search.yahoo.com/NewsSearchService/V1/NewsSearchResponse.xsd"/>
    <include
	rdf:resource="http://api.search.yahoo.com/Api/V1/error.xsd"/>
  </types>
  
  <resources>
    <resource rdf:about="http://api.search.yahoo.com/NewsSearchService/V1/newsSearch">
      <operationRef rdf:resource="#NewsSearch"/>
    </resource>
  </resources>
  
  <operation rdf:parseType="Resource">
    <id>NewsSearch</id>
    <method>get</method>

    <request rdf:parseType="Collection">
      <parameter w:name="appid" w:type="xsd:string" w:required="true"/>
      <parameter w:name="query" w:type="xsd:string" w:required="true"/>
      <parameter w:name="type" w:type="xsd:string"/>
      <parameter w:name="results" w:type="xsd:int"/>
      <parameter w:name="start" w:type="xsd:int"/>
      <parameter w:name="sort" w:type="xsd:string"/>
      <parameter w:name="language" w:type="xsd:string"/>
    </request>

    <response rdf:parseType="Collection">
      <representation w:mediaType="application/xml" w:element="yn:ResultSet"/>
      <fault w:id="SearchError" w:status="400" w:mediaType="application/xml"
	     w:element="ya:Error"/>
    </response>

  </operation>
</application>

(archived at http://dannyayers.com/2005/05/radl.rdf)

-- 

http://dannyayers.com

Received on Wednesday, 25 May 2005 10:49:25 UTC