Remove commonAttributes per ISSUE 558
authorCurt Tilmes <Curt.Tilmes@nasa.gov>
Tue, 18 Sep 2012 11:17:01 -0400
changeset 4476 7c238aba1d07
parent 4475 0adf7261f3ca
child 4477 fd73db6e4572
Remove commonAttributes per ISSUE 558
Revert to explicit listing of valid elements for DM attributes
to limit the allowed attributes within the prov namespace.
xml/schema/prov.xsd
--- a/xml/schema/prov.xsd	Tue Sep 18 10:20:32 2012 -0400
+++ b/xml/schema/prov.xsd	Tue Sep 18 11:17:01 2012 -0400
@@ -31,23 +31,18 @@
   <xs:import namespace="http://www.w3.org/XML/1998/namespace" 
              schemaLocation="http://www.w3.org/2001/xml.xsd"/>
 
-  <xs:group name="commonAttributes">
+  <!-- Component 1 -->
+  
+  <xs:complexType name="Entity">
     <xs:sequence>
       <xs:choice minOccurs="0" maxOccurs="unbounded">
-        <xs:element ref="prov:label"/>
-        <xs:element ref="prov:type"/>
-        <xs:element ref="prov:location"/>
-        <xs:element ref="prov:value"/>
-        <xs:element ref="prov:role"/>
+        <xs:element name="location"/>
+        <xs:element name="value"/>
+        <xs:element name="label"/>
+        <xs:element name="type"/>
         <xs:any namespace="##other"/>
       </xs:choice>
     </xs:sequence>
-  </xs:group>
-
-  <!-- Component 1 -->
-  
-  <xs:complexType name="Entity">
-    <xs:group ref="prov:commonAttributes"/>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>  
 
@@ -55,7 +50,12 @@
     <xs:sequence>
       <xs:element name="startTime"    type="xs:dateTime" minOccurs="0"/> 
       <xs:element name="endTime"      type="xs:dateTime" minOccurs="0"/> 
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="location"/>
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -65,7 +65,13 @@
       <xs:element name="entity"   type="prov:EntityRef"/>
       <xs:element name="activity" type="prov:ActivityRef" minOccurs="0"/>
       <xs:element name="time"     type="xs:dateTime" minOccurs="0"/>
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="location"/>
+        <xs:element name="role"/>
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -75,7 +81,13 @@
       <xs:element name="activity" type="prov:ActivityRef"/>
       <xs:element name="entity"   type="prov:EntityRef" minOccurs="0"/>
       <xs:element name="time"     type="xs:dateTime" minOccurs="0"/>
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="location"/>
+        <xs:element name="role"/>
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -84,7 +96,11 @@
     <xs:sequence>
       <xs:element name="informed"  type="prov:ActivityRef"/>
       <xs:element name="informant" type="prov:ActivityRef"/>
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -95,7 +111,13 @@
       <xs:element name="trigger"  type="prov:EntityRef" minOccurs="0"/>
       <xs:element name="starter"  type="prov:ActivityRef" minOccurs="0"/>
       <xs:element name="time"     type="xs:dateTime" minOccurs="0"/>
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="location"/>
+        <xs:element name="role"/>
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -106,7 +128,13 @@
       <xs:element name="trigger"  type="prov:EntityRef"  minOccurs="0"/>
       <xs:element name="ender"    type="prov:ActivityRef" minOccurs="0"/>
       <xs:element name="time"     type="xs:dateTime" minOccurs="0"/>
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="location"/>
+        <xs:element name="role"/>
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -116,7 +144,13 @@
       <xs:element name="entity"   type="prov:EntityRef"/>
       <xs:element name="activity" type="prov:ActivityRef" minOccurs="0"/>
       <xs:element name="time"     type="xs:dateTime" minOccurs="0"/>
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="location"/>
+        <xs:element name="role"/>
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -130,7 +164,11 @@
       <xs:element name="activity"         type="prov:ActivityRef" minOccurs="0"/>
       <xs:element name="generation"       type="prov:GenerationRef" minOccurs="0"/>
       <xs:element name="usage"            type="prov:UsageRef" minOccurs="0"/>
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -139,7 +177,12 @@
   
   <xs:complexType name="Agent">
     <xs:sequence>
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="location"/>
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -148,7 +191,11 @@
     <xs:sequence>
       <xs:element name="entity" type="prov:EntityRef"/>
       <xs:element name="agent"    type="prov:AgentRef"/>
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -158,7 +205,12 @@
       <xs:element name="activity" type="prov:ActivityRef"/>
       <xs:element name="agent"    type="prov:AgentRef" minOccurs="0"/>
       <xs:element name="plan"     type="prov:EntityRef" minOccurs="0"/>
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="role"/>
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -168,7 +220,11 @@
       <xs:element name="delegate" type="prov:AgentRef"/>
       <xs:element name="responsible" type="prov:AgentRef"/>
       <xs:element name="activity"    type="prov:ActivityRef" minOccurs="0"/>
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
@@ -177,7 +233,11 @@
     <xs:sequence>
       <xs:element name="influencee"     type="prov:AnyRef"/>
       <xs:element name="influencer"     type="prov:AnyRef"/>
-      <xs:group ref="prov:commonAttributes"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="label"/>
+        <xs:element name="type"/>
+        <xs:any namespace="##other"/>
+      </xs:choice>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>