Introducing the Open Data Definition

1 view
Skip to first unread message

Marcus Povey

unread,
Apr 18, 2008, 10:45:28 AM4/18/08
to open-data-...@googlegroups.com
Data portability is a bit of a hot topic at the moment, and a recent
article in the Economist illustrates that this is becoming seen as an
issue outside the technical blogging crowd.

So as I mentioned on my blog, now seems like a good time to introduce
The Open Data Definition.

So, what is ODD?

ODD is an XML based data exchange format which is designed to be simple
to implement and use. It consists of a framework and an extension format
defining keywords.

When developing the initial spec I reduced things down to their lowest
common denominators, therefore we have three main components - Entities,
Metadata and Relationships.

These components are atomic, and the format itself has virtually no
nesting. This is slightly unconventional, but it makes the format easy
to parse, supports partial import/export and makes it easy to extend the
format to support the live pinging of updates.

This gives us:

*** Entity ***

Entities are “things”, for example a web log post or a user account. The
entity has a “class” attribute to specify what type of entity it is and
can be subclassed.

All entities are identified by a UUID, this is important and I’ll get on
to that later.

*** Metadata ***

Metadata provides information about an entity as a name/value pair.
Optionally, you can give a type to specify the type of metadata - e.g.
attribute or annotation.

*** Relationship ***

As the name suggests, a relationship defines the relationship between
two entities. To do this they use a “verb” (as defined in the extension
format mentioned above). Doing it this way permits setting and
un-setting operations - for example, friend & unfriend, join & leave.

*** The UUID ***

An important concept in all this is the UUID.

The UUID is a URL which must point to an ODD representation of the thing
it represents. I think this is quite a powerful concept since it permits
truly distributed networks to be build.

Marcus

--
Marcus Povey : Senior Developer : Curverider Ltd
W: http://www.marcus-povey.co.uk
E: mar...@elgg.com

Danny Ayers

unread,
Apr 22, 2008, 8:36:40 AM4/22/08
to Open Data Definition
I'd be interested in seeing your schema/examples - the data model
seems essentially the same as the Resource Description Framework, so
presumably a mapping would be easy enough (and perhaps making such
data available to the Semantic Web via GRDDL) -

> *** Entity ***
>
> Entities are “things”, for example a web log post or a user account. The
> entity has a “class” attribute to specify what type of entity it is and
> can be subclassed.
>
> All entities are identified by a UUID, this is important and I’ll get on
> to that later.

Known in RDF (and on the Web) as resources, usually identified with
URIs. RDF schema provides subclassing capability.

> *** Metadata ***
>
> Metadata provides information about an entity as a name/value pair.
> Optionally, you can give a type to specify the type of metadata - e.g.
> attribute or annotation.

Statements in RDF are subject, property, object triples - the subject
is the entity in question, the property/object can be considered a
name/value pair. Properties are named with URIs (to allow global
reuse), objects may be resources or literals.

> *** Relationship ***
>
> As the name suggests, a relationship defines the relationship between
> two entities. To do this they use a “verb” (as defined in the extension
> format mentioned above). Doing it this way permits setting and
> un-setting operations - for example, friend & unfriend, join & leave.

Hmm, there seems to be two orthogonal ideas here - the state and the
state transition.
Generally relationships in RDF are expressed as statements (the
relationship type being the property).

> *** The UUID ***
>
> An important concept in all this is the UUID.
>
> The UUID is a URL which must point to an ODD representation of the thing
> it represents. I think this is quite a powerful concept since it permits
> truly distributed networks to be build.

On the Web the URI which identifies a resource may be dereferenced to
obtain a representation of that resource if such a representation is
available/possible, otherwise a description of the resource can be
provided (using URIs with a # part or doing a 303 redirect).

Cheers,
Danny.

See also:
http://www.rdfabout.com/
http://www.w3.org/TR/cooluris/
http://www.w3.org/TR/webarch/
http://sioc-project.org/
http://en.wikipedia.org/wiki/Linked_Data

Ben Werdmuller

unread,
Apr 22, 2008, 10:38:28 AM4/22/08
to Open Data Definition
On Apr 22, 1:36 pm, Danny Ayers <danny.ay...@gmail.com> wrote:

> I'd be interested in seeing your schema/examples

I'll leave it to Marcus to respond more fully, but the draft spec is
now available for download from http://opendd.net/. We'd be really
interested to hear your thoughts.

Ben

Phil Wolff

unread,
Apr 22, 2008, 12:45:39 PM4/22/08
to open-data-...@googlegroups.com
I'm not sure if I see where graph interaction data comes in. A vampire bit B at 2pm in the Parlor Room. C called D's mobile via Skype at pm.

Phil Wolff
managing editor, Skype Journal
http://SkypeJournal.com
pwo...@skypejournal.com
skype:evanwolf
+1-510-444-8234 San Francisco
+1-646-461-6123 New York
+44 020 8816 8780 London
+852 8175 8107 Hong Kong
http://www.linkedin.com/in/philwolff
http://www.facebook.com/profile.php?id=724232370

Ben Werdmuller

unread,
Apr 23, 2008, 5:39:40 AM4/23/08
to open-data-...@googlegroups.com
On Apr 22, 5:45 pm, "Phil Wolff" <pwo...@gmail.com> wrote:

> I'm not sure if I see where graph interaction data comes in. A vampire bit B
> at 2pm in the Parlor Room.

We can define a user called Vampire Dan:

<social:entity uuid="http://example/uuid/user/1/" class="user" />
<social:metadata entity_uuid="http://example/uuid/user/1/"
uuid="http://example/uuid/user/1/metadata/1" name="name">Vampire
Dan</social:metadata>

And someone else called Victim Jim:

<social:entity uuid="http://example/uuid/user/2/" class="user" />
<social:metadata entity_uuid="http://example/uuid/user/2/"
uuid="http://example/uuid/user/2/metadata/1" name="name">Victim
Jim</social:metadata>

Dan bit Jim:

<social:relationship uuid_one="http://example/uuid/user/1/"
verb="bite" uuid_two="http://example/uuid/user/2/" />

We could also add a piece of location metadata to each called
"location" where the value was "Parlor room". The next version of the
draft will contain an optional "published" attribute on everything, so
we can say exactly when the bite took place.

Of course, all we actually need to know is the relationship tag
(perhaps in a stream or a syndication file), and as the spec requires
the UUIDs to point to OOD representations of those users, a system can
go off and find the information it needs.

Ben


--
Ben Werdmuller
Elgg http://elgg.com/ | Personal http://ben.elgg.com/
Skype benjaminmorayhouse1

Reply all
Reply to author
Forward
0 new messages