W3C home > Mailing lists > Public > public-lod@w3.org > October 2010

Re: Reification alternative

From: Mirko <idonthaveenoughinformation@googlemail.com>
Date: Thu, 14 Oct 2010 15:08:34 +0200
Message-ID: <AANLkTi=Y575FLW6gCfivjYZ5s4jNXmzD5ifouEORE5gF@mail.gmail.com>
To: Leigh Dodds <leigh.dodds@talis.com>
Cc: public-lod@w3.org, Virtuoso Users <virtuoso-users@lists.sourceforge.net>
Thank you all for your helpful comments. First, let me clarify my intention.
My question aimed not so much at the (internal) storage of the data, but
really on how to publish them as Linked Data, so that they are useful for
third parties (= easy to query and consume).

I use Virtuoso and want to publish data that are currently stored in SQL
tables as RDF Views over a SPARQL endpoint.

As I read here [1, 2], the problem with publishing reificated data is
two-fold: 1) they are cumbersome to query. 2) semantics are imprecise for
this use case, because what is described with reification is the rdf triple.
In my case, I want to describe the information, i.e. the "interest" of a
user for an item.

So, four solutions for my problem came up here. As I understand three
solutions - Quads, Named graphs, and publishing the data as several files -
do not really solve the problems. They are more for internal storage then
for publishing.

The suggestions of Bob and Leigh seem to be a better solution, because the
semantics are clear. I think the querying issue remains.

The trick is to express n-ary relations by defining a class for what was a
property before. In my example, instead of using the property
"foaf:interest" , I use a class like "e-foaf:interest" [3] or
"cco:CognitiveCharacteristic" [4]:

@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
@prefix cco:   <http://purl.org/ontology/cco/core#> .
@prefix dcterms:  <http://purl.org/dc/terms/> .

ex:AStmt
      a cco:CognitiveCharacteristic ;
      cco:agent ex:AUser ;
      cco:topic ex:AItem ;
      cco:characteristic cco:interest ;
      dcterms:modified "2010-10-13^^xsd:date ;
      dcterms:publisher ex:AService .

ex:AUser a foaf:user.
ex:AItem a foaf:topic.

This is definitely a viable solution. However, the drawback of this solution
is that I need new vocabulary. I define classes for things that are actually
already defined by properties, which seems a bit odd to me. The reason why I
tried reification was that I wanted to re-use existing vocabulary, FOAF in
my case, as it is a recommended best-practice for LD publishing [1].


Regards,
Mirko

[1] http://www4.wiwiss.fu-berlin.de/bizer/pub/LinkedDataTutorial/
[2] http://www.w3.org/TR/swbp-n-aryRelations/
[3] http://wiki.larkc.eu/e-foaf:interest
[4] http://smiy.sourceforge.net/cco/spec/cognitivecharacteristics.html
Received on Thursday, 14 October 2010 13:09:08 UTC

This archive was generated by hypermail 2.3.1 : Sunday, 31 March 2013 14:24:29 UTC