- From: Martynas Jusevičius <martynas@atomgraph.com>
- Date: Fri, 17 Nov 2017 01:26:53 +0000
- To: Florian Kleedorfer <florian.kleedorfer@austria.fm>
- Cc: semantic-web@w3.org
- Message-ID: <CAE35VmxHeh7GghUbm6aAABK9WyRWA3df4k=uwNGwjK4jrXVGLA@mail.gmail.com>
Maybe you should post this to the SHACL list (as well)? On Thu, 16 Nov 2017 at 18.54, Florian Kleedorfer < florian.kleedorfer@austria.fm> wrote: > Hi, > > As you may recall, I've asked this list about messaging/negotiating > using linked data[1], and it led me and my colleagues to a concept of > RDF-based agreements[2]. (Thanks again for your input!) > > Now it's time for us to define how the negotiating parties come up with > the data (set of rdf triples) that they agree on. > > One Idea we have is that both particpants (P1,P2) specify 'goals', each > consisting of a SHACL shapes graph and a data graph. Two goals can be > tested for compatibility by merging the two data graphs and then testing > if the resulting graph is valid given the shapes defined by both goals. > The problem we face with this approach is merging the two data graphs. > Consider the example in this gist: > > https://gist.github.com/fkleedorfer/81b32e3235105a4a4743e9fa76ba9332 > > In that example, we would want to merge these two graphs: > > ex1:p1g-data { > ex1:ride1 a taxi:Ride . > ex1:ride1 taxi:hasDriver ex1:p1 . > ex1:ride1 taxi:hasPickupLocation ex1:pickup1; > } > > and > > ex2:p2g-data { > ex2:myRide a taxi:Ride. > ex2:myRide taxi:hasClient ex2:p2 . > ex2:myRide taxi:hasPickupLocation ex2:myPickupLocation . > ex2:myPickupLocation a s:GeoCoordinates ; > s:latitude "48.213814" ; > s:longitude "16.340870" . > } > > We want that merge to happen in such a way that the shapes in > ex1:p1g-shapes and ex2:p2g-shapes can be evaluated, which will require > to merge some of the nodes. (In the example, we'll find out that a > taxi:hasPickupTime property is missing. One of the participants is then > to add that property, and the whole structure becomes valid according to > both goals' shapes.) > > The question is how exactly to achieve that merge. Intuitively, the > result in this case should be > > :mergedNode1 a taxi:Ride . > :mergedNode1 taxi:hasDriver ex1:p1 . # note: p1 links her own > identifier to the structure > :mergedNode1 taxi:hasPickupLocation :mergedNode2; > :mergedNode1 a taxi:Ride. > :mergedNode1 taxi:hasClient ex2:p2 . > :mergedNode1 taxi:hasPickupLocation :mergedNode2 . > :mergedNode2 a s:GeoCoordinates ; > s:latitude "48.213814" ; > s:longitude "16.340870" . > > and after removal of duplicate triples > > :mergedNode1 a taxi:Ride . > :mergedNode1 taxi:hasDriver ex1:p1 . > :mergedNode1 taxi:hasClient ex2:p2 . > :mergedNode1 taxi:hasPickupLocation :mergedNode2 . > :mergedNode2 a s:GeoCoordinates ; > s:latitude "48.213814" ; > s:longitude "16.340870" . > > (I currently don't care about the URIs of the mergedNodes - just > something one can mint when doing the merge) > > > Do you have any hints on how to perform such a merge reliably, also with > more complex structures? > > Thank you very much in advance! > > Best regards, > Florian > > > Links: > 1. Negotiations discussion thread: > https://lists.w3.org/Archives/Public/semantic-web/2017Jul/0004.html > 2. Agreements paper: http://ceur-ws.org/Vol-1934/contribution-07.pdf > >
Received on Friday, 17 November 2017 01:27:28 UTC