Home > linked > Linked Data, OData, GData, DataRSS comparison matrix

Linked Data, OData, GData, DataRSS comparison matrix

February 17, 2011

(Update : Its a year since my next-in-line brother died. This post involved a conversation I had with him. I’ve finally, after 5 years, updated it to include an .ODT version of the table below. He’ll probably kick my ass the next time I see him….)

I’m new to OData, having just talked with one of my brothers about it. He’s using it in a large company, but I’m not sure if its an internal tool or for customers. However, having forgotten or never investigated it before because of the lack of Microsoft fanfare, I was struggling to see what the difference between it and Linked Data with RDF is. Much googling and reading [47,48,50] left me with lots of questions, points of view, some pros and cons, and discovery about GData and DataRSS. (I’ve really been sipping the W3C Linked Data Kool Aid too long 🙂 ).

So, I want to create a matrix of criteria that anyone can quickly look at and get salient information about them. (Perhaps I could publish that matrix as linked data sometime…). You’ll understand by now that I haven’t used OData so I’m going on what i read until I install SharePoint somewhere, or whatever else it takes to get a producer running to play with. And with that, I’ve also made the mental jump to Drupal publishing RDFa – can you embed OData in a web page ? Would you want to if you had a CMS where the data was also content ?

I hope to end up with information about LoD, OData, GData, DataRSS (and fix this table’s formatting). Help ! RDF_OData_GData_DataRSS

Criteria RDF http://www.w3.org/…/LinkingOpenData OData http://www.odata.org/ GData

http://code.google.com/intl/en/apis/gdata/

DataRSS
Logical Model Graph/EAV.
Technology grounding (esp OWL ) in Description Logic.[12, 13]. “Open
World Assumption” [27]
Graph/EAV. AtomPub
and EDM grounding in entity relationship modelling [11]. “Closed World
Assumption”[28] view (?) but with “OpenTypes” and “Dynamic Properties”
[29]
Unclear/Mixed – whatever google logical Model is behind services, but transcoded and exposed as AtomPub/JSON. Data relations and graphs not controllable by API – eg cannot define a link between data elements that doesnt already exist. GData is primarily a client API.
Physical
model
Not mandated, but probably
backed by a triple store and serialised over Http to RDF/XML, Json,
TTL, N3 or other format. RDBMS backing or proxying possible.
not mandated, but probably
backed by existing RDBMS persistence [4 – “Abstract Data Model”], or
more precisely a non-triple store. (I have no evidence to
support this, but the gist of docs and examples suggests it as a
typical use case) and serialised over Http with Atom/JSON
according to Entity Data Model (EDM)[6] and  Conceptual Schema
Definition Language (CSDL)[11]
Google applications and services publishing data in AtomPub/JSON format, with Google Data Namespace[58] elements.
Intent Data syndication
and web level linking : “The goal of
the W3C SWEO Linking Open Data community project is to extend the Web
with a data commons by publishing various open data sets as RDF on the
Web and by setting RDF links between data items from different data
sources”
Data publishing
and
syndication : “There is a vast
amount of data available today and data is now
being collected and stored at a rate never seen before. Much, if
not most, of this data however is locked into specific applications
or formats and difficult to access or to integrate into new
uses”
Google cloud data publishing [55] : “The Google Data Protocol provides a secure means for external developers to write new applications that let end users access and update the data stored by many Google products. External developers can use the Google Data Protocol directly, or they can use any of the supported programming languages provided by the client libraries.”
Protocol,
operations
http, content
negotiation, RDF, REST-GET. Sparql 1.1 for update
http, content
negotiation, AtomPub/JSON, REST-GET/PUT/POST/DELETE [9]
http,REST (PUT/POST?GET/PATCH/DELETE)[56]
Openness/Extensibility Any and all,
create your own ontology/namespace/URIs with RDFS/OWL/SKOS/…, large
opensource tooling & community, multiple serialisation RDF/XML,
JSON, N3, TTL,…
Any and all (with
a “legacy” Microsoft base), while reuse Microsoft classes and types,
namespaces (EDM)[6] with Atom/JSON serialisation. Large microsoft
tooling and integration with others following.[7,8]
Google applications and services only.
URI minting,
dereferencing
Create your own
URIs and namespaces following guidelines (“slash vs hash”) [15,16]
Subject, predicate and object URIs must be dereferencible, content
negotiation expected. Separation of concept URI and location URI
central.
Unclear whether
concept URI and Location URI are distinguished in specification –
values can certainly be Location URIs, and IDs can be URIs, but
attribute properties aren’t dereferencible to Location URIs.Well specified URI conventions [21]
Atom namespace.  <link rel=”self” …/> denotes URI of item. ETags also used for versioned updates.  Google Data namespace for content “Kinds”.[59], no dereferencing.
Linking,
matching, equivalence
External entities
can inherently be directly linked by reference, and equivalence is
possible with owl:sameAs, owl:seeAlso (and other equivalence assertions)
Navigation
properties link entity elements within a single OData materialisation –
external linkage not possible. Dereferencable attribute properties not
possible but proposed[10].
URIS Not dereferencable, linkage outside of google not possible.
Data Model :
Classes,Types,
Relationships/Ontology
RDF-S, OWL to
create ontology model of data, concepts and relations. Import and
extend external ontologies. Terminology (T-Box) and Asserted ( A-Box,
vocabulary) both possible with OWL presentation.
EDM defines
creation of entities, types, sets, associations and navigation
properties for data and relations. Primitive types a la XSD types[35].
Seems more akin to capabilities of schema definition than ontology
modelling with OWL. Unclear at this stage whether new entities can be
created, and then reused or existing ones imported and extended.
Reasoning Inferrence or reasoning out of
DL terminology and assertion separation possible. May be handled at
repository level (eg Sesame) or at query time (eg Jena)
service may be able to infer
from derived typing[41]
Namespace
handling,
vocabularies
Declare namespaces
as required when importing public or “well known”
ontologies/vocabularies, creating SPARQL queries, short hand URIs,
create new as required for your own custom classes, instances.
namespaces
supported in EDM but unclear if possible to create and use namespace,
or if it can be backed with a custome class/property definition
(ontology). $metadata seems to separate logically and physically type
and service metadata from instance data – ie oData doesn’t “eat its own
dog food”.
AtomPub and Google Data namespace only.
Content negotiation Client and server
negotiate content to best determination.[17,18]
Client specifies
or server fails, or default to Atom representation.[19]. Only XML
serialisation for service metadata.[40]. New mime-types introduced.
Use alt query param (accept-header not used)[57]
Query capability Dereferencibility
central principle to linked data, whether in document, local endpoint
or federated. SPARQL [14] query language allows suitably equipped
endpoints to service structured query requests and return serialised
RDF, json, csv, html, …
Proposed
dereferencible URIs with special $metadata path element allow type
metadata to be retrieved [10]. Running a structured query against an
OData service with something like SPARQL isn’t possible.
Query by author,category,fields.
Interoperability,
discovery
Derefencable URIs,
well-known/common/upperlevel ontologies/vocabularies.VoID [22,52] can be used to provide extensive metadata for a linked
data
endpoint.
Service documents
[32] describe types, datasets. Programmatic Mapping to/from RDF
possible.
middleware,
conversion
RDF-XML, ttl, n3
well known formats. See also content negotiation.
AtomPub, JSON
outputs. OpenVirtuoso mapping, custom code.
Security, privacy, provenance. No additional
specifications above that supplied in web/http architecture. CORS
becoming popular as access filter method for cross-site syndication
capability at client level. Server side access control. Standards for
Provenance and privacy planned and under development[24]. W3C XG
provenance group[25]
No additional
specifications above that mandated in http/atom/json.[23, 31] CORS use
possible for cross site syndication. Dallas/Azure Datamarket for
“trusted commercial and premium public domain data”.[26]
Http wire protocols, but in addition authentication (OpenID) and authorization are required(OAuth). “ClientLogin” and AuthSub are deprecated. [60]. No provenance handling.
Ownership,
license, sponsorship, governance
W3C Supported
community project [1], after a proposal by TBL[2]. Built up
Architecture of World Wide Web [3]
Microsoft owned
and
sponsored under “Open Specification Promise”, [4] but brought to W3C
incubator [5]
Documentation,
support, community
w3c docs,
community wikis,forums,blogs,developer groups and libraries.[38]
OData.org site
with developer docs, and links to articles and videos, mailinglist, msdn
[[39]
Tooling,
producing, consuming
Many and varied,
open.[1,36,37] et al.
Producers[7],
consumers[8], “datamarket”[26], PowerPivot for Excel[49
Other SPARQL update v1.1[42], Semantic
Web Services, [43-46,51-54]
Batch request [20], protocol
versioning [33], Service Operations [30]

[1]
http://www.w3.org/wiki/SweoIG/TaskForces/CommunityProjects/LinkingOpenData

[2] http://www.w3.org/DesignIssues/LinkedData.html

[3] http://www.w3.org/TR/webarch

[4] http://www.microsoft.com/interop/osp/default.mspx

[5] http://www.w3.org/QA/2010/03/microsoft_bring_odata_to_a_w3c.html

[6] http://www.odata.org/developers/protocols/overview#EntityDataModel

[7] http://www.odata.org/producers

[8] http://www.odata.org/consumers

[9] http://www.odata.org/developers/protocols/operations

[10] http://www.odata.org/blog/2010/4/22/queryable-odata-metadata

[11] http://www.odata.org/media/16348/%5Bmc-csdl%5D.pdf

[12] http://www.w3.org/TR/2009/REC-owl2-direct-semantics-20091027/

[13] http://en.wikipedia.org/wiki/Description_logic

[14] http://www.w3.org/TR/rdf-sparql-query/

[15] http://www.w3.org/TR/cooluris/

[16] http://www.w3.org/wiki/DereferenceURI

[17] http://www.w3.org/TR/webarch/#def-coneg

[18] http://www.w3.org/TR/cooluris/#implementation

[19]
http://www.odata.org/developers/protocols/operations#RepresentationFormatsAndContentTypeNegotiation

[20] http://www.odata.org/developers/protocols/batch

[21] http://www.odata.org/developers/protocols/uri-conventions

[22] http://code.google.com/p/void-impl/

[23]
http://www.odata.org/developers/protocols/overview#SecurityConsiderations

[24] http://lod2.eu/Welcome.html

[25] http://www.w3.org/2005/Incubator/prov/wiki/Relevant_Technologies

[26] https://datamarket.azure.com/

[27] http://en.wikipedia.org/wiki/Open_world_assumption

[28] http://en.wikipedia.org/wiki/Closed_world_assumption

[29] http://www.odata.org/media/16343/%5Bmc-edmx%5D.pdf

[30]
http://www.odata.org/developers/protocols/operations#InvokingServiceOperations

[31]
http://blogs.msdn.com/astoriateam/archive/2010/05/10/odata-and-authentication-part-1.aspx

[32]
http://www.odata.org/developers/protocols/overview#ServiceMetadataDocument

[33]
http://www.odata.org/developers/protocols/overview#ProtocolVersioning

[34]
http://www.odata.org/developers/protocols/overview#AbstractTypeSystem

[35] http://www.w3.org/TR/xmlschema-2

[36] http://ckan.net/

[37]
http://www.w3.org/wiki/SemanticWebTools#head-805c63479c854babe4657d5184de605910f6d3e2

[38] http://www.w3.org/2001/sw/

[39] http://www.odata.org/developers/articles

[40]
http://www.odata.org/developers/protocols/operations#Retrievingthemetadatadocument

[41]
http://www.odata.org/blog/2010/8/6/enhancing-odata-support-for-querying-derived-types—revisited

[42] http://www.w3.org/TR/2009/WD-sparql11-update-20091022/

[43] http://www.swsi.org/

[44] http://www.w3.org/Submission/OWL-S/

[45] http://www.serviceweb30.eu/cms/

[46] http://www.w3.org/Submission/WSDL-S/

[47] http://webofdata.wordpress.com/2010/04/14/oh-it-is-data-on-the-web/

[48]
http://blog.jonudell.net/2010/01/29/odata-for-collaborative-sense-making/

[49] http://www.powerpivot.com/

[50]
http://sqlblog.com/blogs/jamie_thomson/archive/2010/02/03/microsoft-odata-and-rdf.aspx

[51] http://www.wsmo.org/

[52] http://void.rkbexplorer.com/

[53] http://www.alphaworks.ibm.com/tech/wssem

[54] http://rapporter.ffi.no/rapporter/2010/00015.pdf

[55] http://code.google.com/intl/en/apis/gdata/docs/directory.html

[56] http://code.google.com/intl/en/apis/gdata/docs/2.0/basics.html

[57] http://code.google.com/intl/en/apis/gdata/docs/2.0/reference.html#QueryRequests

[58] http://schemas.google.com/g/2005

[59] http://code.google.com/intl/en/apis/gdata/docs/2.0/elements.html

[60] http://code.google.com/intl/en/apis/gdata/docs/auth/overview.html

Advertisements
Categories: linked Tags: , , , , , , , ,
  1. Steve Speicher
    July 29, 2011 at 3:29 pm

    This table is really helpful, it would be good to put it in Google docs or some other format for ease of reading and editing. Or a separate webpage, the table format in this blog is a bit harsh.

    • July 29, 2011 at 5:02 pm

      Thanks Steve – you’re right about it being a bit hard on the eye of course – I’ll see what I can do to make it easier. WordPress table support is a little selective however !

  2. December 6, 2011 at 1:10 pm

    So did you get around puting it in a google doc, and what about GData, DataRSS ?
    Providing an odata service is really quite easy if you have Visual Studio and any version of Sql Server using ms Entity Framework…

    • December 6, 2011 at 3:20 pm

      Hi – short answer, no I didnt ! It is still on the todo list tho, along with a bunch of other things. Unfortunately, work and money are getting in the way of more fun things !

  1. No trackbacks yet.
Comments are closed.
%d bloggers like this: