--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex10_association-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,4 @@
+Examples of association between an activity and an agent are:
+ creation of a web page under the guidance of a designer;
+ various forms of participation in a panel discussion, including audience member, panelist, or panel chair;
+ a public event, sponsored by a company, and hosted by a museum;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex11_delegation-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+A student publishing a web page describing an academic department could result in both the student and the department being agents associated with the activity. It may not matter which actual student published a web page, but it may matter significantly that the department told the student to put up the web page.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex12_association-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+An example of association between an activity and an agent involving a plan is: an XSLT transform (an activity) launched by a user (an agent) based on an XSL style sheet (a plan).
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex13_identification-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+A service may read a same configuration file on two different occasions. Each usage can be identifed by its own identifier, allowing them to be distinguished.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex14_bundle-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+In a decision making situation, decision makers may be presented with the same piece of knowledge, issued by multiple sources. In order to validate this piece of knowledge, decision makers can consider its provenance, but also the provenance of its provenance, which may help determine whether it can be trusted.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex15_collection-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+An example of collection is an archive of documents. Each document has its own provenance, but the archive itself also has some provenance: who maintained it, which documents it contained at which point in time, how it was assembled, etc.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex16_provenance_notation-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,18 @@
+ An activity with identifier a1 and an attribute type with value createFile.
+
+activity(a1, [ prov:type="createFile" ])
+
+Two entities with identifiers e1 and e2.
+
+entity(e1)
+entity(e2)
+
+The activity a1 used e1, and e2 was generated by a1.
+
+used(a1, e1)
+wasGeneratedBy(e2, a1)
+
+The same descriptions, but with an explicit identifier u1 for the usage, and the syntactic marker '-' to mark the absence of identifier in the generation. Both are followed by ';'.
+
+used(u1; a1, e1)
+wasGeneratedBy(-; e2, a1)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex17_entity-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,7 @@
+The following expression
+
+ entity(tr:WD-prov-dm-20111215, [ prov:type="document", ex:version="2" ])
+
+states the existence of an entity, denoted by identifier tr:WD-prov-dm-20111215, with type document and version number 2. The attribute ex:version is application specific, whereas the attribute type (see Section 5.7.4.4) is reserved in the PROV namespace.
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex18_acivity-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,8 @@
+The following expression
+
+ activity(a1, 2011-11-16T16:05:00, 2011-11-16T16:06:00,
+ [ ex:host="server.example.org", prov:type='ex:edit' ])
+
+states the existence of an activity with identifier a1, start time 2011-11-16T16:05:00, and end time 2011-11-16T16:06:00, running on host server.example.org, and of type edit. The attribute host is application specific (declared in some namespace with prefix ex). The attribute type is a reserved attribute of PROV-DM, allowing for sub-typing to be expressed (see Section 5.7.4.4).
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex19_generation-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,8 @@
+ The following expressions
+
+ wasGeneratedBy(e1, a1, 2001-10-26T21:32:52, [ ex:port="p1" ])
+ wasGeneratedBy(e2, a1, 2001-10-26T10:00:00, [ ex:port="p2" ])
+
+state the existence of two generations (with respective times 2001-10-26T21:32:52 and 2001-10-26T10:00:00), at which new entities, identified by e1 and e2, were created by an activity, identified by a1. The first one was available on port p1, whereas the other was available on port p2. The semantics of port are application specific.
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex1_entity-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+An entity may be the document at IRI http://www.bbc.co.uk/news/science-environment-17526723, a file in a file system, a car, or an idea.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex20_generation-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,5 @@
+In some cases, we may want to record the time at which an entity was generated without having to specify the activity that generated it. To support this requirement, the activity element in generation is optional. Hence, the following expression indicates the time at which an entity is generated, without naming the activity that did it.
+
+ wasGeneratedBy(e, -, 2001-10-26T21:32:52)
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex21_usage-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,7 @@
+The following usages
+
+ used(a1, e1, 2011-11-16T16:00:00, [ ex:parameter="p1" ])
+ used(a1, e2, 2011-11-16T16:00:01, [ ex:parameter="p2" ])
+
+state that the activity identified by a1 used two entities identified by e1 and e2, at times 2011-11-16T16:00:00 and 2011-11-16T16:00:01, respectively; the first one was found as the value of parameter p1, whereas the second was found as value of parameter p2. The semantics of parameter is application specific.
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex22_communication-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,7 @@
+Consider two activities a1 and a2, the former performed by a government agency, and the latter by a driver caught speeding.
+
+activity(a1, [ prov:type="traffic regulations enforcing" ])
+activity(a2, [ prov:type="fine paying" ])
+wasInformedBy(a2, a1)
+
+The last line indicates that some implicit entity was generated by a1 and used by a2; this entity may be a traffic ticket that had a notice of fine, amount, and payment mailing details.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex23_start-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,19 @@
+The following example contains the description of an activity a1 (a discussion), which was started at a specific time, and was triggered by an email message e1.
+
+entity(e1, [ prov:type="email message"] )
+activity(a1, [ prov:type="Discuss" ])
+wasStartedBy(a1, e1, -, 2011-11-16T16:05:00)
+
+Furthermore, if the message is also an input to the activity, this can be described as follows:
+
+used(a1, e1, -)
+
+Alternatively, one can also describe the activity that generated the email message.
+
+activity(a0, [ prov:type="Write" ])
+wasGeneratedBy(e1, a0)
+wasStartedBy(a1, e1, a0, 2011-11-16T16:05:00)
+
+If e1 is not known, it would also be valid to write:
+
+wasStartedBy(a1, -, a0, 2011-11-16T16:05:00)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex24_start-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,7 @@
+In the following example, a race is started by a bang, and responsibility for this trigger is attributed to an agent ex:Bob.
+
+activity(ex:foot_race)
+entity(ex:bang)
+wasStartedBy(ex:foot_race, ex:bang, -, 2012-03-09T08:05:08-05:00)
+agent(ex:Bob)
+wasAttributedTo(ex:bang, ex:Bob)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex25_start-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,11 @@
+In this example, filling the fuel tank was started as a consequence of observing low fuel. The trigger entity is unspecified, it could for instance have been the low fuel warning light, the fuel tank indicator needle position, or the engine not running properly.
+
+activity(ex:filling-fuel)
+activity(ex:observing-low-fuel)
+
+agent(ex:driver, [ prov:type='prov:Person' )
+wasAssociatedWith(ex:filling-fuel, ex:driver)
+wasAssociatedWith(ex:observing-low-fuel, ex:driver)
+
+wasStartedBy(ex:filling-fuel, -, ex:observing-low-fuel, -)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex26_end-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,5 @@
+The following example is a description of an activity a1 (editing) that was ended following an approval document e1.
+
+entity(e1, [ prov:type="approval document" ])
+activity(a1, [ prov:type="Editing" ])
+wasEndedBy(a1, e1)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex27_invalidation-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,7 @@
+The Painter, a Picasso painting, is known to have been destroyed in a plane accident.
+
+entity(ex:The-Painter)
+agent(ex:Picasso)
+wasAttributedTo(ex:The-Painter, ex:Picasso)
+activity(ex:crash)
+wasInvalidatedBy(ex:The-Painter, ex:crash, 1998-09-03T01:31:00, [ ex:circumstances="plane accident" ])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex28_invalidation-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,8 @@
+The BBC news home page on 2012-04-03 ex:bbcNews2012-04-03 contained a reference to a given news item bbc:news/uk-17595024, but the BBC news home page on the next day did not.
+
+entity(ex:bbcNews2012-04-03)
+hadMember(ex:bbcNews2012-04-03, bbc:news/uk-17595024)
+wasGeneratedBy (ex:bbcNews2012-04-03, -, 2012-04-03T00:00:01)
+wasInvalidatedBy(ex:bbcNews2012-04-03, -, 2012-04-03T23:59:59)
+
+We refer to example Example 43 for further descriptions of the BBC Web site, and to Section 5.6.2 for a description of the relation hadMember.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex29_invalidation-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,24 @@
+In this example, the "buy one beer, get one free" offer expired at the end of the happy hour.
+
+entity(buy_one_beer_get_one_free_offer_during_happy_hour)
+wasAttributedTo(buy_one_beer_get_one_free_offer_during_happy_hour, proprietor)
+wasInvalidatedBy(buy_one_beer_get_one_free_offer_during_happy_hour,
+ -,2012-03-10T18:00:00)
+
+In contrast, in the following descriptions, Bob redeemed the offer 45 minutes before it expired, and got two beers.
+
+entity(buy_one_beer_get_one_free_offer_during_happy_hour)
+wasAttributedTo(buy_one_beer_get_one_free_offer_during_happy_hour, proprietor)
+activity(redeemOffer)
+entity(twoBeers)
+
+wasAssociatedWith(redeemOffer, bob)
+used(redeemOffer,
+ buy_one_beer_get_one_free_offer_during_happy_hour,
+ 2012-03-10T17:15:00)
+wasInvalidatedBy(buy_one_beer_get_one_free_offer_during_happy_hour,
+ redeemOffer,
+ 2012-03-10T17:15:00)
+wasGeneratedBy(twoBeers,redeemOffer)
+
+We see that the offer was both used to be converted into twoBeers and invalidated by the redeemOffer activity: in other words, the combined usage and invalidation indicate consumption of the offer.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex2_activity-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+An activity may be the publishing of a document on the Web, sending a twitter message, extracting metadata embedded in a file, driving a car from Boston to Cambridge, assembling a data set based on a set of measurements, performing a statistical analysis over a data set, sorting news items according to some criteria, running a SPARQL query over a triple store, or editing a file.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex30_derivation-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,12 @@
+The following descriptions are about derivations between e2 and e1, but no information is provided as to the identity of the activity (and usage and generation) underpinning the derivation. In the second line, a type attribute is also provided.
+
+wasDerivedFrom(e2, e1)
+wasDerivedFrom(e2, e1, [ prov:type="physical transform" ])
+
+The following description expresses that activity a, using the entity e1 according to usage u1, derived the entity e2 and generated it according to generation g2. It is followed by descriptions for generation g2 and usage u1.
+
+wasDerivedFrom(e2, e1, a, g2, u1)
+wasGeneratedBy(g2; e2, a, -)
+used(u1; a, e1, -)
+
+With such a comprehensive description of derivation, a program that analyzes provenance can identify the activity underpinning the derivation, it can identify how the preceding entity e1 was used by the activity (e.g. for instance, which argument it was passed as, if the activity is the result of a function invocation), and which output the derived entity e2 was obtained from (say, for a function returning multiple results).
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex31_revision-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,7 @@
+Revisiting the example of Section 4.2, we can now state that the report tr:WD-prov-dm-20111215 was a revision of the report tr:WD-prov-dm-20111018.
+
+entity(tr:WD-prov-dm-20111215, [ prov:type='rec54:WD' ])
+entity(tr:WD-prov-dm-20111018, [ prov:type='rec54:WD' ])
+wasDerivedFrom(tr:WD-prov-dm-20111215,
+ tr:WD-prov-dm-20111018,
+ [ prov:type='prov:Revision' ])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex32_quotation-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,15 @@
+The following paragraph is a quote from one of the author's blogs.
+
+ "During the workshop, it became clear to me that the consensus based models (which are often graphical in nature) can not only be formalized but also be directly connected to these database focused formalizations. I just needed to get over the differences in syntax. This could imply that we could have nice way to trace provenance across systems and through databases and be able to understand the mathematical properties of this interconnection."
+
+If wp:thoughts-from-the-dagstuhl-principles-of-provenance-workshop/ denotes the original blog by agent ex:Paul, and dm:bl-dagstuhl denotes the above paragraph, then the following descriptions express that the above paragraph was copied by agent ex:Luc from a part of the blog, attributed to the agent ex:Paul.
+
+entity(wp:thoughts-from-the-dagstuhl-principles-of-provenance-workshop/)
+entity(dm:bl-dagstuhl)
+agent(ex:Luc)
+agent(ex:Paul)
+wasDerivedFrom(dm:bl-dagstuhl,
+ wp:thoughts-from-the-dagstuhl-principles-of-provenance-workshop/,
+ [ prov:type='prov:Quotation' ])
+wasAttributedTo(dm:bl-dagstuhl, ex:Luc)
+wasAttributedTo(wp:thoughts-from-the-dagstuhl-principles-of-provenance-workshop/, ex:Paul)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex33_primary_source-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,7 @@
+Let us consider Charles Joseph Minard's flow map of Napoleon's March in 1812, which was published in 1869. Although the map is not a primary source, Minard probably used the journal of Pierre-Irénée Jacob, pharmacist to Napoleon's army during the Russian campaign. This primary source relation can be encoded as follows.
+
+entity(ex:la-campagne-de-Russie-1812-1813, [ prov:type="map" ])
+entity(ex:revue-d-Histoire-de-la-Pharmacie-t-XVIII, [ prov:type="journal" ])
+wasDerivedFrom(ex:la-campagne-de-Russie-1812-1813,
+ ex:revue-d-Histoire-de-la-Pharmacie-t-XVIII,
+ [ prov:type='prov:PrimarySource' ])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex34_agent-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,5 @@
+The following expression is about an agent identified by e1, which is a person, named Alice, with employee number 1234.
+
+agent(e1, [ex:employee="1234", ex:name="Alice", prov:type='prov:Person' ])
+
+It is optional to specify the type of an agent. When present, it is expressed using the prov:type attribute.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex35_attribution-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,7 @@
+Revisiting the example of Section 4.1, we can ascribe tr:WD-prov-dm-20111215 to some agents without an explicit activity.
+
+agent(ex:Paolo, [ prov:type='prov:Person' ])
+agent(ex:Simon, [ prov:type='prov:Person' ])
+entity(tr:WD-prov-dm-20111215, [ prov:type='rec54:WD' ])
+wasAttributedTo(tr:WD-prov-dm-20111215, ex:Paolo, [ prov:type="editorship" ])
+wasAttributedTo(tr:WD-prov-dm-20111215, ex:Simon, [ prov:type="authorship" ])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex36_association-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,12 @@
+In the following example, a designer agent and an operator agent are associated with an activity. The designer's goals are achieved by a workflow ex:wf, described as an entity of type plan.
+
+activity(ex:a, [ prov:type="workflow execution" ])
+agent(ex:ag1, [ prov:type="operator" ])
+agent(ex:ag2, [ prov:type="designer" ])
+wasAssociatedWith(ex:a, ex:ag1, -, [ prov:role="loggedInUser", ex:how="webapp" ])
+wasAssociatedWith(ex:a, ex:ag2, ex:wf, [ prov:role="designer", ex:context="project1" ])
+entity(ex:wf, [ prov:type='prov:Plan' ,
+ ex:label="Workflow 1",
+ prov:location="http://example.org/workflow1.bpel" %% xsd:anyURI ])
+
+Since the workflow ex:wf is itself an entity, its provenance can also be expressed in PROV: it can be generated by some activity and derived from other entities, for instance.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex37_association-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,9 @@
+In some cases, one wants to indicate a plan was followed, without having to specify which agent was involved.
+
+activity(ex:a, [ prov:type="workflow execution" ])
+wasAssociatedWith(ex:a, -, ex:wf)
+entity(ex:wf, [ prov:type='prov:Plan',
+ ex:label="Workflow 1",
+ ex:url="http://example.org/workflow1.bpel" %% xsd:anyURI])
+
+In this case, it is assumed that an agent exists, but it has not been specified.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex38_delegation-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,11 @@
+The following fragment describes three agents: a programmer, a researcher, and a funder. The programmer and researcher are associated with a workflow activity. The programmer acts on behalf of the researcher (line-management) encoding the commands specified by the researcher; the researcher acts on behalf of the funder, who has a contractual agreement with the researcher. The terms 'line-management' and 'contract' used in this example are domain specific.
+
+activity(a,[ prov:type="workflow" ])
+agent(ag1, [ prov:type="programmer" ])
+agent(ag2, [ prov:type="researcher" ])
+agent(ag3, [ prov:type="funder" ])
+wasAssociatedWith(a, ag1, [ prov:role="loggedInUser" ])
+wasAssociatedWith(a, ag2)
+wasAssociatedWith(a, ag3)
+actedOnBehalfOf(ag1, ag2, a, [ prov:type="line-management" ])
+actedOnBehalfOf(ag2, ag3, a, [ prov:type="contract" ])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex39_influence-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,7 @@
+We refer to the example of Section 4.2, and specifically to Figure 3. We could have expressed that the influence of w3:Consortium on tr:WD-prov-dm-20111215.
+
+ wasInfluencedBy(tr:WD-prov-dm-20111215, w3:Consortium)
+
+Instead, it is recommended to express the more specific description:
+
+ wasAttributedTo(tr:WD-prov-dm-20111215, w3:Consortium)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex3_usage-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+Examples of generation are the completed creation of a file by a program, the completed creation of a linked data set, and the completed publication of a new version of a document.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex40_bundle-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,40 @@
+Let us consider two entities ex:report1 and ex:report2.
+
+
+entity(ex:report1, [ prov:type="report", ex:version=1 ])
+wasGeneratedBy(ex:report1, -, 2012-05-24T10:00:01)
+entity(ex:report2, [ prov:type="report", ex:version=2])
+wasGeneratedBy(ex:report2, -, 2012-05-25T11:00:01)
+wasDerivedFrom(ex:report2, ex:report1)
+
+Let us assume that Bob observed the creation of ex:report1. A first bundle can be expressed.
+
+
+bundle bob:bundle1
+ entity(ex:report1, [ prov:type="report", ex:version=1 ])
+ wasGeneratedBy(ex:report1, -, 2012-05-24T10:00:01)
+endBundle
+
+In contrast, Alice observed the creation of ex:report2 and its derivation from ex:report1. A separate bundle can also be expressed.
+
+
+bundle alice:bundle2
+ entity(ex:report1)
+ entity(ex:report2, [ prov:type="report", ex:version=2 ])
+ wasGeneratedBy(ex:report2, -, 2012-05-25T11:00:01)
+ wasDerivedFrom(ex:report2, ex:report1)
+endBundle
+
+The first bundle contains the descriptions corresponding to Bob observing the creation of ex:report1. Its provenance can be described as follows.
+
+
+entity(bob:bundle1, [ prov:type='prov:Bundle' ])
+wasGeneratedBy(bob:bundle1, -, 2012-05-24T10:30:00)
+wasAttributedTo(bob:bundle1, ex:Bob)
+
+In contrast, the second bundle is attributed to Alice who observed the derivation of ex:report2 from ex:report1.
+
+
+entity(alice:bundle2, [ prov:type='prov:Bundle' ])
+wasGeneratedBy(alice:bundle2, -, 2012-05-25T11:15:00)
+wasAttributedTo(alice:bundle2, ex:Alice)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex41_bundle-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,19 @@
+A provenance aggregator could merge two bundles, resulting in a novel bundle, whose provenance is described as follows.
+
+
+bundle agg:bundle3
+ entity(ex:report1, [ prov:type="report", ex:version=1 ])
+ wasGeneratedBy(ex:report1, -, 2012-05-24T10:00:01)
+
+ entity(ex:report2, [ prov:type="report", ex:version=2 ])
+ wasGeneratedBy(ex:report2, -, 2012-05-25T11:00:01)
+ wasDerivedFrom(ex:report2, ex:report1)
+endBundle
+
+entity(agg:bundle3, [ prov:type='prov:Bundle' ])
+agent(ex:aggregator01, [ prov:type='ex:Aggregator' ])
+wasAttributedTo(agg:bundle3, ex:aggregator01)
+wasDerivedFrom(agg:bundle3, bob:bundle1)
+wasDerivedFrom(agg:bundle3, alice:bundle2)
+
+The new bundle is given a new identifier agg:bundle3 and is attributed to the ex:aggregator01 agent.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex42_alternate-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+User Alice writes an article. In its provenance, she wishes to refer to the precise version of the article with a date-specific IRI, as she might edit the article later. Alternatively, user Bob refers to the article in general, independently of its variants over time.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex43_specialization-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,5 @@
+The BBC news home page on 2012-03-23 ex:bbcNews2012-03-23 is a specialization of the BBC news page in general bbc:news/. This can be expressed as follows.
+
+specializationOf(ex:bbcNews2012-03-23, bbc:news/)
+
+We have created a new qualified name, ex:bbcNews2012-03-23, in the namespace ex, to identify the specific page carrying this day's news, which would otherwise be the generic bbc:news/ page.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex44_alternate-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,8 @@
+A given news item on the BBC News site bbc:news/science-environment-17526723 for desktop is an alternate of a bbc:news/mobile/science-environment-17526723 for mobile devices.
+
+entity(bbc:news/science-environment-17526723,
+ [ prov:type="a news item for desktop"])
+entity(bbc:news/mobile/science-environment-17526723,
+ [ prov:type="a news item for mobile devices"])
+alternateOf(bbc:news/science-environment-17526723,
+ bbc:news/mobile/science-environment-17526723)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex45_alternate-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,7 @@
+Considering again the two versions of the technical report tr:WD-prov-dm-20111215 (second working draft) and tr:WD-prov-dm-20111018 (first working draft). They are alternates of each other.
+
+entity(tr:WD-prov-dm-20111018)
+entity(tr:WD-prov-dm-20111215)
+alternateOf(tr:WD-prov-dm-20111018, tr:WD-prov-dm-20111215)
+
+They are both specialization of the page http://www.w3.org/TR/prov-dm/.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex46_collection-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,2 @@
+entity(c0, [ prov:type='prov:EmptyCollection' ]) // c0 is an empty collection
+entity(c1, [ prov:type='prov:Collection' ]) // c1 is a collection, with unknown content
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex47_membership-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,10 @@
+In this example, c is a collection known to have e0, e1, and e2 as members, and may have other members.
+
+entity(e0)
+entity(e1)
+entity(e2)
+
+entity(c, [prov:type='prov:Collection' ]) // c is a collection, with unknown content
+hadMember(c, e0)
+hadMember(c, e1)
+hadMember(c, e2)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex48_label_attribute-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,5 @@
+The following entity is provided with a label attribute.
+ entity(ex:e1, [ prov:label="This is a human-readable label" ])
+
+The following entity has two label attributes, in French and English.
+ entity(ex:car01, [ prov:label="Voiture 01"@fr, prov:label="Car 01"@en ])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex49_location_attribute-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,5 @@
+The following expression describes entity Mona Lisa, a painting, with a location attribute.
+ entity(ex:MonaLisa, [ prov:location="Le Louvre, Paris", prov:type="StillImage" ])
+
+The following expression describes a cell, at coordinates (5,5), with value 10.
+ entity(ex:cell, [ prov:location="(5,5)", prov:value="10" %% xsd:integer ])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex4_usage-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+Usage examples include a procedure beginning to consume an argument, a service starting to read a value on a port, a program beginning to read a configuration file, or the point at which an ingredient, such as eggs, is being added in a baking activity. Usage may entirely consume an entity (e.g. eggs are no longer available after being added to the mix); in contrast, the same entity may be used multiple times, possibly by different activities (e.g. a file on a file system can be read indefinitely).
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex50_role_attribute-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,5 @@
+The following activity is associated with an agent acting as the operator.
+ wasAssociatedWith(a, ag, [ prov:role="operator" ])
+
+In the following expression, the activity ex:div01 used entity ex:cell in the role of divisor.
+ used(ex:div01, ex:cell, [ prov:role="divisor" ])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex51_type_attribute-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,2 @@
+The following describes an agent of type software agent.
+ agent(ag, [ prov:type='prov:SoftwareAgent' ])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex52_value_attribute-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,8 @@
+The following example illustrates the provenance of the number 4 obtained by an activity that computed the length of an input string "abcd". The input and the output are expressed as entities ex:in and ex:out, respectively. They each have a prov:value attribute associated with the corresponding value.
+
+entity(ex:in, [ prov:value="abcd" ])
+entity(ex:out, [ prov:value=4 ])
+activity(ex:len, [ prov:type="string-length" ])
+used(ex:len, ex:in)
+wasGeneratedBy(ex:out, ex:len)
+wasDerivedFrom(ex:out, ex:in)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex53_value_attribute-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,9 @@
+Example 52 illustrates an entity with a given value 4. This examples shows that another entity with the same value may be computed differently (by an addition).
+
+entity(ex:in1, [ prov:value=3 ])
+entity(ex:in2, [ prov:value=1 ])
+entity(ex:out2, [ prov:value=4 ]) // ex:out2 also has value 4
+activity(ex:add1, [ prov:type="addition" ])
+used(ex:add1, ex:in1)
+used(ex:add1, ex:in2)
+wasGeneratedBy(ex:out2, ex:add1)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex54_value-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,10 @@
+The following examples respectively are the string "abc", the integer number 1, and the IRI "http://example.org/foo".
+ "abc"
+ "1" %% xsd:integer
+ "http://example.org/foo" %% xsd:anyURI
+
+The following example shows a value of type prov:QUALIFIED_NAME (see prov:QUALIFIED_NAME [PROV-N]). The prefix ex must be bound to a namespace declared in a namespace declaration.
+ "ex:value" %% prov:QUALIFIED_NAME
+
+Alternatively, the same value can be expressed using the following convenience notation.
+ 'ex:value'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex55_value_time_instant-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,2 @@
+In the following example, the generation time of entity e1 is expressed according to xsd:dateTime [XMLSCHEMA11-2].
+ wasGeneratedBy(e1,a1, 2001-10-26T21:32:52)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex56_extensibility_points-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,2 @@
+In the following example, e2 is a translation of e1, expressed as a sub-type of derivation.
+ wasDerivedFrom(e2,e1, [prov:type='ex:Translation' ])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex57_extensibility_points-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,2 @@
+In the following example, e is described as a Car, a type of entity.
+ entity(e, [prov:type='ex:Car' ])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex58_extensibility_points-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,7 @@
+In the following example, two computers ex:laptop4 and ex:desktop9 are used in different roles in a work activity.
+
+ activity(ex:work)
+ entity(ex:laptop4)
+ entity(ex:desktop9)
+ used(ex:work, ex:laptop4, [prov:role="day-to-day machine"])
+ used(ex:work, ex:desktop9, [prov:role="backup machine"])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex5_usage-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+Let us consider the activity of driving a car from Boston to Cambridge. One might reasonably ask what entities are used and generated by this activity. This is answered by considering that a single artifact may correspond to several entities; in this case, a car in Boston may be a different entity from the same car in Cambridge. Thus, among other things, an entity "car in Boston" would be used, and a new entity "car in Cambridge" would be generated by this activity of driving. The provenance trace of the car might include: designed in Japan, manufactured in Korea, shipped to Boston USA, purchased by customer, driven to Cambridge, serviced by engineer in Cambridge, etc., all of which might be important information when deciding whether or not it represents a sensible second-hand purchase. Or some of it might alternatively be relevant when trying to determine the truth of a web page reporting a traffic violation involving that car. This breadth of provenance allows descriptions of interactions between physical and digital artifacts.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex6_communication-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+The activity of writing a celebrity article was informed by (a communication instance) the activity of intercepting voicemails.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex7_derivation-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+Examples of derivation include the transformation of a relational table into a linked data set, the transformation of a canvas into a painting, the transportation of a work of art from London to New York, and a physical transformation such as the melting of ice into water.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex8_agent-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+Software for checking the use of grammar in a document may be defined as an agent of a document preparation activity; one can also describe its provenance, including for instance the vendor and the version history. A site selling books on the Web, the services involved in the processing of orders, and the companies hosting them are also agents.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex9_attribution-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,1 @@
+A blog post can be attributed to an author, a mobile phone to its manufacturer.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex_author_view-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,17 @@
+There was a document tr:WD-prov-dm-20111215, which from the author's perspective was a document in its second version.
+ entity(tr:WD-prov-dm-20111215, [ prov:type="document", ex:version="2" ])
+
+There was an editing activity.
+ activity(ex:edit1, [ prov:type="edit" ])
+
+The document was generated by the editing activity: this was a Generation. Its time is not specified, hence, the marker '-'.
+ wasGeneratedBy(tr:WD-prov-dm-20111215, ex:edit1, -)
+
+There were some agents.
+ agent(ex:Paolo, [ prov:type='prov:Person' ])
+ agent(ex:Simon, [ prov:type='prov:Person' ])
+
+Agents were assigned various responsibilities in the editing activity: contributor and editor. The plan the agent relied upon is not specified, hence, the marker '-'.
+ wasAssociatedWith(ex:edit1, ex:Paolo, -, [ prov:role="editor" ])
+ wasAssociatedWith(ex:edit1, ex:Simon, -, [ prov:role="contributor" ])
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex_process_view-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,19 @@
+There was a document, a working draft (rec54:WD), which is an entity so that we can describe its provenance. Similar descriptions exist for all entities.
+ entity(tr:WD-prov-dm-20111215, [ prov:type='rec54:WD' ])
+
+There was a publication activity.
+ activity(ex:act2, [ prov:type="publish" ])
+
+The document was generated by the publication activity: this was a Generation. Its time is not specified, hence, the marker '-'.
+ wasGeneratedBy(tr:WD-prov-dm-20111215, ex:act2, -)
+
+The second draft of the document was derived from the first draft: this was a Derivation.
+ wasDerivedFrom(tr:WD-prov-dm-20111215, tr:WD-prov-dm-20111018)
+
+The activity required a publication request: this was a Usage. Its time is not specified, hence, the marker '-'.
+ used(ex:act2, email:2011Dec/0111, -)
+
+The activity was associated with the Consortium agent, and proceeded according to its publication policy: this is an Association.
+ wasAssociatedWith(ex:act2, w3:Consortium, process:rec-advance)
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testcases/prov-dm/prov-dm-ex_provenance_attribution-PASS.provn Mon Nov 26 12:03:52 2012 +0000
@@ -0,0 +1,29 @@
+PROV-DM offers a construct to name a bundle of provenance descriptions (full details: ex:author-view).
+
+bundle ex:author-view
+
+ agent(ex:Paolo, [ prov:type='prov:Person' ])
+ agent(ex:Simon, [ prov:type='prov:Person' ])
+
+
+...
+
+endBundle
+
+Likewise, the process view can be expressed as a separate named bundle (full details: ex:process-view).
+
+bundle ex:process-view
+
+ agent(w3:Consortium, [ prov:type='prov:Organization' ])
+
+...
+
+endBundle
+
+To express their respective provenance, these bundles must be seen as entities, and all PROV constructs are now available to express their provenance. In the example below, ex:author-view is attributed to the agent ex:Simon, whereas ex:process-view to w3:Consortium.
+
+entity(ex:author-view, [ prov:type='prov:Bundle' ])
+wasAttributedTo(ex:author-view, ex:Simon)
+
+entity(ex:process-view, [ prov:type='prov:Bundle' ])
+wasAttributedTo(ex:process-view, w3:Consortium)