Small updates for Richard's comments on ISSUES 31 and 33, plus suggestion to shift picture up higher
--- 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: <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
<http://data.ordnancesurvey.co.uk/id/7000000000041427>, # South West
@@ -1361,17 +1358,36 @@
<http://data.ordnancesurvey.co.uk/id/7000000000041422>, # North East
<http://data.ordnancesurvey.co.uk/id/7000000000041424>, # Wales
<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: <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>