W3C home > Mailing lists > Public > public-lod@w3.org > November 2009

Re: RDF Update Feeds

From: Nathan <nathan@webr3.org>
Date: Fri, 20 Nov 2009 23:46:56 +0000
Message-ID: <4B072A70.9040206@webr3.org>
To: Georgi Kobilarov <georgi.kobilarov@gmx.de>
CC: public-lod@w3.org
Georgi Kobilarov wrote:
> Hi all,
> 
> I'd like to start a discussion about a topic that I think is getting
> increasingly important: RDF update feeds.
> 
> The linked data project is starting to move away from releases of large data
> dumps towards incremental updates. But how can services consuming rdf data
> from linked data sources get notified about changes? Is anyone aware of
> activities to standardize such rdf update feeds, or at least aware of
> projects already providing any kind of update feed at all? And related to
> that: How do we deal with RDF diffs?

After thinking about this (perhaps a bit naive myself as still new) I
can't see how this is too complex, infact imho all the existing ways of
handling updates for rss, atom etc seem a bit over kill to me.

an update (or changeset as I'm thinking about it) is essentially nothing
more than "this triple has been removed" and "this one has been added" -
on a triple level we don't have a "update", it's very much the
equivalent of "replace"; thus an update for a single triple is a case of
remove old triple, insert new one.

and thus, without thinking about technologies, all I can see we are left
with is as simple as:
- s1 p1 o1
+ s2 p2 o2

i guess even something like n3 could be extended to accommodate this:

given the following example

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix swp: <http://semanticweb.org/id/Property-3A> .
@prefix swc: <http://semanticweb.org/id/Category-3A> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix swivt: <http://semantic-mediawiki.org/swivt/1.0#> .
@prefix sw: <http://semanticweb.org/id/> .

sw:ESWC2010
    swp:Title "7th Extended Semantic Web
Conference"^^<http://www.w3.org/2001/XMLSchema#string> ;
    rdfs:label "ESWC2010" ;
    a swc:Conference ;
    swp:Event_in_series wiki:ESWC ;
    foaf:homepage <http://www.eswc2010.org> ;
    swp:Has_location_city sw:Heraklion ;
    swp:Has_location_country sw:Greece ;
    swp:Start_date
"2010-05-30T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
    swp:End_date
"2010-06-03T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
    swp:Abstract_deadline
"2009-12-15T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
    swp:Paper_deadline
"2009-12-22T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
    swp:Notification
"2010-02-24T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
    swp:Camera_ready_due
"2010-03-10T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
    rdfs:isDefinedBy
<http://semanticweb.org/wiki/Special:ExportRDF/ESWC2010> ;
    swivt:page <http://semanticweb.org/wiki/ESWC2010> .

one could easily add in an operator prefix to signify inserts and
deletes; in the following example we change the dates of the conference

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix swp: <http://semanticweb.org/id/Property-3A> .
@prefix sw: <http://semanticweb.org/id/> .

- sw:ESWC2010
    swp:Start_date
"2010-05-30T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
    swp:End_date
"2010-06-03T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
+ sw:ESWC2010
    swp:Start_date
"2010-06-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
    swp:End_date
"2010-06-04T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .


once you've got the notation or concept down then everything else will
fall in to place; we can create update streams, or release change sets
on X interval, notify by ping, or poll or whatever.

I dare say you could even handle the same thing in rdf itself by having
graph iri on left, making up a quick ontology with say rdfu:add and
rdfu:delete, storing a triple as an xml literal on the right

so: graph_iri rdfu:add rdfpacket .

http://domain.org/mygraph rdfu:add """<rdf:RDF
xmlns:log="http://www.w3.org/2000/10/swap/log#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:sw="http://semanticweb.org/id/"
    xmlns:swp="http://semanticweb.org/id/Property-3A">

    <rdf:Description rdf:about="http://semanticweb.org/id/ESWC2010">
        <sw:Property-3AEnd_date
rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2010-06-03T00:00:00</sw:Property-3AEnd_date>
        <sw:Property-3AStart_date
rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2010-05-30T00:00:00</sw:Property-3AStart_date>
    </rdf:Description>
</rdf:RDF>"""^^rdf:XMLLiteral .


as for implementing, if X server were to build up a changeset in this
and release it daily/hourly/incrementally ; and server X could also
consume and handle these change sets, then we'd be about done as far as
i can see?

reminder, i am very new to this so if it's all way off - please disregard.

regards,

nathan
Received on Friday, 20 November 2009 23:48:14 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:20:54 UTC