- From: Luc Moreau <l.moreau@ecs.soton.ac.uk>
- Date: Mon, 04 Jun 2012 10:16:39 +0100
- To: Luc Moreau <L.Moreau@ecs.soton.ac.uk>, W3C provenance WG <public-prov-wg@w3.org>
- Message-ID: <EMEW3|daf8352a11a3f67adfa31c532e4c6186o53AHx08l.moreau|ecs.soton.ac.uk|4FCC7CF7>
Hi all, During this diamond jubilee WE, I had the opportunity to think about Tim and Simon's long emails. I agree with them that we have concepts of alternate and specialisation, and we want to reuse them. I also came to the conclusion that behind the hasProvenanceIn relation, what I really wanted was a form of alternate. But not what Tim or Simon are suggesting. The PROV data model has a shortcoming: the inability to identify something in some context. That's what I am trying to address here. Coming back to my rating example, consider the producers of bundles ex:run1 and ex:run2 had written them as follows. bundle ex:run1 activity(ex:a1, 2011-11-16T16:00:00,2011-11-16T17:0:00) //duration: 1hour wasAssociatedWith(ex:a1,ex:Bob1,[prov:role="controller"]) specialisation(ex:Bob1,ex: Bob) //**** endBundle bundle ex:run2 activity(ex:a2, 2011-11-17T10:00:00,2011-11-17T17:0:00) //duration: 7hours wasAssociatedWith(ex:a2,ex:Bob2,[prov:role="controller"]) specialisation(ex:Bob2,ex: Bob) //**** endBundle By identifying ex:Bob1 and ex:Bob2, it then becomes easy to write their rating. bundle tool:analysis01 agent(tool:Bob1, [perf:rating="good"]) alternate(tool:Bob1, ex:Bob1) agent(tool:Bob2, [perf:rating="bad"]) alternate(tool:Bob2, ex:Bob2) endBundle But my example was not like that, ex:Bob was used in run1 and run2 bundle ex:run1 activity(ex:a1, 2011-11-16T16:00:00,2011-11-16T17:0:00) //duration: 1hour wasAssociatedWith(ex:a1,ex:Bob,[prov:role="controller"]) endBundle bundle ex:run2 activity(ex:a2, 2011-11-17T10:00:00,2011-11-17T17:0:00) //duration: 7hours wasAssociatedWith(ex:a2,ex:Bob,[prov:role="controller"]) endBundle What we need is a mechanism to be able to identify things in some context: ex:bob in run1, as if the expressions (****) had been asserted in ex:run1. bundle tool:analysis01 agent(tool:Bob1, [perf:rating="good"]) alternate(tool:Bob1, ex:Bob,ex:run1) agent(tool:Bob2, [perf:rating="bad"]) alternate(tool:Bob2, ex:Bob,ex:run2) endBundle The interpretation of alternate(tool:Bob2, ex:Bob,ex:run2) is that tool:Bob2 is the entity that share aspects of ex:bob as described by ex:run2. *Conceptually*, this could be done by substituting ex:Bob for tool:Bob2 in ex:run2. I appreciate that what I am describing here is not too distant from http://www.w3.org/TR/2011/WD-prov-dm-20111215/#record-complement-of, which had optional account, and was not received with enthusiasm, to say the least. Coincidentally, Paul shared this paper http://ceur-ws.org/Vol-614/owled2010_submission_29.pdf which introduces rules of the kind /X counts as Y in context C/ which bears some resemblance with what I am trying to argue for. So, my proposal is; - drop hasProvenanceIn - drop isTopicIn - allow for the ternary form of alternate Tim and Simon approach by using two binary relations do not offer the same level of expressivity. The also have a technological bias, as well: they require querying/reasoning facility. Therefore, their suggestion is not suitable for a data model supposed to be technology neutral. Luc On 31/05/2012 22:54, Luc Moreau wrote: > All, > > To try and converge towards a solution, I am > circulating an example using a ternary hasProvenanceIn. > I would like to understand if and how we can make it work with > a simpler relation. > > > Two bundles ex:run1 and ex:run2 describe bob's role as a controller > of two activities. Same bob, two different bundles. > > bundle ex:run1 > activity(ex:a1, 2011-11-16T16:00:00,2011-11-16T17:0:00) > //duration: 1hour > wasAssociatedWith(ex:a1,ex:Bob,[prov:role="controller"]) > endBundle > > bundle ex:run2 > activity(ex:a2, 2011-11-17T10:00:00,2011-11-17T17:0:00) > //duration: 7hours > wasAssociatedWith(ex:a2,ex:Bob,[prov:role="controller"]) > endBundle > > > A performance analysis tool rates the performance of agents (this > could be used > to dispatch further work to performant agents, or congratulate them, > etc). > > > bundle tool:analysis01 > > agent(tool:Bob1, [perf:rating="good"]) > hasProvenanceIn(tool:Bob1, ex:run1, ex:Bob) // Bob performance > in ex:run1 is good > > agent(tool:Bob2, [perf:rating="bad"]) > hasProvenanceIn(tool:Bob2, ex:run2, ex:Bob) // Bob performance > in ex:run2 is bad > > endBundle > > The performance analysis tool has to rate two involvements of ex:Bob > in two separate activities. > Two specialized version of ex:Bob are defined: tool:bob1 and > tool:bob2, with rating good and > bad respectively. > > tool:Bob1 is linked to ex:Bob in run1, and tool:Bob2 is linked to > ex:Bob in run2, with the following > > hasProvenanceIn(tool:Bob1, ex:run1, ex:Bob) > hasProvenanceIn(tool:Bob2, ex:run2, ex:Bob) > > Nothing is expressed about ex:Bob in bundle tool:analysis01 (except > that this is an alias > for tool:Bob1 and tool:Bob2). > > It is suggested that the ternary relation could be replaced by > isTopicIn(tool:Bob1, ex:run1) > and > specialization(tool:Bob1, ex:Bob). > > I don't understand the point of > isTopicIn(tool:Bob1, ex:run1) > since tool:Bob1 is not a topic in ex:run1. > > Also, we now seem to have made ex:Bob a topic of tool:analysis01, because > the following expression. > specialization(tool:Bob1, ex:Bob). > > From tool:analysis01, where do I find provenance about ex:Bob? > It look like this has become a dead end in this graph. > > Do I need to introduce: > isTopicIn(ex:Bob, ex:run1) > isTopicIn(ex:Bob, ex:run2)? > > > So now we would have: > isTopicIn(tool:Bob1, ex:run1) > specialization(tool:Bob1, ex:Bob) > isTopicIn(tool:Bob2, ex:run2) > specialization(tool:Bob2, ex:Bob) > isTopicIn(ex:Bob, ex:run1) > isTopicIn(ex:Bob, ex:run2) > > Which means that: > > specialization(tool:Bob1, ex:Bob) > isTopicIn(ex:Bob, ex:run2) > > ... would lead us to believe that good rating is due to slow performance. > > Can the proposer of the separate binary relations explain how this > example can work? > > Thanks, > Luc
Received on Monday, 4 June 2012 09:20:46 UTC