http://www.w3.org/2011/prov/wiki/index.php?title=Eg-34-us-supreme-court-membership&oldid=7905#PROV-O_changes_made.2C_inspired_by_this_example
authorTim L <lebot@rpi.edu>
Tue, 05 Jun 2012 17:36:42 -0400
changeset 3185 59a671f5b55e
parent 3184 4b1ec5dda4e5
child 3186 9701e66d217f
http://www.w3.org/2011/prov/wiki/index.php?title=Eg-34-us-supreme-court-membership&oldid=7905#PROV-O_changes_made.2C_inspired_by_this_example

Added class prov:Collection, as subclass of Entity
Added property prov:hadMember domain prov:Collection range prov:Entity.
This supports both generic "simple set" prov:Collection and prov:Dictionary.
Made KeyValuePair a subclass of Entity
this follows from Set Collection :c prov:hadMember :my_member and the definition of Collection "A collection is an entity that has some members. The members are themselves entities").
Renamed prov:membership to prov:qualifiedMembership to follow qualification pattern naming.
prov:Membership became subclass of prov:EntityInvolvement (though, it could become subclass of prov:KeyValuePairInvolvement, itself a subclass of prov:EntityInvolvement. But we'll try to simplify and reuse prov:entity)
prov:member renamed to prov:pair and became a subproperty of prov:involvee
Added property chain (qualifiedMembership o prov:pair) rdfs:subClassOf prov:hadMember
Added prov:removed domain prov:Removal range prov:KeyValuePair
Removed prov:CompleteDictionary from DM and PROV-O.

[edit] Related issues

http://www.w3.org/2011/prov/track/issues/374 (Tim) indirection for Dictionary members

http://www.w3.org/2011/prov/track/issues/391 (Jun) Reflecting Membership in the Collection Component
ontology/ProvenanceOntology.owl
ontology/prov.ttl
--- a/ontology/ProvenanceOntology.owl	Tue Jun 05 21:13:49 2012 +0100
+++ b/ontology/ProvenanceOntology.owl	Tue Jun 05 17:36:42 2012 -0400
@@ -54,12 +54,12 @@
     <owl:AnnotationProperty rdf:about="http://www.w3.org/ns/prov#definition">
         <rdfs:comment xml:lang="en">A definition quoted from PROV-DM or PROV-CONSTRAINTS that describes the concept expressed with this OWL term.</rdfs:comment>
     </owl:AnnotationProperty>
+    <owl:AnnotationProperty rdf:about="&rdfs;label">
+        <rdfs:comment xml:lang="en"></rdfs:comment>
+    </owl:AnnotationProperty>
     <owl:AnnotationProperty rdf:about="http://www.w3.org/ns/prov#editorialNote">
         <rdfs:comment xml:lang="en">A note by the OWL development team about how this term expresses the PROV-DM concept, or how it should be used in context of semantic web or linked data.</rdfs:comment>
     </owl:AnnotationProperty>
-    <owl:AnnotationProperty rdf:about="&rdfs;label">
-        <rdfs:comment xml:lang="en"></rdfs:comment>
-    </owl:AnnotationProperty>
     <owl:AnnotationProperty rdf:about="http://www.w3.org/ns/prov#inverse">
         <rdfs:comment xml:lang="en">PROV-O does not define all property inverses. The directionalities defined in PROV-O should be given preference over those not defined. However, if users wish to name the inverse of a PROV-O property, the local name given by prov:inverse should be used.</rdfs:comment>
         <rdfs:seeAlso rdf:resource="http://www.w3.org/TR/prov-o/#names-of-inverse-properties"/>
@@ -67,10 +67,10 @@
     <owl:AnnotationProperty rdf:about="&rdfs;comment">
         <rdfs:comment xml:lang="en"></rdfs:comment>
     </owl:AnnotationProperty>
+    <owl:AnnotationProperty rdf:about="&owl;versionInfo"/>
     <owl:AnnotationProperty rdf:about="&rdfs;seeAlso">
         <rdfs:comment xml:lang="en"></rdfs:comment>
     </owl:AnnotationProperty>
-    <owl:AnnotationProperty rdf:about="&owl;versionInfo"/>
     <owl:AnnotationProperty rdf:about="http://www.w3.org/ns/prov#category">
         <rdfs:comment xml:lang="en">Classify prov-o terms into three categories, including &#39;starting-point&#39;, &#39;qualifed&#39;, and &#39;extended&#39;. This classification is used by the prov-o html document to gently introduce prov-o terms to its users. </rdfs:comment>
     </owl:AnnotationProperty>
@@ -359,6 +359,29 @@
     
 
 
+    <!-- http://www.w3.org/ns/prov#hadMember -->
+
+    <owl:ObjectProperty rdf:about="http://www.w3.org/ns/prov#hadMember">
+        <component>collections</component>
+        <prov-dm>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-collection</prov-dm>
+        <category>collections</category>
+        <rdfs:domain rdf:resource="http://www.w3.org/ns/prov#Collection"/>
+        <rdfs:range rdf:resource="http://www.w3.org/ns/prov#Entity"/>
+        <owl:propertyChainAxiom rdf:parseType="Collection">
+            <rdf:Description rdf:about="http://www.w3.org/ns/prov#qualifiedMembership"/>
+            <rdf:Description rdf:about="http://www.w3.org/ns/prov#pair"/>
+        </owl:propertyChainAxiom>
+    </owl:ObjectProperty>
+    <owl:Axiom>
+        <prov-dm>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-collection</prov-dm>
+        <rdfs:comment xml:lang="en">A collection is an entity that provides a structure to some constituents, which are themselves entities. These constituents are said to be member of the collections.</rdfs:comment>
+        <owl:annotatedProperty rdf:resource="&rdfs;range"/>
+        <owl:annotatedTarget rdf:resource="http://www.w3.org/ns/prov#Entity"/>
+        <owl:annotatedSource rdf:resource="http://www.w3.org/ns/prov#hadMember"/>
+    </owl:Axiom>
+    
+
+
     <!-- http://www.w3.org/ns/prov#hadOriginalSource -->
 
     <owl:ObjectProperty rdf:about="http://www.w3.org/ns/prov#hadOriginalSource">
@@ -517,28 +540,16 @@
     
 
 
-    <!-- http://www.w3.org/ns/prov#member -->
+    <!-- http://www.w3.org/ns/prov#pair -->
 
-    <owl:ObjectProperty rdf:about="http://www.w3.org/ns/prov#member">
+    <owl:ObjectProperty rdf:about="http://www.w3.org/ns/prov#pair">
         <component>collections</component>
+        <category>collections</category>
         <rdfs:comment xml:lang="en">The key-value pair was part of the membership. A membership can have multiple members.</rdfs:comment>
         <inverse>inMembership</inverse>
-        <category>collections</category>
         <rdfs:range rdf:resource="http://www.w3.org/ns/prov#KeyValuePair"/>
         <rdfs:domain rdf:resource="http://www.w3.org/ns/prov#Membership"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.w3.org/ns/prov#membership -->
-
-    <owl:ObjectProperty rdf:about="http://www.w3.org/ns/prov#membership">
-        <inverse>membershipOf</inverse>
-        <category>collections</category>
-        <rdfs:comment xml:lang="en">The collection included the specified membership of keys-values.</rdfs:comment>
-        <component>collections</component>
-        <rdfs:domain rdf:resource="http://www.w3.org/ns/prov#Dictionary"/>
-        <rdfs:range rdf:resource="http://www.w3.org/ns/prov#Membership"/>
+        <rdfs:subPropertyOf rdf:resource="http://www.w3.org/ns/prov#involvee"/>
     </owl:ObjectProperty>
     
 
@@ -700,6 +711,21 @@
     
 
 
+    <!-- http://www.w3.org/ns/prov#qualifiedMembership -->
+
+    <owl:ObjectProperty rdf:about="http://www.w3.org/ns/prov#qualifiedMembership">
+        <rdfs:label xml:lang="en">qualifiedMembership</rdfs:label>
+        <category>collections</category>
+        <editorialNote xml:lang="en">This property is NOT inverse functional, since the membership of many distinct KeyValuePairs can be qualified using a single instance of prov:Membership.</editorialNote>
+        <component>collections</component>
+        <rdfs:comment xml:lang="en">The collection included the specified membership of keys-values.</rdfs:comment>
+        <inverse>membershipOf</inverse>
+        <rdfs:domain rdf:resource="http://www.w3.org/ns/prov#Dictionary"/>
+        <rdfs:range rdf:resource="http://www.w3.org/ns/prov#Membership"/>
+    </owl:ObjectProperty>
+    
+
+
     <!-- http://www.w3.org/ns/prov#qualifiedQuotation -->
 
     <owl:ObjectProperty rdf:about="http://www.w3.org/ns/prov#qualifiedQuotation">
@@ -811,6 +837,19 @@
     
 
 
+    <!-- http://www.w3.org/ns/prov#removed -->
+
+    <owl:ObjectProperty rdf:about="http://www.w3.org/ns/prov#removed">
+        <rdfs:label xml:lang="en">removed</rdfs:label>
+        <component>collections</component>
+        <prov-dm>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-dictionary-removal</prov-dm>
+        <category>collections</category>
+        <rdfs:range rdf:resource="http://www.w3.org/ns/prov#KeyValuePair"/>
+        <rdfs:domain rdf:resource="http://www.w3.org/ns/prov#Removal"/>
+    </owl:ObjectProperty>
+    
+
+
     <!-- http://www.w3.org/ns/prov#specializationOf -->
 
     <owl:ObjectProperty rdf:about="http://www.w3.org/ns/prov#specializationOf">
@@ -916,8 +955,8 @@
     </owl:ObjectProperty>
     <owl:Axiom>
         <prov-dm-constraints>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-constraints.html#traceability-inference</prov-dm-constraints>
+        <definition>IF wasAttributedTo(e2,ag1,aAttr) holds, THEN tracedTo(e2,ag1) also holds. </definition>
         <rdfs:comment>Attribution is a particular case of trace (see http://www.w3.org/TR/prov-dm/#concept-trace), in the sense that it links an entity to the agent that ascribed it.</rdfs:comment>
-        <definition>IF wasAttributedTo(e2,ag1,aAttr) holds, THEN tracedTo(e2,ag1) also holds. </definition>
         <owl:annotatedProperty rdf:resource="&rdfs;subPropertyOf"/>
         <owl:annotatedTarget rdf:resource="http://www.w3.org/ns/prov#tracedTo"/>
         <owl:annotatedSource rdf:resource="http://www.w3.org/ns/prov#wasAttributedTo"/>
@@ -1399,6 +1438,20 @@
     
 
 
+    <!-- http://www.w3.org/ns/prov#Collection -->
+
+    <owl:Class rdf:about="http://www.w3.org/ns/prov#Collection">
+        <rdfs:label xml:lang="en">Collection</rdfs:label>
+        <rdfs:subClassOf rdf:resource="http://www.w3.org/ns/prov#Entity"/>
+        <category>collections</category>
+        <component>collections</component>
+        <definition xml:lang="en">A collection is an entity that provides a structure to some constituents, which are themselves entities. These constituents are said to be member of the collections.</definition>
+        <prov-dm>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-collection</prov-dm>
+        <editorialNote xml:lang="en">Note that although prov:Collection is defined, few other constructs in PROV-DM and PROV-O elaborate what it is or how to use it. Instead, they both elaborate one of its specializations, prov:Dictionary. Although some of the term names relating to prov:Dictionary may seem that they should also apply to prov:Collection, they are specific to prov:Dictionary. It is left to extensions of PROV-O to provide the terms relating to the insertion and removal of members of the more general class prov:Collection.</editorialNote>
+    </owl:Class>
+    
+
+
     <!-- http://www.w3.org/ns/prov#Communication -->
 
     <owl:Class rdf:about="http://www.w3.org/ns/prov#Communication">
@@ -1416,18 +1469,6 @@
     
 
 
-    <!-- http://www.w3.org/ns/prov#CompleteMembership -->
-
-    <owl:Class rdf:about="http://www.w3.org/ns/prov#CompleteMembership">
-        <rdfs:label xml:lang="en">CompleteMembership</rdfs:label>
-        <rdfs:subClassOf rdf:resource="http://www.w3.org/ns/prov#Membership"/>
-        <category>collections</category>
-        <rdfs:comment xml:lang="en">Indicates that no other member belongs to the collection, that is all the prov:member stated for this CompleteMembership constitutes all members of the collection.</rdfs:comment>
-        <component xml:lang="en">collections</component>
-    </owl:Class>
-    
-
-
     <!-- http://www.w3.org/ns/prov#Delegation -->
 
     <owl:Class rdf:about="http://www.w3.org/ns/prov#Delegation">
@@ -1466,16 +1507,15 @@
 
     <owl:Class rdf:about="http://www.w3.org/ns/prov#Dictionary">
         <rdfs:label xml:lang="en">Dictionary</rdfs:label>
-        <rdfs:subClassOf rdf:resource="http://www.w3.org/ns/prov#Entity"/>
-        <prov-dm>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#section-types-entities-agents</prov-dm>
-        <prov-n>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-n.html#component5</prov-n>
-        <rdfs:comment xml:lang="en">This concept allows for the provenance of the dictionary, but also of its constituents to be expressed. Such a notion of dictionary corresponds to a wide variety of concrete data structures, such as a maps or associative arrays.</rdfs:comment>
-        <prov-dm>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#concept-collection</prov-dm>
-        <prov-dm>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-collection</prov-dm>
-        <definition>A dictionary is an entity that provides a structure to some constituents, which are themselves entities. These constituents are said to be member of the dictionary.</definition>
-        <prov-dm-constraints>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm-constraints.html#term-Collection</prov-dm-constraints>
+        <rdfs:subClassOf rdf:resource="http://www.w3.org/ns/prov#Collection"/>
+        <prov-n>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-n.html#component6</prov-n>
+        <prov-dm>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-dictionary</prov-dm>
+        <prov-dm-constraints>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-constraints.html#collection-constraints</prov-dm-constraints>
+        <definition xml:lang="en">A dictionary is a collection whose members are indexed by keys.</definition>
         <rdfs:comment xml:lang="en">A given dictionary forms a given structure for its members. A different structure (obtained either by insertion or removal of members) constitutes a different dictionary.</rdfs:comment>
         <component>collections</component>
+        <rdfs:comment xml:lang="en">PROV-DM defines a specific type of collection, a dictionary...</rdfs:comment>
+        <rdfs:comment xml:lang="en">This concept allows for the provenance of the dictionary, but also of its constituents to be expressed. Such a notion of dictionary corresponds to a wide variety of concrete data structures, such as a maps or associative arrays.</rdfs:comment>
         <category>collections</category>
     </owl:Class>
     
@@ -1495,10 +1535,13 @@
     <!-- http://www.w3.org/ns/prov#EmptyDictionary -->
 
     <owl:Class rdf:about="http://www.w3.org/ns/prov#EmptyDictionary">
+        <rdfs:label xml:lang="en">Dictionary</rdfs:label>
         <rdfs:subClassOf rdf:resource="http://www.w3.org/ns/prov#Dictionary"/>
         <component>collections</component>
         <category>collections</category>
         <rdfs:comment xml:lang="en">An empty dictionary.</rdfs:comment>
+        <prov-dm>http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-dictionary</prov-dm>
+        <definition xml:lang="en">An empty dictionary is a dictionary without member.</definition>
     </owl:Class>
     
 
@@ -1637,6 +1680,7 @@
     <!-- http://www.w3.org/ns/prov#KeyValuePair -->
 
     <owl:Class rdf:about="http://www.w3.org/ns/prov#KeyValuePair">
+        <rdfs:subClassOf rdf:resource="http://www.w3.org/ns/prov#Entity"/>
         <rdfs:comment xml:lang="en">A key-value pair. Part of a prov:Dictionary through prov:Membership. The key is any RDF Literal, the value is a prov:Entity.</rdfs:comment>
         <category>collections</category>
     </owl:Class>
@@ -1661,6 +1705,7 @@
     <!-- http://www.w3.org/ns/prov#Membership -->
 
     <owl:Class rdf:about="http://www.w3.org/ns/prov#Membership">
+        <rdfs:subClassOf rdf:resource="http://www.w3.org/ns/prov#EntityInvolvement"/>
         <rdfs:comment xml:lang="en">Described members of a collection, in the form of key-value pairs. The Membership resource can also be annotated with attributes.</rdfs:comment>
         <category>collections</category>
         <component>collections</component>
@@ -1720,6 +1765,7 @@
     <!-- http://www.w3.org/ns/prov#ProvenanceService -->
 
     <owl:Class rdf:about="http://www.w3.org/ns/prov#ProvenanceService">
+        <rdfs:subClassOf rdf:resource="http://www.w3.org/ns/prov#SoftwareAgent"/>
         <category>access-and-query</category>
         <rdfs:comment>Class for a service described by a provenance service description.</rdfs:comment>
         <prov-aq>http://dvcs.w3.org/hg/prov/raw-file/tip/paq/prov-aq.html#todo</prov-aq>
--- a/ontology/prov.ttl	Tue Jun 05 21:13:49 2012 +0100
+++ b/ontology/prov.ttl	Tue Jun 05 17:36:42 2012 -0400
@@ -136,6 +136,16 @@
     :prov-dm-constraints "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm-constraints.html#account-constraints" ;
     :prov-n "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-n.html#account" .
 
+:Collection
+    a owl:Class ;
+    rdfs:label "Collection"@en ;
+    rdfs:subClassOf :Entity ;
+    :category "collections" ;
+    :component "collections" ;
+    :definition "A collection is an entity that provides a structure to some constituents, which are themselves entities. These constituents are said to be member of the collections."@en ;
+    :editorialNote "Note that although prov:Collection is defined, few other constructs in PROV-DM and PROV-O elaborate what it is or how to use it. Instead, they both elaborate one of its specializations, prov:Dictionary. Although some of the term names relating to prov:Dictionary may seem that they should also apply to prov:Collection, they are specific to prov:Dictionary. It is left to extensions of PROV-O to provide the terms relating to the insertion and removal of members of the more general class prov:Collection."@en ;
+    :prov-dm "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-collection" .
+
 :Communication
     a owl:Class ;
     rdfs:comment "An instance of prov:Communication provides additional descriptions about the binary prov:wasInformedBy relation from an informed prov:Activity to the prov:Activity that informed it. For example, :you_jumping_off_bridge prov:wasInformedBy :everyone_else_jumping_off_bridge; prov:qualifiedCommunication [ a prov:Communication; prov:entity :everyone_else_jumping_off_bridge; :foo :bar ]."@en ;
@@ -149,14 +159,6 @@
     :prov-n "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-n.html#expression-wasInformedBy" ;
     :unqualifiedForm :wasInformedBy .
 
-:CompleteMembership
-    a owl:Class ;
-    rdfs:comment "Indicates that no other member belongs to the collection, that is all the prov:member stated for this CompleteMembership constitutes all members of the collection."@en ;
-    rdfs:label "CompleteMembership"@en ;
-    rdfs:subClassOf :Membership ;
-    :category "collections" ;
-    :component "collections"@en .
-
 :Delegation
     a owl:Class ;
     rdfs:comment "An instance of prov:Delegation provides additional descriptions about the binary prov:actedOnBehalfOf relation from a performing prov:Agent to some prov:Agent for whom it was performed. For example, :mixing prov:wasAssociatedWith :toddler . :toddler prov:actedOnBehalfOf :mother; prov:qualifiedDelegation [ a prov:Delegation; prov:entity :mother; :foo :bar ]."@en ;
@@ -185,15 +187,15 @@
 
 :Dictionary
     a owl:Class ;
-    rdfs:comment "A given dictionary forms a given structure for its members. A different structure (obtained either by insertion or removal of members) constitutes a different dictionary."@en, "This concept allows for the provenance of the dictionary, but also of its constituents to be expressed. Such a notion of dictionary corresponds to a wide variety of concrete data structures, such as a maps or associative arrays."@en ;
+    rdfs:comment "A given dictionary forms a given structure for its members. A different structure (obtained either by insertion or removal of members) constitutes a different dictionary."@en, "PROV-DM defines a specific type of collection, a dictionary..."@en, "This concept allows for the provenance of the dictionary, but also of its constituents to be expressed. Such a notion of dictionary corresponds to a wide variety of concrete data structures, such as a maps or associative arrays."@en ;
     rdfs:label "Dictionary"@en ;
-    rdfs:subClassOf :Entity ;
+    rdfs:subClassOf :Collection ;
     :category "collections" ;
     :component "collections" ;
-    :definition "A dictionary is an entity that provides a structure to some constituents, which are themselves entities. These constituents are said to be member of the dictionary." ;
-    :prov-dm "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#concept-collection", "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#section-types-entities-agents", "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-collection" ;
-    :prov-dm-constraints "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm-constraints.html#term-Collection" ;
-    :prov-n "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-n.html#component5" .
+    :definition "A dictionary is a collection whose members are indexed by keys."@en ;
+    :prov-dm "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-dictionary" ;
+    :prov-dm-constraints "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-constraints.html#collection-constraints" ;
+    :prov-n "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-n.html#component6" .
 
 :DictionaryInvolvement
     a owl:Class ;
@@ -205,9 +207,12 @@
 :EmptyDictionary
     a owl:Class ;
     rdfs:comment "An empty dictionary."@en ;
+    rdfs:label "Dictionary"@en ;
     rdfs:subClassOf :Dictionary ;
     :category "collections" ;
-    :component "collections" .
+    :component "collections" ;
+    :definition "An empty dictionary is a dictionary without member."@en ;
+    :prov-dm "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-dictionary" .
 
 :End
     a owl:Class ;
@@ -304,6 +309,7 @@
 :KeyValuePair
     a owl:Class ;
     rdfs:comment "A key-value pair. Part of a prov:Dictionary through prov:Membership. The key is any RDF Literal, the value is a prov:Entity."@en ;
+    rdfs:subClassOf :Entity ;
     :category "collections" .
 
 :Location
@@ -320,6 +326,7 @@
 :Membership
     a owl:Class ;
     rdfs:comment "Described members of a collection, in the form of key-value pairs. The Membership resource can also be annotated with attributes."@en ;
+    rdfs:subClassOf :EntityInvolvement ;
     :category "collections" ;
     :component "collections" ;
     :unqualifiedForm :membership .
@@ -363,6 +370,7 @@
 :ProvenanceService
     a owl:Class ;
     rdfs:comment "Class for a service described by a provenance service description." ;
+    rdfs:subClassOf :SoftwareAgent ;
     :category "access-and-query" ;
     :prov-aq "http://dvcs.w3.org/hg/prov/raw-file/tip/paq/prov-aq.html#todo" .
 
@@ -681,6 +689,17 @@
     :inverse "generatedAsDerivation" ;
     :sharesDefinitionWith :Generation .
 
+:hadMember
+    a owl:ObjectProperty ;
+    rdfs:domain :Collection ;
+    rdfs:range :Entity ;
+    owl:propertyChainAxiom (:qualifiedMembership
+        :pair
+    ) ;
+    :category "collections" ;
+    :component "collections" ;
+    :prov-dm "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-collection" .
+
 :hadOriginalSource
     a owl:ObjectProperty ;
     rdfs:comment "An original source refers to the source material that is closest to the person, information, period, or idea being studied. An original source relation is a particular case of derivation that aims to give credit to the source that originated some information."@en ;
@@ -797,24 +816,16 @@
     :editorsDefinition "The rdf:object of the (binary) prov:involved relation (triple) that this Involvement is qualifying (reifying) for further description (as an n-ary relation)."@en ;
     :inverse "involvement" .
 
-:member
+:pair
     a owl:ObjectProperty ;
     rdfs:comment "The key-value pair was part of the membership. A membership can have multiple members."@en ;
     rdfs:domain :Membership ;
     rdfs:range :KeyValuePair ;
+    rdfs:subPropertyOf :involvee ;
     :category "collections" ;
     :component "collections" ;
     :inverse "inMembership" .
 
-:membership
-    a owl:ObjectProperty ;
-    rdfs:comment "The collection included the specified membership of keys-values."@en ;
-    rdfs:domain :Dictionary ;
-    rdfs:range :Membership ;
-    :category "collections" ;
-    :component "collections" ;
-    :inverse "membershipOf" .
-
 :pairKey
     a owl:DatatypeProperty, owl:FunctionalProperty ;
     rdfs:comment "The key of a KeyValuePair, which is an element of a prov:Dictionary. See also prov:pairValue."@en ;
@@ -975,6 +986,17 @@
     :sharesDefinitionWith :Invalidation ;
     :unqualifiedForm :wasInvalidatedBy .
 
+:qualifiedMembership
+    a owl:ObjectProperty ;
+    rdfs:comment "The collection included the specified membership of keys-values."@en ;
+    rdfs:domain :Dictionary ;
+    rdfs:label "qualifiedMembership"@en ;
+    rdfs:range :Membership ;
+    :category "collections" ;
+    :component "collections" ;
+    :editorialNote "This property is NOT inverse functional, since the membership of many distinct KeyValuePairs can be qualified using a single instance of prov:Membership."@en ;
+    :inverse "membershipOf" .
+
 :qualifiedQuotation
     a owl:InverseFunctionalProperty, owl:ObjectProperty ;
     rdfs:comment "If this Entity prov:wasQuotedFrom Entity :e, then it can qualify how using prov:qualifiedQuotation [ a prov:Quotation;  prov:entity :e; :foo :bar ]."@en ;
@@ -1052,6 +1074,15 @@
     :sharesDefinitionWith :Usage ;
     :unqualifiedForm :used .
 
+:removed
+    a owl:ObjectProperty ;
+    rdfs:domain :Removal ;
+    rdfs:label "removed"@en ;
+    rdfs:range :KeyValuePair ;
+    :category "collections" ;
+    :component "collections" ;
+    :prov-dm "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-dictionary-removal" .
+
 :removedKey
     a owl:DatatypeProperty ;
     rdfs:comment "The key removed in a Removal."@en ;
@@ -1282,6 +1313,14 @@
 
 []
     a owl:Axiom ;
+    rdfs:comment "A collection is an entity that provides a structure to some constituents, which are themselves entities. These constituents are said to be member of the collections."@en ;
+    owl:annotatedProperty rdfs:range ;
+    owl:annotatedSource :hadMember ;
+    owl:annotatedTarget :Entity ;
+    :prov-dm "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html#term-collection" .
+
+[]
+    a owl:Axiom ;
     rdfs:comment "hadOriginalSource property is a particular case of wasDerivedFrom (see http://www.w3.org/TR/prov-dm/#term-original-source) that aims to give credit to the source that originated some information." ;
     owl:annotatedProperty rdfs:subPropertyOf ;
     owl:annotatedSource :hadOriginalSource ;
@@ -1312,6 +1351,13 @@
 
 []
     a owl:Axiom ;
+    rdfs:comment "Insertion is a form of derivation (see http://www.w3.org/TR/prov-dm/#term-dictionary-insertion) that transforms a dictionary into another, by insertion of one or more key-entity pairs. " ;
+    owl:annotatedProperty rdfs:subPropertyOf ;
+    owl:annotatedSource :derivedByInsertionFrom ;
+    owl:annotatedTarget :wasDerivedFrom .
+
+[]
+    a owl:Axiom ;
     rdfs:comment """Revision is a derivation (see http://www.w3.org/TR/prov-dm/#term-Revision). Moreover, according to 
 http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm-constraints.html#term-Revision 23 April 2012 'wasRevisionOf is a strict sub-relation of wasDerivedFrom since two entities e2 and e1 may satisfy wasDerivedFrom(e2,e1) without being a variant of each other.'""" ;
     owl:annotatedProperty rdfs:subPropertyOf ;
@@ -1320,13 +1366,6 @@
 
 []
     a owl:Axiom ;
-    rdfs:comment "Insertion is a form of derivation (see http://www.w3.org/TR/prov-dm/#term-dictionary-insertion) that transforms a dictionary into another, by insertion of one or more key-entity pairs. " ;
-    owl:annotatedProperty rdfs:subPropertyOf ;
-    owl:annotatedSource :derivedByInsertionFrom ;
-    owl:annotatedTarget :wasDerivedFrom .
-
-[]
-    a owl:Axiom ;
     rdfs:comment "Removal is a form of derivation (see http://www.w3.org/TR/prov-dm/#term-dictionary-removal) that transforms a dictionary into another, by removing one or more key-entity pairs. " ;
     owl:annotatedProperty rdfs:subPropertyOf ;
     owl:annotatedSource :derivedByRemovalFrom ;