- From: Nathan <nathan@webr3.org>
- Date: Sat, 21 Nov 2009 00:05:56 +0000
- CC: Georgi Kobilarov <georgi.kobilarov@gmx.de>, public-lod@w3.org
Nathan wrote: > 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. > sorry it's late, and I forgot to write half the email :-( as for changeset management; I thought changesets could be published through http and pulled using If-Modified-Since header. 1: client sends http request to changeset endpoint with If-Modified-Since header of last time it checked the changeset 2: if no changes have been made to graph then "304 not modified" response sent 3: if changes have been made since date specified in header then server returns all changes since that date using http would allow for content negotiation etc so returned as extended n3, rdf, etc. actually.. possibly getting out of scope now - if we can get the requirements & concept correct, then implementations can be figured out later; certainly plenty of scope though. regards
Received on Saturday, 21 November 2009 00:07:06 UTC