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

Hi Stian,
Sorry for getting to this late.

As we discussed during our call today, I have added a generic object
property "hasTemporalValue" linking PE and Entity to the OWL time ontology
class "TemporalEntity" (may need to be renamed) replacing our prov:Time
class.

The specific properties such as wasGeneratedAt, wasStartedAt etc. can be
defined to be sub-properties of "hasTemporalValue". We can defer adding
these specific subproperties till we get more feedback from the WG?

Thanks.

Best,
Satya

On Fri, Oct 14, 2011 at 5:14 AM, Stian Soiland-Reyes <
soiland-reyes@cs.manchester.ac.uk> wrote:

> The DM constraint generation-unicy (or so) says that if in a single account
> asserts:
>
> wasGeneratedBy(e, pe1, q1)
> wasGeneratedBy(e, p2, q2)
>
> then:
> p1==p2 and q1==q2
>
> I assume it follows that also the generation times would equal, but that
> should probably be added to the constraint. Therefore a single functional
> prov:wasGeneratedAt should be OK.
>
> Now it is open for discussion if this constrain interferes with
> subprocesses where an entity can be seen as "generated two places at once",
> or if that should be solved by two (potentially roled) entities or two
> accounts.
>
> You can do the same EntityInRole construct for prov:wasGeneratedBy.
> Syntactically each of these are new entities, can all have prov:assumedBy
> :e1 but  different prov:assumedRoles, prov:wasGeneratedAt (and in theory
> prov:wasGeneratedBy).
>
> By the constraint they should then be interpreted as the same generation
> process and qualifiers (including role). You can think of it as an inference
> rule when an entity in role states its generation:
>
> x prov:assumedBy e1
>   prov:wasGeneratedBy :p1
>   prov:wasGeneratesAt :t1
> -->
> x prov:wasComplementOf e1
> e1 prov:wasGeneratesBy :p1
>   prov:wasGeneratesAt :t1
>
> ie they overlap, but have common start time. Again stating entity start/end
> time (characterisation unrerval) would make this easier.
>
> At the same time I feel that this pushes EntityInRole to its limits. That's
> good, because we need to see if it is up to the job.
>
> Tim, Satya, any comments?
> On Oct 14, 2011 4:50 AM, "Paul Groth" <p.t.groth@vu.nl> wrote:
>
>> This is a good start:
>>
>> But how is for example wasGeneratedAt associated with a particular process
>> execution generated pair. Or do we assume that two such edges shouldn't
>> occur?
>>
>> I guess this done through the blank node in the used example is that
>> correct?
>>
>> Thanks for this
>> Paul
>>
>> On Oct 14, 2011, at 1:30, Stian Soiland-Reyes <
>> soiland-reyes@cs.manchester.ac.uk> wrote:
>>
>> >> 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 Tuesday, 18 October 2011 01:33:44 UTC