prov-n type inference rules
authorPaolo Missier <pmissier@acm.org>
Thu, 19 Jul 2012 13:35:40 +0100
changeset 4166 088e0ad0d415
parent 4165 c18a209e8a00
child 4167 03bdb4938006
prov-n type inference rules
model/prov-constraints.html
--- a/model/prov-constraints.html	Thu Jul 19 11:24:28 2012 +0100
+++ b/model/prov-constraints.html	Thu Jul 19 13:35:40 2012 +0100
@@ -1407,10 +1407,198 @@
 
 </section>
 
+
+<section id="type-rules">
+<h2>Type inference rules</h2>
+
+The rules in this section establish the existence of entities, activities, and agents from their use within expressions.
+
+<div class='inference' id="generation-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>wasGeneratedBy(gen;e,a,t,attrs)</span>  
+<span class='conditional'>THEN</span> 
+<span class="name">entity(e,[])</span>, 
+ <span class="name">activity(a, -,-,[])</span> 
+both hold.
+</p>
+    </div>
+
+
+<div class='inference' id="usage-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>used(u;a,e,t,attrs)</span>  
+<span class='conditional'>THEN</span> 
+<span class="name">entity(e,[])</span>, 
+ <span class="name">activity(a, -,-,[])</span> 
+both hold.
+</p>
+    </div>
+
+
+<div class='inference' id="communication-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>wasInformedBy(id;a2,a1,attrs)</span>  
+<span class='conditional'>THEN</span> 
+ <span class="name">activity(a1, -,-,[])</span>,
+ <span class="name">activity(a2, -,-,[])</span> 
+ both hold.
+</p>
+    </div>
+
+
+<div class='inference' id="start-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>wasStartedBy(id;a2,e,a1,t,attrs)</span>  
+<span class='conditional'>THEN</span> 
+ <span class="name">activity(a1, -,-,[])</span>,
+ <span class="name">activity(a2, -,-,[])</span>,
+<span class="name">entity(e,[])</span> 
+ hold.
+</p>
+    </div>
+
+
+<div class='inference' id="end-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>wasEndedBy(id;a2,e,a1,t,attrs)</span>  
+<span class='conditional'>THEN</span> 
+ <span class="name">activity(a1, -,-,[])</span>,
+ <span class="name">activity(a2, -,-,[])</span>,
+<span class="name">entity(e,[])</span> 
+ hold.
+</p>
+    </div>
+
+
+<div class='inference' id="end-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>wasInvalidatedBy(id;e,a,t,attrs)</span>  
+<span class='conditional'>THEN</span> 
+ <span class="name">activity(a, -,-,[])</span>,
+<span class="name">entity(e,[])</span> 
+ hold.
+</p>
+    </div>
+
+
+
+<div class='inference' id="derivation-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>wasDerivedFrom(id; e2, e1, a, g2, u1, attrs)</span>  
+<span class='conditional'>THEN</span> 
+<span class="name">entity(e1,[])</span>, 
+<span class="name">entity(e2,[])</span>, 
+ <span class="name">activity(a, -,-,[])</span> 
+ hold.
+</p>
+    </div>
+
+
+<div class='inference' id="attribution-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>wasAttributedTo(id;e,ag,attr)</span>  
+<span class='conditional'>THEN</span> 
+<span class="name">entity(e,[])</span>, 
+<span class="name">agent(ag,[])</span>
+ hold.
+</p>
+    </div>
+
+
+<div class='inference' id="association-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>wasAssociatedWith(id;a,ag,pl,attrs)</span>  
+<span class='conditional'>THEN</span> 
+ <span class="name">activity(a, -,-,[])</span>, 
+<span class="name">agent(ag,[])</span>,
+<span class="name">entity(pl,[prov:type='prov:Plan'])</span>
+ hold.
+</p>
+    </div>
+
+
+<div class='inference' id="delegation-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>actedOnBehalfOf(id;ag2,ag1,a,attrs)</span>  
+<span class='conditional'>THEN</span> 
+ <span class="name">activity(a, -,-,[])</span>, 
+<span class="name">agent(ag1,[])</span>,
+<span class="name">agent(ag2,[])</span>
+ hold.
+</p>
+    </div>
+
+
+
+<div class='inference' id="alternate-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>alternateOf(alt1, alt2)</span>  
+<span class='conditional'>THEN</span> 
+<span class="name">entity(alt1,[])</span>, 
+<span class="name">entity(alt2,[])</span> 
+ hold.
+</p>
+    </div>
+
+
+<div class='inference' id="specialization-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>specializationOf(infra, supra)</span>  
+<span class='conditional'>THEN</span> 
+<span class="name">entity(infra,[])</span>, 
+<span class="name">entity(supra,[])</span> 
+ hold.
+</p>
+    </div>
+
+
+<div class='inference' id="mention-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>mentionOf(infra, supra,bundle)</span>  
+<span class='conditional'>THEN</span> 
+<span class="name">entity(infra,[])</span>, 
+<span class="name">entity(supra,[])</span> 
+ hold.
+</p>
+    </div>
+
+
+<div class="note">not sure about this one below: the type could as well be EmptyCollection</div>
+<div class='inference' id="membership-type-inference">
+<p>
+<span class='conditional'>IF</span> 
+   <span class='name'>hadMember(c, e)</span>  
+<span class='conditional'>THEN</span> 
+<span class="name">entity(c,[prov:type="prov:Collection"])</span>, 
+<span class="name">entity(e,[])</span> 
+ hold.
+</p>
+    </div>
+
+
+
+
+
 </section>
 
 
 
+</section>
+
+
 
 <section id="constraints">
 <h2>Constraints</h2>