- From: Stian Soiland-Reyes <soiland-reyes@cs.manchester.ac.uk>
- Date: Tue, 25 Oct 2011 11:07:28 +0100
- To: Luc Moreau <l.moreau@ecs.soton.ac.uk>
- Cc: public-prov-wg@w3.org
On Tue, Oct 25, 2011 at 10:21, Luc Moreau <l.moreau@ecs.soton.ac.uk> wrote: > Have you actually tried to write it in OWL (ie. ContextualisedEntity which > would be used for both > use and generation)? My experience with OPMO is that when > defining transitive closures (like wasDependentOn), some unexpected > inference > were possible. But maybe, it will work here. :e1 a prov:Entity . :e1X a prov:EntityInRole ; prov:assumedBy :e1 ; prov:assumedRole :X ; prov:assumedAt :t1 ; prov:wasGeneratedBy :pe1 . :pe2 a prov:ProcessExecution ; prov:used :e1X . but now you can't tell if prov:assumedAt defines the generation time, the use time, or both. So I think we should do as Khalid says and add the constraints so it is not valid to reuse an EntityInRole in several use/generation/control relationships. :e1 a prov:Entity . :e1XGeneration a prov:EntityInRole ; prov:assumedBy :e1 ; prov:assumedRole :X ; prov:assumedAt :t1 ; prov:wasGeneratedBy :pe1 . :e1XUse a prov:EntityInRole ; prov:assumedBy :e1 ; prov:assumedRole :X ; prov:assumedAt :t2 . :pe2 a prov:ProcessExecution ; prov:used :e1X2 . The last one can be simplified with a blank node: :pe2 a prov:ProcessExecution ; prov:used [ prov:assumedBy :e1 ; prov:assumedRole :X ; prov:assumedAt :t2 . ] . Perhaps an additional constraint is that if :e2 prov:assumedBy :e1 then :e2 prov:wasGeneratedBy :pe <=> :e1 prov:wasGeneratedBy :pe (and implicitly any such EntityInRole are the same, merging roles and qualifiers) Example of the same entity playing two usage roles in same PE: :originalFile a prov:Entity . :moving a prov:ProcessExecution, :FileMoving ; prov:used [ a prov:EntityInRole ; prov:assumedBy :originalFile ; prov:assumedRole :ReadFile ; prov:assumedAt :t1 ; # custom qualifiers :readBytes 1234 ; time:hasDurationDescription [ time:seconds 46 ] ], [ a prov:EntityInRole ; prov:assumedBy :originalFile ; prov:assumedRole :DeletedFile ; prov:assumedAt :t2 ; # qualifiers :freedSpace 2048 ] Or in two different PEs (in a different account) :originalFile a prov:Entity . :copying a prov:ProcessExecution, :FileCopying ; prov:used [ a prov:EntityInRole ; prov:assumedBy :originalFile ; prov:assumedRole :ReadFile ; prov:assumedAt :t1 ; # custom qualifiers :readBytes 1234 ; time:hasDurationDescription [ time:seconds 46 ] ] . :deletion a prov:ProcessExecution, :FileDeleting ; prov:used [ a prov:EntityInRole ; prov:assumedBy :originalFile ; prov:assumedRole :DeletedFile ; prov:assumedAt :t2 ; # qualifiers :freedSpace 2048 ] Same entity both used and controlled by same PE in different roles: :me a prov:Entity, prov:Agent ; prov:wasComplementOf <http://www.soiland-reyes.com/stian/#me> . :makingSelfPortrait a prov:ProcessExecution, :Photography ; prov:used [ a prov:EntityInRole ; prov:assumedBy :me ; prov:assumedRole :Subject ; prov:assumedAt :t2 ] ; prov:wasControlledBy [ a prov:EntityInRole ; prov:assumedBy :me ; prov:assumedRole :Photographer prov:assumedAt :t1 ] :selfPortrait a prov:Entity ; prov:wasDerivedFrom :me ; prov:wasGeneratedBy :makingSelfPortrait . :t1 time:before :t2 . Note the times - I assume the role of photographer agent (e.g. picking up camera) before being the subject (focused in the view finder). I'll put these examples into components/EntityInRole/ in Mercurial. It was suggested in the telcon yesterday to add to the HTML an example with two roles assumed by same entity to clarify that it can assume many roles in different contexts. -- Stian Soiland-Reyes, myGrid team School of Computer Science The University of Manchester
Received on Tuesday, 25 October 2011 10:08:17 UTC