Archive

Posts Tagged ‘lod’

Using w3c org ontology to describe Ireland’s entry to the EU (i)

November 22, 2014 Comments off

eGovernment EU Institutions working on interoperability (“Joinup”) have commited to the W3C their work on an ontology describing organisations. This follows work by Dave Reynolds.

There are also ontologies and vocabularies for Registered Organisations, EU institutions, job descriptions and do on. All very useful – really ! – but in trying to use them to describe the history of the Irish accession and membership of the EU I have come across a few things that have led to some customisations and extensions – a new ontology in fact. Of course, this is part of the beauty of Linked Data and I hope to have some real data to publish soon for review.

The dataset should include, starting at 1950, the history of Ireland’s interaction with the EU and the events that took place from them, in context. This will include organisations, events, ministries, ministers, locations, dates, and outcomes, and so will require some thought and analysis to avoid duplicating what is there already and to make correct use of the classes and properties already defined.

There are a few things to consider, not least the definition of a “state” for a “government” and a “ministry” or “department”. The Location ontology allows for geometric coordinates and spatial descriptions for instance, but the organisation ontology on the other hand doesn’t cater for a political or economic location to be described. So I am adding that and making use of another ontology (the Agricultural Information Management Standards geopolitical ontology/thesaurus). This will be joined by an object property.

The Joinup vocabulary for EU institutions includes historical names for the economic organisations and treaties – like the European Coal and Steel Community for instance – and is described using SKOS. This gets included as a reference source in my ontology. Treaties are not described as particular things so I’m working on adding that too. Prov-o may or may not help here. The CPSV catalog describes the Public Service but appears incomplete or still in development. It also doesn’t seem to link to the org ontology in any way, so I’ll tackle that as well. There is also a vocab for institutions names and civil service roles that will be useful, as long as I can link it back to foaf properly – still trying to see how for now !

Of course this all highlights a  issues and advantages of open world ontologies

  • your modelling perspective defines what you want to use and how you see other work – I see some gaps and connections that others may not, or that were not important or particular at the time, or that in fact need or can only be defined depending on your perspective
  • its possible to make up for that by joining and linking classes in a new ontology that reflects your vision
  • it can be hard work trying to figure out what exists already and where and how to extend it
  • tool support (in Protege at least) is lacking when it comes to creating individuals as well as new classes and properties – ideally I want to pick a class, then get some completion help to allow me to see the class hierarchy and the available properties (like a programming IDE – Eclipse or Idea for instance). I resort to sparql.
  • How to coin linkable URI and  where to publish  with a content negotiator and sparql endpoint ?

Still, it’s going to take some time, but should be interesting to come up with something that can be reviewed, corrected and evolve – without reinventing the wheel. Success will be measured in how many inbound links it gets !

MonetDB and OpenJena

April 6, 2012 1 comment

MonetDB has been updated recently with a Dec 2011-SP2 release. Having previously tried to integrate it with OpenJena and failed because of the use of multiple inner joins, I was happy to find that the update fixed those problems and allows all the integration/unit-tests to pass.

This means of course that Im going to now have to create a patch to Jena (see Jira issue[1]), and when thats done, you can follow the instructions below to test it out – literally run the unit tests. I have been using Ubuntu 11.10 amd64 for this so the notes below reflect this:

1) Download latest MonetDB and JDBC driver

2) Install as per instructions (default username:monetdb with password:monetdb)

3) In your home dir create a my-farm directory

4) Create an "env.sh" file to house your local settings for PATH etc

export JAVA_HOME=/usr/lib/jvm/java-6-sun
#point this to whereever you have SDB installed
export SDBROOT=${JENA_HOME}/SDB
export PATH=$SDBROOT/bin:$PATH
#point this to whereever you have downloaded the MonetDB JDBC driver
export SDB_JDBC=~/Downloads/monetdb/jdbcclient.jar

5) Create a "monet_h.ttl" assembly file to define a layout2/hash repository

@prefix sdb:     <http://jena.hpl.hp.com/2007/sdb#> .
@prefix rdfs:     <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .

# MonetDB

<#store> rdf:type sdb:Store ;
sdb:layout     "layout2/hash" ;
sdb:connection <#conn> ;
.

<#conn> rdf:type sdb:SDBConnection ;
sdb:sdbType       "MonetDB" ;    # Needed for JDBC URL
sdb:sdbHost       "localhost" ;
sdb:sdbName       "TEST2H" ;
sdb:driver        "nl.cwi.monetdb.jdbc.MonetDriver" ;
sdb:sdbUser        "monetdb" ;
sdb:sdbPassword        "monetdb" ;
sdb:jdbcURL    "jdbc:monetdb://localhost:50000/TEST2H";
.

6) create a script – "make_db.sh"– to drop,create and initialise the repo – this needs to be used each time you run the sdbtest suite. It will make use of the env.sh and the monet_h.ttl

cd $JENA_HOME
monetdb stop TEST2H
monetdb destroy TEST2H
monetdb create TEST2H
monetdb release TEST2H
. ./env.sh
bin/sdbconfig --sdb monet_h.ttl --create

7) Run the make_db.sh script

8) Check things went ok with

i) mclient -u monetdb -d TEST2H.

ii) \D

You should see a dump of the schema. There should be among other things a prefixes table.

9) Now for the unit tests :

Create a monetdb-hash.ttl file that Jena can use to connect with

@prefix sdb:     <http://jena.hpl.hp.com/2007/sdb#> .
@prefix rdfs:     <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .

[] rdf:type sdb:Store ;
sdb:layout     "layout2" ;
sdb:connection _:c ;
.

_:c rdf:type sdb:SDBConnection ;
sdb:sdbType       "MonetDB" ;    # Needed for JDBC URL
sdb:sdbHost       "localhost" ;
sdb:sdbName       "TEST2H" ;
sdb:driver        "nl.cwi.monetdb.jdbc.MonetDriver" ;
sdb:sdbUser        "monetdb" ;
sdb:sdbPassword        "monetdb" ;
sdb:jdbcURL    "jdbc:monetdb://localhost:50000/TEST2H?debug=true&logfile=monet.debug.log";

10) If in Eclipse, with the SDB source, create a run configuration for sdbtest.

#Main class : sdb.sdbtest
#Arguments: --sdb monetdb-hash.ttl ./testing/manifest-sdb.ttl

11) Run the test suite – all tests should pass.

12) Next : Load some RDF and test performance !……

[1] https://issues.apache.org/jira/browse/JENA-134

Column stores, Hadoop, Semantic web

November 3, 2011 Comments off

Been trying to do some work on Jena, to get some column store support in there. This is all predicated on having a DBC driver to talk to the column store. Some have, some dont, but the ones that do have do seem to have minimal JDBC implementations. Either temp table support isn’t there, or things like batch support are lacking. Still, pursuing this, because the normalized schema (a simple star-ish schema) used by Jena (and Sesame iirc) seems to marry well with some of the optimisation claims the column stores make (retrieval, compressed storage, materialized views). For near read-only semantic knowledge bases, this might make a significant performance boost over row based RDBMS as semantic backends. And hadoop might come in useful here too at load stage, if RDF needs to be ETLd to some kind of loadable format, or to materialize sparql query results to column store accessible external storage. Might being the operative word I think, but there are interesting possibilties.

Categories: technology Tags: , , , ,

Analytics and the Semantic web

November 3, 2011 Comments off

There was a post recently on SmartDataCollective [1] that seemed to miss the point somewhat I thought. IMO, the semantic web on its own is not enough to make the web of things a reality, on the one hand because theres a huge extant body of non-semantic text on the web, and on the other the effort-reward factor for CMS and content authors is still to high – tagging with semantic structured vocabularies is still to hard. So, I am with google – text analytics and collective intelligence has a lot to offer the web of things, and if its used in combination to mine and produce a semantic lense over all that content then things really start to kick off. Watch this space…

[1] http://smartdatacollective.com/barryjogorman/41738/tackling-human-intelligence

Categories: technology Tags: , , ,

DERI (LATC) launch schema.rdfs.org

June 18, 2011 Comments off

Some of the DERI people (and others) involved in LATC have launched schema.rdfs.org to counter the lack of rdfs in schema.org – the Microsoft/Google/Yahoo attempt to kickstart some RDFa publishing so their search engines can try and improve result relevancy. Some of the items in schema.org are quite simple, but thats probably a good thing : a large term set or number of properties is going to look daunting to anyone interested or someone starting out for the first time – and indeed this is the reason cited that it is not RDF (its microdata). And while I agree with Michael Bergman that it is more than likely another step towards structured/linked/common/open data, adopters urgently need a combination of

  1. Tools (or better still no tools, just an unobtrusive natural way to author microdata or rdfa) and
  2. a Reason to do it – payback
  3. Support in search UIs to specify vocabulary items

I’d like a wordpress plugin for instance, but then I’d need to host an instance myself or find a hoster that allows plugins because wordpress.com doesnt allow it. I’d also like to think that if I placed some RDFa in my blog that it would get higher a ranking in Search results (it should) but this blog is pretty specialised anyway and its not commercially oriented so Im happy enough with keyword based results anyway.

So, I’m not going to be doing it too soon, and thats the problem really. Or is it ? This post isn’t data really, but it does have links and it does talk about concepts, people, technology problems. If I could mark them up with tags and attributes that define what I am talking about then it would mean that I could tell those search engines and crawlers what I am talking about rather than hoping they can work it out from the title, the links I have chosen, then feedback comments and so on. Then people looking for these particular topics could find or stumble upon this post more easily. So, while there is some data here, arguably I don’t see it that way, and even if I think there might be a good Reason to do it, it’s too hard without the Tools

So I wonder finally, if I was to mark up one of these people mentioned in this post with name,address, affiliation,organisation and so on, would the search engine UIs allow me to use this vocabulary directly – I want to find articles about DERI say, would the search drop down prompt me with itemprop="EducationalOrganization" – so that I’d then only get results that have been marked up with this microdata property and not with things that are about the Deri vineyard in wales, punto deri, courtney deri and so on ?

Sindice kinda does this, couldn’t the Goog do it too ??? Or indicate which results are microdata’d, or allow a keyword predicate (like site: say), or allow the results to be filtered (like Search Tools in the left column). The point for me is that schema.org is only half or less than half the story – the search engines need to Support the initiative by making it available at query time, and to allow their results to manipulated in terms of microdata/rdfs too. Then I might be more tempted to markup my posts in microdata,rdfs,microformat or whatever, and I might create some extensions to the schemas and contribute a bit more, and my post might get more traffic in the long tail, that traffic would be more valuable, my ad revenue might go up (if I had ads for myself !), and the ECB might drop their interest rates. Well, maybe not, but they’re not listening to anythine else, perhaps some structured data might persuade them. It is the future after all.

Whats the point : Semantic RESTful Web Services ?

March 9, 2011 4 comments

Well, I think its dawning on me, that what Roy Fielding talks about (rather abstractly) [1] is what Henry Story neatly summarises and provides examples of [2] – REST SOA, with connected semantics. I’m one of those who can be accused of implementing REST not in the Roy Fielding manner of the word, but in the anyting thats not WS* “meaning”. I’ve done request mapping, content negotiating, resource rendering in XML, Json (and a bunch of others), GET,PUT,POST,HEAD etc etc etc, but never all together, and never in the true Spirit of Roy. But when you add the semantic web, you can really see that theres something good going on here – “easy” and ubiquitous webservices.

Roy talks about representations, resources and connectedness, about agents or service consumers that deal with well-known media types and links, and nothing else – REST implies that a user agent is “thin”, understands basic-and-well-known types and protocols, and renders a look and feel and a behaviour that reacts to what it is fed. As he says it should work with the “follow your nose” principal (no need for WADL[3,4]).

For a browser this would mean that you point it an URL, it displays content suitably, that it receives and displays links with appropriate CRUD capabilities for it and and relations it is given.  For example, given a book resource, render it using the .book CSS class, and create links to add to shopping cart, get a contents list, add to a favourites list. For a chapter in the book, there may be link to print it, to relate it to a chapter in another similar book, to annotate it and send to a colleague. For a daemon or agent it might mean that it alters the time at which it performs an action against a resource, or what action it takes. The navigation and action controls aren’t determined by business or display logic, but by the resource and its relations – the agent consuming the resource knows it has to display or follow a link, the CSS may have display capabilities based on the resource type or context, the workflow steps will appear at the right time for the right user, under the right circumstances. Client logic is solely to deal with converting representations to appropriate media-types, and driving application state – using relations and verbs to make transitions with links.

But the thing that got me spinning, as I tried to understand the abstractedness, and as I looked into JAX-RS [5], and its various implementations (well, Spring* in particular TBH,which doesnt do JAX-RS in fact [6]) was that the connectedness and follow-your-nose principal seemed absent. Its all very well and cosy (and arguably easy) to create some platform code that maps URIs to classes and methods and HTTP verbs, and then to output XML or JSON or not (think JSP), or perhaps even Atom, OData, RDF, N3 or TTL but wheres the linked connectedness – the things we talk about and take for granted in Linked Open Semantic Data world ? And how does it know what links to create, how to generate them, and how they should be presented (if there’s a human involved) ?

Well, Henry blows that lightbulb for me when he illustrates from his foaf profile all the foaf:knows relations [2]. In a RESTful world where a service returns a foaf file and reads the foaf:knows elements it can decide what to do based on that predicate – it can deduce that the resource represented is a Person and can create the links it chooses using what it knows about foaf:knows and REST verbs – create/read/update/delete. It might allow addition of another foaf:knows with a PUT to the URI identifying the owner, an update to a mailing list so that all those foaf:knows objects are added, or automatically update a trust counter against a system resource because if Henry foaf:knows TBL in this context, then TBL must be “good for it” :-). In addition, it only knows that a URI represents that Person, and the URI could be a hypermedia link in the form of an URL, a ftp or webDav link, or some other protocol. Finally, this “knows” concept is really an upfront agreement about what representations are being used for the state of the application (it knows and XML schema, or an Ontology, or perhaps even looks them up on the fly), but navigating thru state is controlled by the interactions with the service (Http verbs) and the responses (status and agreed represenation in the body content) received.

At first sight those RESTful libraries don’t really need to know that much about the connectedness – they only need to map verbs and serve resources with those links embedded (RDF anyone? ) and using those well-known vocabularies, classes,relations and constraints – ie ontologies. But what about workflow : I post an object or resource, I get a response with the ID of that resource, and I need a link that tells me where to go for the next state transition ?

So, lo-and-behold, we have semantic linked data and REST superadditively combined, in a loosely coupled web (or “cloud”, if you like that keyword) of semantic links, intelligent user agents that understand those links or their context, web resolvable URIs, and value-added interlinked services – in effect a “Web Service Bus”. [7] !!

Now

  1. Point your People tool at the RESTful people+location web service and it “just works” to give you a social-network-mashup of connected people and interests (provenance, trust), and then
  2. switch over to your Energy consumption application and it also just works (based on what it has chosen to do and the well-known ontologies and resources it understands) – see how big your carbon footprint is when you meet TBL next week at Geneva if you fly,drive or take the train – and maybe you’ll be able to see who you can meet on the way and who else will be sitting beside you.

But your not out of the woods yet, doing semantic RESTfu web apps isnt a clear open space : your application still has to deal with authentication, input validation, long lived database transaction control, multithreading, performance, perhaps object relational mapping, but jax-rs/REST takes care of the object-message-mapping (the interface-to-implementation layer), your client or agent is thin but intelligent, and your middle tier contains your business logic.

Your application will need to honour the request-response state machine, perhaps checking availability using OPTIONS, or Etags.

You’ll need to decide how to transform from your programming model of choice – OO perhaps – to Resource. Some of the object to RDF mapping within libraries like Empire[15], JenaBean[16], Sommer [22]{defunct?), object-triple [17] may help. Perhaps this wont be an issue for you if you can foist the RESTful resource and linkage proposition onto an object model and remain in the object world – why waste processor and resource when you store data in RDF, convert to an Object on retrieval, process, convert to Xml-RDF or JSON on the way out, then parse and walk in a JSP before rendering as HTML ? As an OO programmer on the web you’re familiar with marshalling objects in and out of different serialization –  RDF/XML/JSON/HTML, but you do want and need to minimise those transitions. Perhapsfor “Big Data” we should stay in the Resource world : persist to a fast native RDF triplestore or HPC based system on a cluster of MapReduce or somesuch (CouchDB[20], Heart/HBase [21] ? perhaps BigData[18] or SHARD[19], AllegroGraph[23] ?), and talk to it with ProLog or some such – forget the Object paradigm and embrace the Linked, Open World Resources, and also do it with REST.

You also have to be clear that REST suits what you want to do (other architectures haven’t just been demoted to history) what your services are  -what you are interfacing with, what are your domain objects, what service operations are exposed when, what workflow do you need to encompass[13], and how granular you need to be – a shopping cart application will need to save items to a shopping list, rather than save the items themselves (or the cart resource probably), but it will also, behind the service, need to update a stock control or inventory – which isnt exposed to your end user.  So be clear about which service level CRUD operations you need to expose to your user or “agent”, and which if any domain objects you need to directly manipulate.

But in the end, hopefully, you’ve still followed your enterprise principles and patterns, but you’ve adopted a long lasting web-scale architecture, and if youve added the semantic vocabulary, you’ve got the basis for successful evolution, a network effect, adaptable clients and agents and a successful resolution to an important business case – thats why your doing this, isn’t it, not because its cool ?

Update : April 24 – read Otavios paper on RESTfulGrounding [25] but also read Alowisheq, Millard and Tiropanis EXPRESS RESTful services paper[26]. RESTfulGrounding does for REST and WADL what OWL-S does for WSDL – it gets Semantic descriptions into the syntactic descriptions that automated services might use to interact with a web service, and facilitates discovery, composition, monitoring and execution. EXPRESS takes a different approach and based on an existing RESTful web service allows you to create an OWL description that can also be RESTfully accessed to describe the services resources, relations and “parameters” (OWL DataTypeProprty and ObjectProperty). They describe an adaptation of Amazon S3 buckets and docs with EXPRESS and compare with SA-REST and OWL-S approaches.

I like EXPRESS more than RESTfulGrounding as the simplicity appeals : the way it in turn relies on REST to underpin the service description access and interaction, adheres to RESTful principles for message exchange – using TTL rather than XML – , follow-you-nose, and the fact that this in turn means I don’t have to learn much if I want to make use of it. It does need the use of a code generator for stubs and URIs and a manual step to define which methods apply to which URIs, and doesn’t do much for discovery and composition – but they acknowledge this and intend to work on it – and a real implementation with these tools needs to be made available so that people like me can try it out. Is there one ?

I need to understand more about WADL[27,28] (why is it needed in the first place ?) and how I might go about actually building a set of services that need to be described and then discovered and composed to provide some useful value, but EXPRESS fits nicely into web scale, lo-fi approaches that quickly gain traction and that might make use of a CPoA kind of approach for discovery and composition.

* You’ve got other choices :

  • Apache CXF – perhaps best if you come from the WS* camp or have a mixture [8]
  • GlassFish Jersey – seems to have good traction, with hooks into Spring et al [9]
  • RESTeasy – JBoss jax-rs implementation [10]
  • RESTlet – not sure about this, seems to have good support, taking a different approach apparently – eg RESTlet vs SERVlet, but I need more info to do it justice [11]
  • PLAY Framework – has good REST support I understand from others. [12]
  • Clerezza – Apache incubator project with RDF, jax-rs, scala and “renderlet” support. Looks interesting from a RDF PoV, but maybe not so interesting from an OOD PoV [14]

[1] http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
[2] http://blogs.sun.com/bblfish/entry/rest_apis_must_be_hypertext
[3] http://wadl.java.net/
[4] http://bitworking.org/news/193/Do-we-need-WADL
[5] http://jcp.org/en/jsr/detail?id=311
[6] http://grzegorzborkowski.blogspot.com/2009/03/test-drive-of-spring-30-m2-rest-support.html
[7] http://wisdomofganesh.blogspot.com/2010/06/wanted-esc-not-esb.html

[8] http://cxf.apache.org/

[9] http://jersey.java.net/

[10] http://www.jboss.org/resteasy

[11] http://www.restlet.org/

[12] http://www.playframework.org/documentation/1.1/routes

[13] http://www.infoq.com/articles/webber-rest-workflow

[14] http://incubator.apache.org/clerezza/

[15] https://github.com/clarkparsia/Empire

[16] http://code.google.com/p/jenabean/

[17] http://code.google.com/p/object-triple/

[18] http://www.systap.com/bigdata.htm

[19] http://www.dist-systems.bbn.com/people/krohloff/shard_overview.shtml

[20] http://couchdb.apache.org/

[21] http://wiki.apache.org/incubator/HeartProposal

[22] http://java.net/projects/sommer/

[23] http://www.franz.com/agraph/allegrograph/

[24] http://blog.cubrid.org/web-2-0/database-technology-for-large-scale-data/
[25] http://www.fullsemanticweb.com/blog/ontologies/restfulgrounding/
[26] http://ebookbrowse.com/express-expressing-restful-semantic-services-using-domain-ontologies-pdf-d12806537
[27] http://java.net/projects/wadl/
[28] http://bitworking.org/news/193/Do-we-need-WADL

Linked Data, OData, GData, DataRSS comparison matrix

February 17, 2011 4 comments

(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

Categories: linked Tags: , , , , , , , ,