Re: Prov-o call on Monday 12:00noon US ET

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