WoDo

From W3C Wiki


Web of Data Objects (WoDo)

An object-oriented view on the Web of Data

Index

What is a WoDo?

A Web of Data Object (WoDo) is a RESTful resource consisting of (i) an RDF graph, which is the DATA part of the WoDo, and (ii) a set of SPARQL Update statements forming the CODE part of the WoDo.

Why is this important?

There is a chasm between RESTful Web Services (see also REST and RDF Granularity) and the RDF-based Web of Data world. Understanding RDF-based data in an object-oriented sense might help overcoming this issue.

How is this supposed to work?

A first example

Let's look at a concrete example before we hammer out a big theory, which turns out to be worth nothing.

Assume (in some meta syntax) a class Person with the following declaration:


class Person {
 name : string // full name of the person
 friends : list of Person // the person's friends

 Person(name) // constructor
 string getName() // get the full name of the person
 void setName(name) // set, that is, overwrite the full name of the person
 ...
}


and to make it a bit more interesting some instances, etc:


michael = new Person('Michael Hausenblas')
toby = new Person('Toby Inkster')
michael.knows(toby)
michael.getName()
...


Now, let's see how the DATA part of a potential WoDo would look like:


@PREFIX : <http:/example.org/person-wodo#>

:michael a foaf:Person;
         foaf:name 'Michael Hausenblas' ;
         foaf:knows :toby .

:toby a foaf:Person;
        foaf:name 'Toby Inkster' .


Further, the michael.getName() method, that is, a fragment of the WoDo's CODE part, might render as follows in SPARQL:


PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX : <http:/example.org/person-wodo#>

SELECT ?name FROM <http:/example.org/person-wodo> WHERE {
 :michael foaf:name ?name .
}


A proof of concept in Perl

TobyInkster hacked together a first WoDo proof of concept in Perl.

This has been done before, right ?

Sort of. ActiveRDF is in this vein, however is bound to Ruby, hence not programming language agnostic. To make WoDos happen, one would need to create a sort of mapping for a certain target language, but approaches such as Redland indicate that such language bindings are feasible.