Small updates for Richard's comments on ISSUES 31 and 33, plus suggestion to shift picture up higher
authorDave Reynolds <dave@epimorphics.com>
Mon, 04 Mar 2013 13:13:08 +0000
changeset 334 fed08911c41c
parent 333 a88422d311a8
child 335 1056da1e530b
Small updates for Richard's comments on ISSUES 31 and 33, plus suggestion to shift picture up higher
data-cube/index.html
--- a/data-cube/index.html	Mon Mar 04 11:45:33 2013 +0000
+++ b/data-cube/index.html	Mon Mar 04 13:13:08 2013 +0000
@@ -47,6 +47,62 @@
   <p>This publication transitions <a href="http://publishing-statistical-data.googlecode.com/svn/trunk/specs/src/main/html/cube.html">previous work</a> on this subject onto the W3C Recommendation Track.</p>
 </section>
 
+
+<section id="outline">
+<h2>Outline of the vocabulary</h2>
+
+<!-- <img src="images/qb-fig1.png" alt="UML-style block diagram of the terms in this vocabulary"/> -->
+
+<img src="images/qb-fig1-proposed.png" alt="UML-style block diagram of the terms in this vocabulary"/>
+
+<section id="index">
+<h3>Vocabulary index</h3>
+
+  <p><b>Classes:</b>
+    <a href='#ref_qb_Attachable'>qb:Attachable</a>
+    <a href='#ref_qb_AttributeProperty'>qb:AttributeProperty</a>
+    <a href='#ref_qb_CodedProperty'>qb:CodedProperty</a>
+    <a href='#ref_qb_ComponentProperty'>qb:ComponentProperty</a>
+    <a href='#ref_qb_ComponentSet'>qb:ComponentSet</a>
+    <a href='#ref_qb_ComponentSpecification'>qb:ComponentSpecification</a>
+    <a href='#ref_qb_DataSet'>qb:DataSet</a>
+    <a href='#ref_qb_DataStructureDefinition'>qb:DataStructureDefinition</a>
+    <a href='#ref_qb_DimensionProperty'>qb:DimensionProperty</a>
+    <a href='#ref_qb_MeasureProperty'>qb:MeasureProperty</a>
+    <a href='#ref_qb_Observation'>qb:Observation</a>
+    <a href='#ref_qb_Slice'>qb:Slice</a>
+    <a href='#ref_qb_ObservationGroup'>qb:ObservationGroup</a>
+    <a href='#ref_qb_SliceKey'>qb:SliceKey</a>
+    <a href='#ref_qb_Hierarchy'>qb:HierarchicalCodeList</a>
+    <a href='#ref_qb_AggregatableHierarchy'>qb:AggregatableHierarchy</a>
+  </p>
+  <p><b>Properties:</b>
+    <a href='#ref_qb_attribute'>qb:attribute</a>
+    <a href='#ref_qb_codeList'>qb:codeList</a>
+    <a href='#ref_qb_component'>qb:component</a>
+    <a href='#ref_qb_componentAttachment'>qb:componentAttachment</a>
+    <a href='#ref_qb_componentProperty_LC'>qb:componentProperty</a>
+    <a href='#ref_qb_componentRequired'>qb:componentRequired</a>
+    <a href='#ref_qb_concept'>qb:concept</a>
+    <a href='#ref_qb_dataSet_LC'>qb:dataSet</a>
+    <a href='#ref_qb_dimension'>qb:dimension</a>
+    <a href='#ref_qb_measure'>qb:measure</a>
+    <a href='#ref_qb_measureDimension'>qb:measureDimension</a>
+    <a href='#ref_qb_measureType'>qb:measureType</a>
+    <a href='#ref_qb_observation_LC'>qb:observation</a>
+    <a href='#ref_qb_order'>qb:order</a>
+    <a href='#ref_qb_slice_LC'>qb:slice</a>
+    <a href='#ref_qb_sliceKey_LC'>qb:sliceKey</a>
+    <a href='#ref_qb_sliceStructure'>qb:sliceStructure</a>
+    <a href='#ref_qb_structure'>qb:structure</a>
+    <a href='#ref_qb_observationGroup'>qb:observationGroup</a>
+    <a href='#ref_qb_hierarchyRoot'>qb:hierarchyRoot</a>
+    <a href='#ref_qb_narrowingProperty'>qb:parentChildProperty</a>
+  </p>
+</section>
+
+</section>
+
 <section id="introduction" class="informative">
 <h2>Introduction</h2>
 
@@ -505,64 +561,6 @@
 
 </section>
 
-
-<section id="outline">
-<h2>Outline of the vocabulary</h2>
-
-<!-- <img src="images/qb-fig1.png" alt="UML-style block diagram of the terms in this vocabulary"/> -->
-
-<img src="images/qb-fig1-proposed.png" alt="UML-style block diagram of the terms in this vocabulary"/>
-
-<section id="index">
-<h3>Vocabulary index</h3>
-
-  <p><b>Classes:</b>
-    <a href='#ref_qb_Attachable'>qb:Attachable</a>
-    <a href='#ref_qb_AttributeProperty'>qb:AttributeProperty</a>
-    <a href='#ref_qb_CodedProperty'>qb:CodedProperty</a>
-    <a href='#ref_qb_ComponentProperty'>qb:ComponentProperty</a>
-    <a href='#ref_qb_ComponentSet'>qb:ComponentSet</a>
-    <a href='#ref_qb_ComponentSpecification'>qb:ComponentSpecification</a>
-    <a href='#ref_qb_DataSet'>qb:DataSet</a>
-    <a href='#ref_qb_DataStructureDefinition'>qb:DataStructureDefinition</a>
-    <a href='#ref_qb_DimensionProperty'>qb:DimensionProperty</a>
-    <a href='#ref_qb_MeasureProperty'>qb:MeasureProperty</a>
-    <a href='#ref_qb_Observation'>qb:Observation</a>
-    <a href='#ref_qb_Slice'>qb:Slice</a>
-    <a href='#ref_qb_ObservationGroup'>qb:ObservationGroup</a>
-    <a href='#ref_qb_SliceKey'>qb:SliceKey</a>
-    <a href='#ref_qb_Hierarchy'>qb:Hierarchy</a>
-    <a href='#ref_qb_AggregatableHierarchy'>qb:AggregatableHierarchy</a>
-  </p>
-  <p><b>Properties:</b>
-    <a href='#ref_qb_attribute'>qb:attribute</a>
-    <a href='#ref_qb_codeList'>qb:codeList</a>
-    <a href='#ref_qb_component'>qb:component</a>
-    <a href='#ref_qb_componentAttachment'>qb:componentAttachment</a>
-    <a href='#ref_qb_componentProperty_LC'>qb:componentProperty</a>
-    <a href='#ref_qb_componentRequired'>qb:componentRequired</a>
-    <a href='#ref_qb_concept'>qb:concept</a>
-    <a href='#ref_qb_dataSet_LC'>qb:dataSet</a>
-    <a href='#ref_qb_dimension'>qb:dimension</a>
-    <a href='#ref_qb_measure'>qb:measure</a>
-    <a href='#ref_qb_measureDimension'>qb:measureDimension</a>
-    <a href='#ref_qb_measureType'>qb:measureType</a>
-    <a href='#ref_qb_observation_LC'>qb:observation</a>
-    <a href='#ref_qb_order'>qb:order</a>
-    <a href='#ref_qb_slice_LC'>qb:slice</a>
-    <a href='#ref_qb_sliceKey_LC'>qb:sliceKey</a>
-    <a href='#ref_qb_sliceStructure'>qb:sliceStructure</a>
-    <a href='#ref_qb_structure'>qb:structure</a>
-    <a href='#ref_qb_observationGroup'>qb:observationGroup</a>
-    <a href='#ref_qb_hierarchyRoot'>qb:hierarchyRoot</a>
-    <a href='#ref_qb_narrowingProperty'>qb:narrowingProperty</a>
-    <a href='#ref_qb_broadeningProperty'>qb:broadeningProperty</a>
-  </p>
-</section>
-
-</section>
-
-
 <section id="dsd">
 <h2>Creating data structure definitions</h2>
 
@@ -631,7 +629,7 @@
    able to easily identify the overall code list in some more structured form. To cater for this a 
   component can also be optionally annotated with  a <code><a>qb:codeList</a></code> to indicate a set of 
   <code>skos:Concept</code>s which may be used as codes. The  <code><a>qb:codeList</a></code> value may be a
-  <code>skos:ConceptScheme</code>,  <code>skos:Collection</code> or <code><a>qb:Hierarchy</a></code>.
+  <code>skos:ConceptScheme</code>,  <code>skos:Collection</code> or <code><a>qb:HierarchicalCodeList</a></code>.
   In such a case the <code>rdfs:range</code> of the component might be left as simply <code>skos:Concept</code> but 
   a useful design pattern is to also define an <code>rdfs:Class</code>
   whose members are all the <code>skos:Concept</code>s within a particular scheme. In that way 
@@ -752,8 +750,13 @@
   component specification in several ways.</p>
 
 <ul>
-  <li>An Attribute may be optional in which case the specification should set 
-    <code>qb:componentRequired "false"^^xsd:boolean.</code></li>
+  <li>Attributes may be declared as optional or required. If an
+  attribute is required to be present for every observation then the specification should set 
+    <code>qb:componentRequired "true"^^xsd:boolean</code>. In the
+    absence of such a declaration an attribute is assumed to be
+    optional. The  <code><a>qb:componentRequired></a></code>
+    declaration may only be applied to component specifications of
+    attributes, measures and dimensions are always required.</li>
   <li>The components may be ordered by giving an integer value for <code><a>qb:order</a></code>. 
     This order carries no semantics but can be useful to aid consuming agents in generating
     appropriate user interfaces. It can also be useful in the publication chain to enable
@@ -1315,11 +1318,6 @@
 <section id="schemes-hierarchy-nonskos">  
 <h3>Non-skos hierarchies</h3>
 
-<div class="note">
-This section is At Risk. It is a new addition since the previous
-working draft and may be withdrawn in the light of further feedback. 
-</div>
-
 <p>It is sometimes convenient to be able to specify a hierarchical arrangement of 
 concepts other than through the use of the SKOS relation <code>skos:narrower</code>. 
 There are several situations where this is useful:</p>
@@ -1335,19 +1333,18 @@
 a complete cover of the parent concept (exhaustive).</li>
 </ul>
 
-<p>The Data Cube vocabulary supports this situation through the <code><a>qb:Hierarchy</a></code> class.
-An instance of <code><a>qb:Hierarchy</a></code> defines a set of root concepts in the hierarchy 
-(<code><a>qb:hierarchyRoot</a></code>) and either a parent-to-child relationship (<code><a>qb:narrowingProperty</a></code>)
-or a child-to-parent relationship (<code><a>qb:broadeningProperty</a></code>), or both.<p>
+<p>The Data Cube vocabulary supports this situation through the <code><a>qb:HierarchicalCodeList</a></code> class.
+An instance of <code><a>qb:HierarchicalCodeList</a></code> defines a set of root concepts in the hierarchy 
+(<code><a>qb:hierarchyRoot</a></code>) and a parent-to-child relationship (<code><a>qb:parentChildProperty</a></code>).</p>
 
 <p>For example, the Ordnance Survey of Great Britain publishes a geographic hierarchy which has 
 eleven roots (European Regions such as Wales, Scotland, the South West) and uses a spatial relations 
-ontology to define a containment hierarchy. This could be represented as a  <code><a>qb:Hierarchy</a></code> using the following.</p>
+ontology to define a containment hierarchy. This could be represented as a  <code><a>qb:HierarchicalCodeList</a></code> using the following.</p>
 
 <pre class="example">
 PREFIX spatial: &lt;http://data.ordnancesurvey.co.uk/ontology/spatialrelations/> .
 
-eg:GBgeoHierarchy a qb:Hierarchy;
+eg:GBgeoHierarchy a qb:HierarchicalCodeList;
     rdfs:label "Geographic Hierarchy for Great Britain"@en;
     qb:hierarchy Root 
       &lt;http://data.ordnancesurvey.co.uk/id/7000000000041427>, # South West
@@ -1361,17 +1358,36 @@
       &lt;http://data.ordnancesurvey.co.uk/id/7000000000041422>, # North East
       &lt;http://data.ordnancesurvey.co.uk/id/7000000000041424>, # Wales
       &lt;http://data.ordnancesurvey.co.uk/id/7000000000041429>; # Scotland
-    qb:narrowingProperty  spatial:contains;
-    qb:broadeningProperty spatial:within;
+    qb:parentChildProperty  spatial:contains;
     .
 
 eg:geoDimension a qb:DimensionProperty ;
     qb:codeList eg:GBgeoHierarchy .
 </pre>
 
-<p>A sub class of <code><a>qb:Hierarchy</a></code>, <code><a>qb:AggregatableHierarchy</a></code>, is provided to declare
+<p>Note that in some cases  the hierarchy to be reused may only have a
+  property relating child concepts to parent concepts. This situation
+  is handled by declaring
+  the <code><a>qb:parentChildProperty</a></code> to be
+  the <code>owl:inverseOf</code> of the child-to-parent property. For
+  example:</p>
+
+<pre class="example">
+PREFIX spatial: &lt;http://data.ordnancesurvey.co.uk/ontology/spatialrelations/> .
+
+eg:GBgeoHierarchy a qb:HierarchicalCodeList;
+    qb:parentChildProperty  [owl:inverseOf spatial:within] .
+</pre>
+ 
+<p>Future extensions of Data Cube may support additional sub classes
+  of <code><a>qb:HierarchicalCodeList</a></code>, for example to
+  declare hierarchies in which each parent is a disjoint union of its children.</p>
+
+<!--
+<p>A sub class of <code><a>qb:HierarchicalCodeList</a></code>, <code><a>qb:AggregatableHierarchy</a></code>, is provided to declare
 hierarchies where for each parent concept the set of child concepts form a disjoint cover (i.e. a 
 mutually-exclusive and exhaustive decomposition) of the parent.</p>
+-->
 
 </section>
 
@@ -1630,6 +1646,9 @@
 <h2>Validating well-formed cubes</h2>
 
 <p>@@TODO</p>
+
+Check list
+   - componentRequired only applied to attributes
 </section>
 
 <section id="vocab-reference">
@@ -1718,7 +1737,9 @@
     ( <em>Domain:</em>
     <code><a>qb:DataSet</a></code>
     -> <em>Range:</em> 
-    <code><a>qb:Slice</a></code>
+    <code><a>qb:Slice</a></code>;
+    <em>sub property of:</em>
+    <code><a>qb:observationgroup</a></code>
   ) 
   </dt>
   <dd>Indicates a subset of a DataSet defined by fixing a subset of the dimensional values</dd>
@@ -1886,7 +1907,8 @@
     <code>xsd:boolean</code>
   ) 
   </dt>
-  <dd>Indicates whether a component property is required (true) or optional (false) in the context of a DSD or MSD</dd>
+  <dd>Indicates whether a component property is required (true) or optional (false) in the context of a DSD. Only applicable
+    to components correspond to an attribute. Defaults to false (optional).</dd>
 
   <dt id="ref_qb_componentAttachment">
     <em>Property:</em> <code><dfn>qb:componentAttachment</dfn></code>
@@ -2002,7 +2024,7 @@
     ( <em>Domain:</em>
     <code><a>qb:CodedProperty</a></code>
     -> <em>Range:</em> 
-    <code>owl:unionOf(skos:ConceptScheme skos:Collection qb:Hierarchy)</code>
+    <code>owl:unionOf(skos:ConceptScheme skos:Collection qb:HierarchicalCodeList)</code>
   ) 
   </dt>
   <dd>Gives the code list associated with a CodedProperty.</dd>
@@ -2015,44 +2037,34 @@
 <dl class='vocab_reference'>
 
   <dt id="ref_qb_Hierarchy">
-    <em>Class:</em> <code><dfn>qb:Hierarchy</dfn></code>
+    <em>Class:</em> <code><dfn>qb:HierarchicalCodeList</dfn></code>
   </dt>
- <dd>Represents a generalized hierarchy of concepts which can be used for coding. The hierarchy is defined by one or more roots together with a property which relates concepts in the hierarchy to either their parent or their child concept. At least one of <code><a>qb:narrowingProperty</a></code> or <code><a>qb:broadeningProperty</a></code> must be specified, it is permissible to provide both.  The same concepts may be members of multiple hierarchies provided that different qb:[narrowing/broadening]Property values are using for each hierarchy.</dd>
+ <dd>Represents a generalized hierarchy of concepts which can be used for coding. The hierarchy is defined by one or more roots together with a property which relates concepts in the hierarchy to either their parent or their child concept. At least one of <code><a>qb:parentChildProperty</a></code> or <code><a>qb:broadeningProperty</a></code> must be specified, it is permissible to provide both.  The same concepts may be members of multiple hierarchies provided that different qb:[narrowing/broadening]Property values are using for each hierarchy.</dd>
 
   <dt id="ref_qb_hierarchyRoot">
     <em>Property:</em> <code><dfn>qb:hierarchyRoot</dfn></code>
     ( <em>Domain:</em>
-    <code><a>qb:Hierarchy</a></code>
-    -> <em>Range:</em> 
-    <code>skos:Concept</code>
-  ) 
+    <code><a>qb:HierarchicalCodeList</a></code>
+    ) 
   </dt>
   <dd>Specifies a root of the hierarchy. A hierarchy may have multiple roots but must have at least one.</dd>
 
   <dt id="ref_qb_narrowingProperty">
-    <em>Property:</em> <code><dfn>qb:narrowingProperty</dfn></code>
+    <em>Property:</em> <code><dfn>qb:parentChildProperty</dfn></code>
     ( <em>Domain:</em>
-    <code><a>qb:Hierarchy</a></code>
+    <code><a>qb:HierarchicalCodeList</a></code>
     -> <em>Range:</em> 
     <code>rdf:Property</code>
   ) 
   </dt>
-  <dd>Specifies a property which relates a parent concept in the hierarchy to a child concept. One of <code><a>qb:narrowingProperty</a></code> or <code><a>qb:broadeningProperty</a></code> must be given but it is not necessary to have both. Note that a child may have more than one parent.</dd>
+  <dd>Specifies a property which relates a parent concept in the hierarchy to a child concept. Note that a child may have more than one parent.</dd>
 
-  <dt id="ref_qb_broadeningProperty">
-    <em>Property:</em> <code><dfn>qb:broadeningProperty</dfn></code>
-    ( <em>Domain:</em>
-    <code><a>qb:Hierarchy</a></code>
-    -> <em>Range:</em> 
-    <code>rdf:Property</code>
-  ) 
-  </dt>
-  <dd>Specifies a property which relates a child concept in the hierarchy to a parent concept. One of <code><a>qb:narrowingProperty</a></code> or <code><a>qb:broadeningProperty</a></code> must be given but it is not necessary to have both. Note that a child may have more than one parent.</dd>
-
+<!--
   <dt id="ref_qb_AggregatableHierarchy">
     <em>Class:</em> <code><dfn>qb:AggregatableHierarchy</dfn></code>
   </dt>
  <dd>Indicates a hierarchy in which each parent concept is a disjoint union of its child concepts. So that measures such as simple counts may be aggregated up the hierarchy.</dd>
+-->
 
 </dl>
 </section>
@@ -2111,6 +2123,11 @@
 Changes since <a href="http://www.w3.org/TR/2012/WD-vocab-data-cube-20120405/">W3C Working Draft 5 April 2012</a>:
 
 <ul>
+  <li>Clarified that <code><a>qb:componentRequired</a></code> is only applicable to
+  attributes and that it defaults to optional.</li>
+  <li>Added <a href="#normalize">section</a> on flattening algorithm
+  for handling abbreviated cubes.</li>
+  <li>Added <a href="#conformance">conformance section</a>.
   <li>Moved vocabulary reference into the normative body of the specification, adding hyperlinks for all qb: terms</li>
   <li>Added <a href="#schemes-hierarchy-nonskos">section</a> on non-skos hierarchies. <a href="http://www.w3.org/2011/gld/track/issues/31">ISSUE-31</a>.</li>
   <li>Added <a href="#schemes-aggregation">note</a> that aggregation operations and inter-cube relations are out of scope for this version. <a href="http://www.w3.org/2011/gld/track/issues/30">ISSUE-30</a>.</li>