RDF vs OData vs GData

Difference between RDF, OData and GData

RDF stands for Resource Description Framework
OData stands for Open Data Protocol
GData stands for Google Data Protocol
RDF is a framework which follows W3C technology for representing information in the Web.

The design of RDF is intended to meet the following goals:

i.having a simple data model
ii.having formal semantics and provable inference
iii.using an extensible URI-based vocabulary
iv.using an XML-based syntax
v.supporting use of XML schema datatypes
vi.allowing anyone to make statements about any resource

It is used in Mozilla to integrate and aggregate Internet resources.

Mozilla RDF was originally used to support the Aurora/Sidebar user interface and SmartBrowsing metadata services. It's main use in Mozilla now is as a common data model and API for use in XUL-based applications
The Open Data Protocol (OData) is an open web protocol for querying and updating data. The protocol allows for a consumer to query a datasource over the HTTP protocol and get the result back in formats like Atom, JSON or plain XML, including pagination, ordering or filtering of the data.

Many of the building blocks that make up OData are standardized via Atom and AtomPub. The OData specification is available under the Microsoft Open Specification Promise (OSP). Microsoft has released an OData software development kit (SDK) consisting of libraries for .NET, PHP, Java, JavaScript, webOS, and the iPhone.
Gdata provides a simple protocol for reading and writing data on the Internet, designed by Google. GData combines common XML-based syndication formats (Atom and RSS) with a feed-publishing system based on the Atom Publishing Protocol, plus some extensions for handling queries. It relies on XML or JSON as a data format.

Google provides GData client libraries for Java, JavaScript, .NET, PHP, Python, and Objective-C.
Logical Model:
Graph/EAV.Technology grounding (esp OWL ) in Description Logic.[12, 13]. “Open World Assumption” [27]
Logical Model:
Graph/EAV. AtomPub and EDM grounding in entity relationship modelling [11]. “Closed World Assumption”[28] view (?) but with “OpenTypes” and “Dynamic Properties”[29]
Logical Model:
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.
Physical model:
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]
Physical model:
Google applications and services publishing data in AtomPub/JSON format, with Google Data Namespace[58] element.
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"
http, content negotiation, RDF, REST-GET. Sparql 1.1 for update
http, content negotiation, AtomPub/JSON, REST-GET/PUT/POST/DELETE [9]
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.
URI minting,dereferencing :
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]
URI minting,dereferencing :
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)
Linking,matching, equivalence:
Navigation properties link entity elements within a single OData materialisation -external linkage not possible. Dereferencable attribute properties not possible but proposed[10].
Linking,matching, equivalence:
URIS Not dereferencable, linkage outside of google not possible.
Namespace handling,
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.
Namespace handling,
Namespaces supported in EDM but unclear if possible to create and use namespace,or if it can be backed with a custom 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”.
Namespace handling,
AtomPub and Google Data namespace only.
Content negotiation:
Client and server negotiate content to best determination.[17,18]
Content negotiation:
Client specifies or server fails, or default to Atom representation.[19]. Only XML serialisation for service metadata.[40]. New mime-types introduced.
Content negotiation:
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, …
Query capability :
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 capability :
Query by author,category,fields.
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]
Security, privacy, provenance:
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]
Security, privacy, provenance:
Http wire protocols, but in addition authentication (OpenID) and authorization are required(OAuth). “ClientLogin” and AuthSub are deprecated. [60]. No provenance handling.



[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
[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

No comments:

Post a Comment