Re: PROV-ISSUE-104 (time-class): How to relate start/end time to PE, use, generation, etc [Formal Model]

> On Thu, Oct 13, 2011 at 17:49, Paul Groth <p.t.groth@vu.nl> wrote:
>
>> I was wondering if examples of time could be put in the PROV-O Crime
>> Example. Like they are in PROV-DM.
>>
>> It would be cool to see how we can put times against:
>>
>> used,
>> wasGeneratedBy
>> Provenance Execution.

I threw together one suggestion on how to do it using a few new properties:

http://dvcs.w3.org/hg/prov/file/tip/ontology/components/Time.ttl

declares:

  prov:startedAt
  prov:endedAt
  prov:assumedRoleAt
  prov:wasGeneratedAt


For example, from
http://dvcs.w3.org/hg/prov/file/285b39f7ea5f/ontology/components/Time/example-1.ttl

# start/end
:pe1 a prov:ProcessExecution ;
    prov:startedAt :tA ;
    prov:endedAt :tB .
:tA a prov:Time .
:tB a prov:Time .


# generation time
:e1 a prov:Entity ;
    prov:wasGeneratedBy :pe1 ;
    prov:wasGeneratedAt :tC .
:tC a prov:Time .


# used time
:pe2 a prov:ProcessExecution ;
    prov:used [
        a prov:EntityInRole;
        prov:assumedBy :e1;
        prov:assumedRoleAt :tD
    ] .
:tD a prov:Time .


# controlled time
:a1 a prov:Agent .
:tE a prov:Time .
:pe2 prov:wasControlledBy [
        a prov:EntityInRole, prov:Agent;
        prov:assumedBy :a1;
        prov:assumedRoleAt :tE;
    ] .


You can from this of course also specify generation using EntityInRole
and assumedRoleAt - but as an entity can only be generated once
(right?) we might as well just say prov:wasGeneratedAt.



Note to self:
Allow intervals for role/use/control? - (prov:assumedRoleStart and
prov:assumedRoleEnd)?
Sounds like special cases of characterisation intervals..
prov:startedAt and prov:endedAt could also be used with prov:Entity ?



I looked at the crime file example, and did:

http://dvcs.w3.org/hg/prov/file/285b39f7ea5f/ontology/components/Time/example-2-crimefile.ttl

.. but it does not really say much about time at all:


#processExecution(pe1,add-crime-in-london,t+1,,[])
:pe1 a prov:ProcessExecution, cf:FileAppending ;
    prov:startedAt :t1 .

#processExecution(pe2,email,t+2,,[])
:pe2 a prov:ProcessExecution, cf:Emailing ;
    prov:startedAt :t2 .



So here's a practical example of how to do an extension, for instance
using OWL Time:

http://dvcs.w3.org/hg/prov/file/285b39f7ea5f/ontology/components/Time/example-3-extension.ttl

Including the simplest case without using the subclasses:

# Lazy straight forward version - no declared subclasses
:pe0 a :ProcessExecution ;
    prov:startedAt [
        # a prov:Time, time:Instant ;
        time:inXSDDateTime "2011-12-24T14:24:05Z"
    ] ;
    prov:endedAt [
        time:inXSDDateTime "2011-12-25T01:41:54Z"
    ] .




-- 
Stian Soiland-Reyes, myGrid team
School of Computer Science
The University of Manchester

Received on Thursday, 13 October 2011 23:31:09 UTC