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

Re: Reification alternative

From: Aldo Bucchi <aldo.bucchi@gmail.com>
Date: Wed, 13 Oct 2010 12:57:43 -0300
Message-ID: <AANLkTim4-TZHX0WPbFGXbio+gX4Asd39FGY3fmu4p+i2@mail.gmail.com>
To: Mirko <idonthaveenoughinformation@googlemail.com>
Cc: public-lod@w3.org, Virtuoso Users <virtuoso-users@lists.sourceforge.net>
Hi Mirko,

Here's a tip that is a bit software bound but it may prove useful to
keep it in mind.

Virtuoso's Quad Store is implemented atop an RDF_QUAD table with 4
columns (g, s, p o). This is very straightforward. It may even seem
naive at first glance. ( a table!!? ).

Now, the great part is that the architecture is very open. You can
actually modify the table via SQL statements directly: insert, delete,
update, etc. You can even add columns and triggers to it.

Some ideas:
* Keep track of n-ary relations in the same table by using accessory
columns ( time, author, etc ).
* Add a trigger and log each add/delete to a separate table where you
also store more data
* When consuming this data, you can use SQL or you can run a SPARQL
construct based on a SQL query, so as to "triplity" the n-tuple as you

The bottom suggestion here is: Take a look at what's possible when you
escape "SPARQL" only and start working in a hybrid environment ( SQL +
Also note that the "self-contained" nature of RDF assertions ( facts,
statements ) makes it possible to do all sorts of tricks by taking
them into 3+ tuple structures.

My coolest experiment so far is a time machine. I log adds and deletes
and can recreate the state of the system ( Quad Store ) up to any
point in time.

Imagine a Queue management system where you can "replay" the state of
the system, for example.


On Wed, Oct 13, 2010 at 10:02 AM, Mirko
<idonthaveenoughinformation@googlemail.com> wrote:
> Hi all,
> I try to understand alternatives to reification for Linked Data publishing,
> since reification is discouraged. For example, how could I express the
> following without reification:
> @prefix dc: <http://purl.org/dc/elements/1.1/>.
> @prefix foaf: <http://xmlns.com/foaf/0.1/>.
> <http://ex.org/stmt>
>   rdfs:label "Statement that describes user interest in a document"@de;
>   rdf:subject <http://ex.org/User>;
>   rdf:predicate foaf:interest;
>   rdf:object <http://ex.org/Item>;
>   dc:publisher <http://ex.org/Service>;
>   dc:created "2010-10-13"^^xsd:date;
>   dc:license <http://ex.org/License>.
> <http://ex.org/User> rdf:type foaf:Agent.
> <http://ex.org/Item> rdf:type foaf:Document.
> Thanks,
> Mirko

Aldo Bucchi
Received on Wednesday, 13 October 2010 15:58:38 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:16:09 UTC