W3C PROV

 

Luc Moreau

Co-chair of W3C Provenance Working Group

 

Warning: everything in this presentation is a DRAFT.

 

Thanks to Paul Groth, Tim Lebo, Paolo Missier, James Cheney, and the entire W3C Provenance Working Group

http://dvcs.w3.org/hg/prov/raw-file/default/presentations/iswc-2012/prov-dm/overview/index2.html (latest)

Talk Outline

A Definition of Provenance

Layered Model

layered model

Layered Model

layered model

Layered Model

layered model

Layered Model

layered model

Layered Model

layered model

Normative/Non Normative Documents

layered model

Recommendation (Blue), Note (Orange), Non WG Material (Green)

PROV Data Model Core

PROV-DM overview

PROV extended model: n-ary relations, subtypes and subrelations, further relations.

PROV Data Model Components

PROV-DM components

Relations at a Glance

Relations at a Glance (Secondary Elements)

PROV-DM Types and Relations

Component 1: Entities and Activities

PROV-DM overview

Entity

Aspect to be understood informally as: A particular part or feature of something

Activity

some note here

Start

some note here

Component 2: Derivations

Derivations

Component 3: Agents and Responsibility

Agents-Responsibility

Component 4: Bundles

Bundles

Component 5: Alternates

Alternates

Component 6: Collections

collections

The PROV Family: The PROV Notation

layered model

PROV-N: The PROV Notation

Example in PROV-N (sample from primer)

document
    prefix prov <http://www.w3.org/ns/prov#>

    entity(ex:article,[dcterms:title = "Crime rises in cities" %% xsd:string])

    activity(ex:correct,2012-03-31T09:21:00.000+01:00,2012-04-01T15:21:00.000+01:00)

    used(ex:compose,ex:dataSet1,-)

    wasGeneratedBy(ex:chart1,ex:compile,2012-03-02T10:30:00.000Z)

    agent(ex:derek,[prov:type="prov:Person" %% xsd:string, foaf:givenName = "Derek" %% xsd:string, 
                    foaf:mbox = "<mailto:derek@example.org>" %% xsd:string])

    wasAssociatedWith(ex:illustrate,ex:derek,-)

    actedOnBehalfOf(ex:derek,ex:chartgen,ex:compose)

    wasDerivedFrom(ex:dataSet2, ex:dataSet1,[prov:type='prov:Revision'])

    specializationOf(ex:articleV2,ex:article)

    alternateOf(ex:articleV2,ex:articleV1)
endDocument

Example in PROV-XML (sample from primer)

<prov:document xmlns:prov="http://www.w3.org/ns/prov#" xmlns:ns2="http://openprovenance.org/collection#" xmlns:ns3="http://openprovenance.org/validation#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:ex="http://example/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <prov:entity prov:id="ex:article">
    <dcterms:title xsi:type="xsd:string">Crime rises in cities</dcterms:title>
  </prov:entity>

  <prov:activity prov:id="ex:correct">
    <prov:startTime>2012-03-31T09:21:00.000+01:00</prov:startTime>
    <prov:endTime>2012-04-01T15:21:00.000+01:00</prov:endTime>
  </prov:activity>

  <prov:used>
    <prov:activity prov:ref="ex:compose"/>
    <prov:entity prov:ref="ex:dataSet1"/>
  </prov:used>

  <prov:wasGeneratedBy>
    <prov:time>2012-03-02T10:30:00.000Z</prov:time>
    <prov:entity prov:ref="ex:chart1"/>
    <prov:activity prov:ref="ex:compile"/>
  </prov:wasGeneratedBy>

  <prov:agent prov:id="ex:derek">
    <prov:type xsi:type="xsd:string">prov:Person</prov:type>
    <foaf:givenName xsi:type="xsd:string">Derek</foaf:givenName>
    <foaf:mbox xsi:type="xsd:string"><mailto:derek@example.org></foaf:mbox>
  </prov:agent>

  <prov:wasAssociatedWith>
    <prov:activity prov:ref="ex:illustrate"/>
    <prov:agent prov:ref="ex:derek"/>
  </prov:wasAssociatedWith>

  <prov:actedOnBehalfOf>
    <prov:subordinate prov:ref="ex:derek"/>
    <prov:responsible prov:ref="ex:chartgen"/>
    <prov:activity prov:ref="ex:compose"/>
  </prov:actedOnBehalfOf>

  <prov:wasDerivedFrom>
    <prov:generatedEntity prov:ref="ex:dataSet2"/>
    <prov:usedEntity prov:ref="ex:dataSet1"/>
    <prov:type xsi:type="xsd:QName">prov:Revision</prov:type>
  </prov:wasDerivedFrom>

  <prov:specializationOf>
    <prov:specializedEntity prov:ref="ex:articleV1"/>
    <prov:generalEntity prov:ref="ex:article"/>
  </prov:specializationOf>

</prov:document>

The PROV Family: PROV Constraints

layered model

Time

some note here

Events

e1 precedes e2: reflexive, transitive relation.

e1 strictly precedes e2: irreflexive, transitive relation.

some note here

Constraints

constraints

 

 

some note here

Constraints (2)

constraints

 

 

Constraints(3) SW Technologies

 

 

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX spin: <http://spinrdf.org/spin#>
PREFIX prov: <http://www.w3.org/ns/prov#>
 
CONSTRUCT {
   :_b0
      a spin:ConstraintViolation;
      spin:violationRoot ?this;
      rdfs:label "Qualified start time disagrees with Activity start time.";
   .
}
WHERE {
   ?this a prov:Activity;
        prov:wasStartedAt   ?t_1;
        prov:qualifiedStart ?start; 
   .
   ?start 
      a prov:Start;
      prov:atTime ?t_2;
   .
   FILTER(?t_1 != ?t_2)
}

:paulRule prov:wasAttributedTo <http://data.semanticweb.org/person/paul-groth> 

Constraints: Challenge for Participants

Question:

Participate:

Validator Demo

Primer in turtle

Derivation from e2 to e1

Derivation from e2 to e1 and from e1 to e2 (xml) (ttl).

Conclusion: Specifications

prov-primer http://www.w3.org/TR/prov-primer/
prov-o http://www.w3.org/TR/prov-o/
prov-dm http://www.w3.org/TR/prov-dm/
prov-constraints http://www.w3.org/TR/prov-constraints/
prov-n http://www.w3.org/TR/prov-n/
prov-aq http://www.w3.org/TR/prov-aq/
prov-sem work in progress
prov-xml work in progress
prov-dc PROV-DC mapping. work in progress
-

Conclusion: Participate

Further Material

Example

Example

Example

PROV-DM overview

Example (reports)

PROV-DM overview entity(tr:WD-prov-dm-20111018, [ prov:type='process:RecsWD' ])
entity(tr:WD-prov-dm-20111215, [ prov:type='process:RecsWD' ])

Example (activities)

PROV-DM overview activity(ex:pub1,[prov:type="publish"])
activity(ex:pub2,[prov:type="publish"])

Example (agent)

PROV-DM overview agent(w3:Consortium, [ prov:type='prov:Organization' ])

Example (plan)

PROV-DM overview entity(process:rec-advance, [ prov:type='prov:Plan' ])

Example (requests)

PROV-DM overview entity(0004, [ prov:type='trans:transreq' ])
entity(0141, [ prov:type='trans:pubreq' ])
entity(0111, [ prov:type='trans:pubreq' ])

Example (usage)

PROV-DM overview used(ex:pub1,ar1:0004)
used(ex:pub1,ar2:0141)
used(ex:pub2,ar3:0111)

Example (generation)

PROV-DM overview wasGeneratedBy(tr:WD-prov-dm-20111018, ex:pub1)
wasGeneratedBy(tr:WD-prov-dm-20111215, ex:pub2)

Example (derivation)

PROV-DM overview wasDerivedFrom(tr:WD-prov-dm-20111215,tr:WD-prov-dm-20111018, [ prov:type='prov:WasRevisionOf' ] )

Example (association)

PROV-DM overview wasAssociatedWith(ex:pub2, w3:Consortium, pr:rec-advance)

/

#
Show Speaker Notes