added prov:other element and prov:Other complexType for non-PROV elements that are not PROV attributes
authorStephan Zednik <zednis@rpi.edu>
Thu, 04 Apr 2013 02:41:39 -0600
changeset 6041 df2c1edaa842
parent 6040 24f3e6abc5e6
child 6042 9958d71b8bed
added prov:other element and prov:Other complexType for non-PROV elements that are not PROV attributes
xml/schema/prov-core.xsd
--- a/xml/schema/prov-core.xsd	Thu Apr 04 02:00:42 2013 -0600
+++ b/xml/schema/prov-core.xsd	Thu Apr 04 02:41:39 2013 -0600
@@ -261,8 +261,6 @@
 
   <!-- Component 4 -->
 
-  <!-- Is there a way to have this still extend prov:Entity? -->
-
   <xs:complexType name="Bundle">
     <xs:complexContent>
       <xs:extension base="prov:Entity">
@@ -270,10 +268,39 @@
     </xs:complexContent>
   </xs:complexType>
 
+  <!-- bundle container and allowable PROV elements -->
+
   <xs:complexType name="BundleConstructor">
 	<xs:sequence maxOccurs="unbounded">
-		<xs:group ref="prov:documentElements"/>
-		<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
+	  <xs:element ref="prov:entity" minOccurs="0"/>
+      <xs:element ref="prov:activity" minOccurs="0"/>
+      <xs:element ref="prov:wasGeneratedBy" minOccurs="0"/>
+      <xs:element ref="prov:used" minOccurs="0"/>
+      <xs:element ref="prov:wasInformedBy" minOccurs="0"/>
+      <xs:element ref="prov:wasStartedBy" minOccurs="0"/>
+      <xs:element ref="prov:wasEndedBy" minOccurs="0"/>
+      <xs:element ref="prov:wasInvalidatedBy" minOccurs="0"/>
+      <xs:element ref="prov:wasDerivedFrom" minOccurs="0"/>
+      <xs:element ref="prov:wasRevisionOf" minOccurs="0"/>
+      <xs:element ref="prov:wasQuotedFrom" minOccurs="0"/>
+      <xs:element ref="prov:hadPrimarySource" minOccurs="0"/>
+      <xs:element ref="prov:agent" minOccurs="0"/>
+      <xs:element ref="prov:person" minOccurs="0"/>
+      <xs:element ref="prov:organization" minOccurs="0"/>
+      <xs:element ref="prov:softwareAgent" minOccurs="0"/>
+      <xs:element ref="prov:wasAttributedTo" minOccurs="0"/>
+      <xs:element ref="prov:wasAssociatedWith" minOccurs="0"/>
+      <xs:element ref="prov:actedOnBehalfOf" minOccurs="0"/>
+      <xs:element ref="prov:wasInfluencedBy" minOccurs="0"/>
+      <xs:element ref="prov:bundle" minOccurs="0"/>
+      <xs:element ref="prov:specializationOf" minOccurs="0"/>
+      <xs:element ref="prov:alternateOf" minOccurs="0"/>
+      <xs:element ref="prov:collection" minOccurs="0"/>
+      <xs:element ref="prov:emptyCollection" minOccurs="0"/>
+      <xs:element ref="prov:hadMember" minOccurs="0"/>
+      <xs:element ref="prov:plan" minOccurs="0"/>
+      <xs:element ref="prov:other" minOccurs="0"/>
+      <xs:element ref="prov:internalElement" minOccurs="0"/>
 	</xs:sequence>
 	<xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -401,52 +428,57 @@
 
   <xs:element name="plan"                 type="prov:Plan"/>
 
-  <!-- document elements -->
-
-  <xs:group name="documentElements">
-    <xs:sequence>
-        <xs:element ref="prov:entity" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:activity" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:wasGeneratedBy" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:used" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:wasInformedBy" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:wasStartedBy" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:wasEndedBy" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:wasInvalidatedBy" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:wasDerivedFrom" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:wasRevisionOf" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:wasQuotedFrom" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:hadPrimarySource" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:agent" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:person" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:organization" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:softwareAgent" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:wasAttributedTo" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:wasAssociatedWith" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:actedOnBehalfOf" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:wasInfluencedBy" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:bundle" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:specializationOf" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:alternateOf" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:collection" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:emptyCollection" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:hadMember" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:plan" minOccurs="0" maxOccurs="unbounded"/>
-        <xs:element ref="prov:internalElement" minOccurs="0" maxOccurs="unbounded" />
-    </xs:sequence>
-  </xs:group>
+  <!-- document container and allowable PROV elements -->
 
   <xs:element name="document" type="prov:Document" />
+
   <xs:complexType name="Document">
     <xs:sequence maxOccurs="unbounded">
-        <xs:group ref="prov:documentElements" minOccurs="0"/>
-		<xs:element name="bundleContent" type="prov:BundleConstructor" minOccurs="0"/>
-        <xs:any namespace="##other" processContents="lax" minOccurs="0" />
+	  <xs:element ref="prov:entity" minOccurs="0"/>
+      <xs:element ref="prov:activity" minOccurs="0"/>
+      <xs:element ref="prov:wasGeneratedBy" minOccurs="0"/>
+      <xs:element ref="prov:used" minOccurs="0"/>
+      <xs:element ref="prov:wasInformedBy" minOccurs="0"/>
+      <xs:element ref="prov:wasStartedBy" minOccurs="0"/>
+      <xs:element ref="prov:wasEndedBy" minOccurs="0"/>
+      <xs:element ref="prov:wasInvalidatedBy" minOccurs="0"/>
+      <xs:element ref="prov:wasDerivedFrom" minOccurs="0"/>
+      <xs:element ref="prov:wasRevisionOf" minOccurs="0"/>
+      <xs:element ref="prov:wasQuotedFrom" minOccurs="0"/>
+      <xs:element ref="prov:hadPrimarySource" minOccurs="0"/>
+      <xs:element ref="prov:agent" minOccurs="0"/>
+      <xs:element ref="prov:person" minOccurs="0"/>
+      <xs:element ref="prov:organization" minOccurs="0"/>
+      <xs:element ref="prov:softwareAgent" minOccurs="0"/>
+      <xs:element ref="prov:wasAttributedTo" minOccurs="0"/>
+      <xs:element ref="prov:wasAssociatedWith" minOccurs="0"/>
+      <xs:element ref="prov:actedOnBehalfOf" minOccurs="0"/>
+      <xs:element ref="prov:wasInfluencedBy" minOccurs="0"/>
+      <xs:element ref="prov:bundle" minOccurs="0"/>
+      <xs:element ref="prov:specializationOf" minOccurs="0"/>
+      <xs:element ref="prov:alternateOf" minOccurs="0"/>
+      <xs:element ref="prov:collection" minOccurs="0"/>
+      <xs:element ref="prov:emptyCollection" minOccurs="0"/>
+      <xs:element ref="prov:hadMember" minOccurs="0"/>
+      <xs:element ref="prov:plan" minOccurs="0"/>
+      <xs:element ref="prov:other" minOccurs="0"/>
+      <xs:element ref="prov:internalElement" minOccurs="0"/>
+      <xs:element name="bundleContent" type="prov:BundleConstructor" minOccurs="0"/>
     </xs:sequence>
   </xs:complexType>
 
-  <!-- abstract element used by extensions -->
+  <!-- abstract element used by PROV extensions -->
 
   <xs:element name="internalElement" abstract="true" />
 
+  <!-- 'others' element used to contain non-PROV elements -->
+
+  <xs:element name="other" type="prov:Other"/>
+
+  <xs:complexType name="Other">
+	<xs:sequence>
+		<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+	</xs:sequence>
+  </xs:complexType>
+
 </xs:schema>