--- a/model/ProvenanceModel.html Thu Nov 17 11:39:51 2011 +0000
+++ b/model/ProvenanceModel.html Thu Nov 17 12:09:55 2011 +0000
@@ -477,22 +477,22 @@
<p>
-Event evt1: Alice creates (pe0) an empty file in /share/crime.txt. We denote this e1.
+Event evt1: Alice creates (a0) an empty file in /share/crime.txt. We denote this e1.
</p>
<p>
-Event evt2: Bob appends (pe1) the following line to /share/crime.txt:</p>
+Event evt2: Bob appends (a1) the following line to /share/crime.txt:</p>
<pre>
There was a lot of crime in London last month.
</pre>
<p>We denote this e2.</p>
-<p>Event evt3: Charles emails (pe2) the contents of /share/crime.txt, as an
+<p>Event evt3: Charles emails (a2) the contents of /share/crime.txt, as an
attachment, which we refer to as e4. (We specifically refer to a copy of the file that is uploaded on the mail server.)
</p>
<p>
-Event evt4: David edits (pe3) file /share/crime.txt as follows.</p>
+Event evt4: David edits (a3) file /share/crime.txt as follows.</p>
<pre>
There was a lot of crime in London and New-York last month.
</pre>
@@ -500,10 +500,10 @@
We denote this e3.
</p>
-<p>Event evt5: Edith emails (pe4) the contents of /share/crime.txt as an attachment, referred to as e5.
+<p>Event evt5: Edith emails (a4) the contents of /share/crime.txt as an attachment, referred to as e5.
</p>
-<p>Event evt6: between events evt4 and evt5, someone (unspecified) runs a spell checker (pe5) on the file /share/crime.txt.
+<p>Event evt6: between events evt4 and evt5, someone (unspecified) runs a spell checker (a5) on the file /share/crime.txt.
The file after spell checking is referred to as e6.
</p>
@@ -546,26 +546,26 @@
<p>
Activity Records (described in <a href="#record-Activity">Section Activity</a>) represent activities in the scenario.</p>
<pre>
-activity(pe0,create-file,t,,[])
-activity(pe1,add-crime-in-london,t+1,,[])
-activity(pe2,email,t+2,,[])
-activity(pe3,edit-London-New-York,t+3,,[])
-activity(pe4,email,t+4,,[])
-activity(pe5,spellcheck,,,[])
+activity(a0,create-file,t,,[])
+activity(a1,add-crime-in-london,t+1,,[])
+activity(a2,email,t+2,,[])
+activity(a3,edit-London-New-York,t+3,,[])
+activity(a4,email,t+4,,[])
+activity(a5,spellcheck,,,[])
</pre>
<p>
Generation Records (described in <a href="#record-Generation">Section Generation</a>) represent the event at which a file is created in a specific form. Attributes are used to describe the modalities according to which a given entity is generated by a given activity. The interpretation of attributes is application specific. Illustrations of such attributes for the scenario are: no attribute is provided for <span class="name">e0</span>;
-<span class="name">e2</span> was generated by the editor's save function; <span class="name">e4</span> can be found on the smtp port, in the attachment section of the mail message; <span class="name">e6</span> was produced on the standard output of <span class="name">pe5</span>.</p>
+<span class="name">e2</span> was generated by the editor's save function; <span class="name">e4</span> can be found on the smtp port, in the attachment section of the mail message; <span class="name">e6</span> was produced on the standard output of <span class="name">a5</span>.</p>
<pre>
-wasGeneratedBy(e0, pe0, [])
-wasGeneratedBy(e1, pe0, [ex:fct="create"])
-wasGeneratedBy(e2, pe1, [ex:fct="save"])
-wasGeneratedBy(e3, pe3, [ex:fct="save"])
-wasGeneratedBy(e4, pe2, [ex:port="smtp", ex:section="attachment"])
-wasGeneratedBy(e5, pe4, [ex:port="smtp", ex:section="attachment"])
-wasGeneratedBy(e6, pe5, [ex:file="stdout"])
+wasGeneratedBy(e0, a0, [])
+wasGeneratedBy(e1, a0, [ex:fct="create"])
+wasGeneratedBy(e2, a1, [ex:fct="save"])
+wasGeneratedBy(e3, a3, [ex:fct="save"])
+wasGeneratedBy(e4, a2, [ex:port="smtp", ex:section="attachment"])
+wasGeneratedBy(e5, a4, [ex:port="smtp", ex:section="attachment"])
+wasGeneratedBy(e6, a5, [ex:file="stdout"])
</pre>
@@ -574,13 +574,13 @@
Usage Records (described in <a href="#record-Usage">Section Usage</a>) represent the event by which a file is read by an activity.
Likewise, attributes describe the modalities according to which the various entities are used by activities. Illustrations of such attributes are:
-<span class="name">e1</span> is used in the context of <span class="name">pe1</span>'s <span class="name">load</span> functionality; <span class="name">e2</span> is used by <span class="name">pe2</span> in the context of its attach functionality; <span class="name">e3</span> is used on the standard input by <span class="name">pe5</span>. </p>
+<span class="name">e1</span> is used in the context of <span class="name">a1</span>'s <span class="name">load</span> functionality; <span class="name">e2</span> is used by <span class="name">a2</span> in the context of its attach functionality; <span class="name">e3</span> is used on the standard input by <span class="name">a5</span>. </p>
<pre>
-used(pe1,e1,[ex:fct="load"])
-used(pe3,e2,[ex:fct="load"])
-used(pe2,e2,[ex:fct="attach"])
-used(pe4,e3,[ex:fct="attach"])
-used(pe5,e3,[ex:file="stdin"])
+used(a1,e1,[ex:fct="load"])
+used(a3,e2,[ex:fct="load"])
+used(a2,e2,[ex:fct="attach"])
+used(a4,e3,[ex:fct="attach"])
+used(a5,e3,[ex:file="stdin"])
</pre>
@@ -589,8 +589,8 @@
<pre>
wasDerivedFrom(e2,e1)
wasDerivedFrom(e3,e2)
-wasDerivedFrom(e4,e2,pe2,[ex:port="smtp", ex:section="attachment"],[ex:fct="attach"])
-wasDerivedFrom(e5,e3,pe4,[ex:port="smtp", ex:section="attachment"],[ex:fct="attach"])
+wasDerivedFrom(e4,e2,a2,[ex:port="smtp", ex:section="attachment"],[ex:fct="attach"])
+wasDerivedFrom(e5,e3,a4,[ex:port="smtp", ex:section="attachment"],[ex:fct="attach"])
</pre>
@@ -609,15 +609,15 @@
<p>
Agent Records (described at <a href="#record-Agent">Section Agent</a>): the various users are represented as agents, themselves being a type of entity.</p>
<pre>
-agent(a1, [ prov:type="prov:Person", ex:name="Alice" ])
-
-agent(a2, [ prov:type="prov:Person", ex:name="Bob" ])
-
-agent(a3, [ prov:type="prov:Person", ex:name="Charles" ])
-
-agent(a4, [ prov:type="prov:Person", ex:name="David" ])
-
-agent(a5, [ prov:type="prov:Person", ex:name="Edith" ])
+agent(ag1, [ prov:type="prov:Person", ex:name="Alice" ])
+
+agent(ag2, [ prov:type="prov:Person", ex:name="Bob" ])
+
+agent(ag3, [ prov:type="prov:Person", ex:name="Charles" ])
+
+agent(ag4, [ prov:type="prov:Person", ex:name="David" ])
+
+agent(ag5, [ prov:type="prov:Person", ex:name="Edith" ])
</pre>
@@ -625,11 +625,11 @@
<p>
Activity Assocation Records (described in <a href="#record-ActivityAssociation">Section Activity Association</a>): the association of an agent with an activity is expressed with , and the nature of this association is described by attributes. Illustrations of such attributes include the role of the participating agent, as creator, author and communicator (role is a reserved attribute in PROV-DM).</p>
<pre>
-wasAssociatedWith(pe0,a1, [prov:role="creator"])
-wasAssociatedWith(pe1,a2, [prov:role="author"])
-wasAssociatedWith(pe2,a3, [prov:role="communicator"])
-wasAssociatedWith(pe3,a4, [prov:role="author"])
-wasAssociatedWith(pe4,a5, [prov:role="communicator"])
+wasAssociatedWith(a0, ag1, [prov:role="creator"])
+wasAssociatedWith(a1, ag2, [prov:role="author"])
+wasAssociatedWith(a2, ag3, [prov:role="communicator"])
+wasAssociatedWith(a3, ag4, [prov:role="author"])
+wasAssociatedWith(a4, ag5, [prov:role="communicator"])
</pre>
</section>
@@ -840,7 +840,7 @@
<p>
The following activity assertion</p>
<pre class="codeexample">
-activity(pe1,add-crime-in-london,t+1,t+1+epsilon,[ex:host="server.example.org",prov:type="app:edit"])
+activity(a1,add-crime-in-london,t+1,t+1+epsilon,[ex:host="server.example.org",prov:type="app:edit"])
</pre>
<p>identified by identifier <span class="name">id</span>, states the existence of an activity with recipe link <span class="name">add-crime-in-london</span>, start time <span class="name">t+1</span>, and end time <span class="name">t+1+epsilon</span>, running on host <span class="name">server.example.org</span>, and of type <span class="name">edit</span> (declared in some namespace with prefix <span class="name">app</span>). The attribute <span class="name">host</span> is application specific, but MUST hold for the duration of activity. The attribute <span class="name">type</span> is a reserved attribute of PROV-DM, allowing for subtyping to be expressed.</p>
</div>
@@ -998,7 +998,7 @@
<tr><td></td><td>Entity</td><td>Activity</td><td>Agent</td><td>Note</td></tr>
<tr><td>Entity</td><td>wasComplementOf</td><td>wasGeneratedBy</td><td>-</td><td>hasAnnotation</td></tr>
<tr><td>Activity</td><td>used</td><td>-</td><td>wasStartedBy<br>wasEndedBy<br>wasAssociatedWith</td><td>hasAnnotation</td></tr>
-<tr><td rowspan="2">Agent</td><td rowspan="2">-</td><td colspan="2">actedOnBehalfOf</td><td rowspan="2">hasAnnotation</td></tr>
+<tr><td rowspan="2">Agent</td><td rowspan="2">-</td><td colspan="2" border="0">actedOnBehalfOf</td><td rowspan="2">hasAnnotation</td></tr>
<tr><td>-</td><td>wasComplementOf</td></tr>
<tr><td>Note</td><td>-</td><td>-</td><td>-</td><td>hasAnnotation</td></tr>
<caption>PROV-DM Relation Summary</caption>
@@ -1081,9 +1081,9 @@
The rationale for this constraint is as follows.
If two activities sequentially set different values to some attribute by means of two different generate events, then they generate distinct entities. Alternatively, for two activities to generate an entity simultaneously, they would require some synchronization by which they agree the entity is released for use; the end of this synchronization would constitute the actual generation of the entity, but is performed by a single activity. This unicity constraint is formalized as follows.
-<div class='constraint' id='generation-unicity'>Given an entity record denoted by <span class="name">e</span>, two activity records denoted by <span class="name">pe1</span> and <span class="name">pe2</span>, and two sets of attribute-value pairs <span class="name">attrs1</span> and <span class="name">attrs2</span>,
-<span class='conditional'>if</span> the records <span class="name">wasGeneratedBy(e,pe1,attrs1)</span> and <span class="name">wasGeneratedBy(e,pe2,attrs2)</span> exist in the scope of a given account,
-<span class='conditional'>then</span> <span class="name">pe1</span>=<span class="name">pe2</span> and <span class="name">attrs1</span>=<span class="name">attrs2</span>.
+<div class='constraint' id='generation-unicity'>Given an entity record denoted by <span class="name">e</span>, two activity records denoted by <span class="name">a1</span> and <span class="name">a2</span>, and two sets of attribute-value pairs <span class="name">attrs1</span> and <span class="name">attrs2</span>,
+<span class='conditional'>if</span> the records <span class="name">wasGeneratedBy(e,a1,attrs1)</span> and <span class="name">wasGeneratedBy(e,a2,attrs2)</span> exist in the scope of a given account,
+<span class='conditional'>then</span> <span class="name">a1</span>=<span class="name">a2</span> and <span class="name">attrs1</span>=<span class="name">attrs2</span>.
</div>
<div class='note'>TODO: Introduce the well-formed-ness constraint in a entirely separate section.</div>
@@ -1598,12 +1598,12 @@
<div class="anexample">
<p>The following derivation assertions</p>
<pre class="codeexample">
-wasDerivedFrom(e5,e3,pe4,[ex:channel="out"],[ex:channel="in"])
+wasDerivedFrom(e5,e3,a4,[ex:channel="out"],[ex:channel="in"])
wasDerivedFrom(e3,e2)
</pre>
<p>
state the existence of activity-linked derivations;
-the first expresses that the activity represented by the activity <span class="name">pe4</span>, by
+the first expresses that the activity represented by the activity <span class="name">a4</span>, by
using the entity denoted by <span class="name">e3</span> obtained on the <span class="name">in</span> channel
derived the
entity denoted by <span class="name">e5</span> and generated it on
@@ -1910,11 +1910,11 @@
...
wasDerivedFrom(e2,e1)
...
- activity(pe0,create-file,t)
+ activity(a0,create-file,t)
...
- wasGeneratedBy(e0,pe0,[])
+ wasGeneratedBy(e0,a0,[])
...
- wasAssociatedWith(pe4,a5, [prov:role="communicator"]) )
+ wasAssociatedWith(a4, ag5, [prov:role="communicator"]) )
</pre>
<p>contains the set of provenance records of section <a href="#example-prov-asn-encoding">example-prov-asn-encoding</a>, is asserted by agent <span class="name">http://example.org/asserter</span>, and is identified by identifier <span class="name">acc0</span>.
</p>
@@ -1965,12 +1965,12 @@
http://example.org/asserter2,
entity(e0, [ prov:type="File", ex:path="/shared/crime.txt", ex:creator="Alice" ])
...
- activity(pe1,create-file,t1)
+ activity(a1,create-file,t1)
...
- wasGeneratedBy(e0,pe1,[ex:fct="create"])
+ wasGeneratedBy(e0,a1,[ex:fct="create"])
... )
</pre>
-<p>with identifier <span class="name">acc2</span>, containing assertions by asserter by <span class="name">http://example.org/asserter2</span> stating that the entity represented by entity record identified by <span class="name">e0</span> was generated by an activity represented by activity record identified by <span class="name">pe1</span> instead of <span class="name">pe0</span> in the previous account <span class="name">acc0</span>. If accounts <span class="name">acc0</span> and <span class="name">acc2</span> are merged together, the resulting set of records violates <a href="#generation-unicity">generation-unicity</a>.</p>
+<p>with identifier <span class="name">acc2</span>, containing assertions by asserter by <span class="name">http://example.org/asserter2</span> stating that the entity represented by entity record identified by <span class="name">e0</span> was generated by an activity represented by activity record identified by <span class="name">a1</span> instead of <span class="name">a0</span> in the previous account <span class="name">acc0</span>. If accounts <span class="name">acc0</span> and <span class="name">acc2</span> are merged together, the resulting set of records violates <a href="#generation-unicity">generation-unicity</a>.</p>
</div>
<p>Account records constitute a scope for identifiers. Since accounts can be nested, their scope can also be nested; thus, the scope of identifiers should be understood in the context of such nested scopes. When a record with an identifier occurs directly within an account, then its identifier denotes this record in the scope of this account, except in sub-accounts where records with the same identifier occur. </p>
@@ -1982,16 +1982,16 @@
account(acc3,
http://example.org/asserter1,
entity(e0, [ prov:type="File", ex:path="/shared/crime.txt", ex:creator="Alice" ])
- activity(pe0,create-file,t)
- wasGeneratedBy(e0,pe0,[])
+ activity(a0,create-file,t)
+ wasGeneratedBy(e0,a0,[])
account(acc4,
http://example.org/asserter2,
- entity(e1, [ prov:type="File", ex:path="/shared/crime.txt", ex:creator="Alice", content="" ])
- activity(pe0,copy-file,t)
- wasGeneratedBy(e1,pe0,[ex:fct="create"])
- isComplement(e1,e0)))
+ entity(e1, [ prov:type="File", ex:path="/shared/crime.txt", ex:creator="Alice", ex:content="" ])
+ activity(a0,copy-file,t)
+ wasGeneratedBy(e1,a0,[ex:fct="create"])
+ wasComplementOf(e1,e0)))
</pre>
-<p>Alternatively, an activity record identified by <span class="name">pe0</span> occurs in each of the two accounts. Therefore, each activity record is asserted in a separate scope, and therefore may represent different activities in the world.
+<p>Alternatively, an activity record identified by <span class="name">a0</span> occurs in each of the two accounts. Therefore, each activity record is asserted in a separate scope, and therefore may represent different activities in the world.
</p>
</div>
@@ -2077,9 +2077,9 @@
<p>
-The following control record describes the role of the agent identified by <span class="name">a5</span> in this control relation with activity <span class="name">pe4</span>. </p>
+The following control record describes the role of the agent identified by <span class="name">a5</span> in this control relation with activity <span class="name">a4</span>. </p>
<pre class="example">
- wasControlledBy(pe4,a5, [prov:role="communicator"])
+ wasControlledBy(a4,a5, [prov:role="communicator"])
</pre>
<p>From this specification's viewpoint, an the interpretation of an attribute declared in a namespace other than prov-dm is out of
scope.</p>
@@ -2448,69 +2448,69 @@
<p>
A information flow ordering record, written as
-<span class="name">wasInformedBy(pe2,pe1)</span> in PROV-ASN:
+<span class="name">wasInformedBy(a2,a1)</span> in PROV-ASN:
<ul>
-<li> refers to an activity record identified by <span class="name">pe2</span>;
-<li> refers to an activity record identified by <span class="name">pe1</span>
+<li> refers to an activity record identified by <span class="name">a2</span>;
+<li> refers to an activity record identified by <span class="name">a1</span>
</ul>
and states information flow ordering between the activities represented by these records, specified as follows.
-<div class='constraint' id='wasInformedBy'>Given two activity records identified by <span class="name">pe1</span> and <span class="name">pe2</span>,
- the record <span class="name">wasInformedBy(pe2,pe1)</span>
+<div class='constraint' id='wasInformedBy'>Given two activity records identified by <span class="name">a1</span> and <span class="name">a2</span>,
+ the record <span class="name">wasInformedBy(a2,a1)</span>
holds, <span class='conditional'>if and only if</span>
there is an entity record identified by <span class="name">e</span> and sets of attribute-value pairs <span class="name">attrs1</span> and <span class="name">attrs2</span>,
-such that <span class="name">wasGeneratedBy(e,pe1,attrs1)</span> and <span class="name">used(pe2,e,attrs2)</span> hold.
+such that <span class="name">wasGeneratedBy(e,a1,attrs1)</span> and <span class="name">used(a2,e,attrs2)</span> hold.
</div>
-<p>The relationship <span class="name">wasInformedBy</span> is not transitive. Indeed, consider the records <span class="name">wasInformedBy(pe2,pe1)</span> and <span class="name">wasInformedBy(pe3,pe2)</span>, the record
-<span class="name">wasInformedBy(pe3,pe1)</span>, may not necessarily hold, as illustrated by the following event line.
+<p>The relationship <span class="name">wasInformedBy</span> is not transitive. Indeed, consider the records <span class="name">wasInformedBy(a2,a1)</span> and <span class="name">wasInformedBy(a3,a2)</span>, the record
+<span class="name">wasInformedBy(a3,a1)</span>, may not necessarily hold, as illustrated by the following event line.
<pre>
- ------ pe1
+ ------ a1
|
e1
|
- ------- pe2
+ ------- a2
|
e2
|
- ----- pe3
+ ----- a3
</pre>
-<p>The end in activity record identified by <span class="name">pe3</span> precedes the start in activity record identified by <span class="name">pe1</span>, while interval for activity record <span class="name">pe2</span> overlaps with each interval for <span class="name">pe1</span> and <span class="name">pe3</span>, allowing information to flow (<span class="name">e1</span> and <span class="name">e2</span>, respectively).</p>
+<p>The end in activity record identified by <span class="name">a3</span> precedes the start in activity record identified by <span class="name">a1</span>, while interval for activity record <span class="name">a2</span> overlaps with each interval for <span class="name">a1</span> and <span class="name">a3</span>, allowing information to flow (<span class="name">e1</span> and <span class="name">e2</span>, respectively).</p>
<p>
A control ordering record, written as
-<span class="name">wasScheduledAfter(pe2,pe1)</span> in PROV-ASN: </p>
+<span class="name">wasScheduledAfter(a2,a1)</span> in PROV-ASN: </p>
<ul>
-<li> refers to an activity record identified by <span class="name">pe2</span>;
-<li> refers to an activity record identified by <span class="name">pe1</span>,
+<li> refers to an activity record identified by <span class="name">a2</span>;
+<li> refers to an activity record identified by <span class="name">a1</span>,
</ul>
-<p>and states control ordering between <span class="name">pe2</span> and <span class="name">pe1</span>, specified as follows.</p>
-
-<div class='constraint' id='wasScheduledAfter'>Given two activity records identified by <span class="name">pe1</span> and <span class="name">pe2</span>,
- the record <span class="name">wasScheduledAfter(pe2,pe1)</span>
+<p>and states control ordering between <span class="name">a2</span> and <span class="name">a1</span>, specified as follows.</p>
+
+<div class='constraint' id='wasScheduledAfter'>Given two activity records identified by <span class="name">a1</span> and <span class="name">a2</span>,
+ the record <span class="name">wasScheduledAfter(a2,a1)</span>
holds, <span class='conditional'>if and only if</span>
there are two entity records identified by <span class="name">e1</span> and <span class="name">e2</span>,
-such that <span class="name">wasControlledBy(pe1,e1,[prov:role="end"])</span> and <span class="name">wasControlledBy(pe2,e2,[prov:role="start"])</span> and <span class="name">wasDerivedFrom(e2,e1)</span>.
+such that <span class="name">wasControlledBy(a1,e1,[prov:role="end"])</span> and <span class="name">wasControlledBy(a2,e2,[prov:role="start"])</span> and <span class="name">wasDerivedFrom(e2,e1)</span>.
</div>
-<p>This definition assumes that the activities represented by activity records identified by <span class="name">pe1</span> and <span class="name">pe2</span> are controlled by some agents (with identifiers <span class="name">e1</span> and <span class="name">e2</span>), where the first agent terminates (control attribute <span class="name">[prov:role="end")</span>) the first activity, and the second agents initiates (control attribute <span class="name">[prov:role="start")</span>) the second activity. The second agent being "derived" from the first enforces temporal ordering. </p>
+<p>This definition assumes that the activities represented by activity records identified by <span class="name">a1</span> and <span class="name">a2</span> are controlled by some agents (with identifiers <span class="name">e1</span> and <span class="name">e2</span>), where the first agent terminates (control attribute <span class="name">[prov:role="end")</span>) the first activity, and the second agents initiates (control attribute <span class="name">[prov:role="start")</span>) the second activity. The second agent being "derived" from the first enforces temporal ordering. </p>
<p>
-In the following assertions, we find two activity records, identified by <span class="name">pe1</span> and <span class="name">pe2</span>, representing two activities, which took place on two separate hosts.</p>
+In the following assertions, we find two activity records, identified by <span class="name">a1</span> and <span class="name">a2</span>, representing two activities, which took place on two separate hosts.</p>
<pre class="example">
-activity(pe1,long-workflow,t1,t2,[host="server1.example.org"])
-activity(pe2,long-workflow,t3,t4,[host="server2.example.org"])
+activity(a1,long-workflow,t1,t2,[host="server1.example.org"])
+activity(a2,long-workflow,t3,t4,[host="server2.example.org"])
entity(e1,[prov:type="scheduler",state=1])
entity(e2,[prov:type="scheduler",state=2])
-wasControlledBy(pe1,e1,[prov:role="end"])
-wasControlledBy(pe2,e2,[prov:role="start"])
+wasControlledBy(a1,e1,[prov:role="end"])
+wasControlledBy(a2,e2,[prov:role="start"])
wasDerivedFrom(e2,e1)
-wasScheduledAfter(pe2,pe1)
+wasScheduledAfter(a2,a1)
</pre>
-<p>The one identified by <span class="name">pe2</span> is said to be
-scheduled after the one identified by <span class="name">pe1</span>
-because the scheduler terminated the activity (represented by activity identified by <span class="name">pe1</span>) to relocate it
+<p>The one identified by <span class="name">a2</span> is said to be
+scheduled after the one identified by <span class="name">a1</span>
+because the scheduler terminated the activity (represented by activity identified by <span class="name">a1</span>) to relocate it
to the new host.
</p>
@@ -2864,6 +2864,7 @@
<section class="appendix">
<h2>Changes Since Previous Version</h2>
<ul>
+<li>11/17/11: Simplified hasAnnotation mechanism, now requiring to-be-annotated record to had id.</li>
<li>11/17/11: Renamed annotation into note.</li>
<li>11/17/11: Introduced wasStartedBy, wasEndedBy, and actedOnBehalfOf.</li>
<li>11/16/11: New version of agent/wasAssociatedWith.</li>