要約

統計などの多次元のデータを、関係するデータセットと概念にリンクできるような方法でウェブで公開できることが有用な状況がたくさんあります。データ・キューブ語彙は、W3CRDF(Resource Description Framework)標準を用いて、これを行う手段を提供します。データ・キューブ語彙を支えるモデルは、組織間で統計データとメタデータを交換・共有するためのISO標準であるSDMX(Statistical Data and Metadata eXchange)の基礎となっているキューブ・モデルと互換性があります。データ・キューブ語彙は、統計データ・フローやその他の多次元のデータセットの他の側面を公開可能とするための拡張語彙をサポートするコアとなる基礎です。

このオントロジーのすべての用語の名前空間はhttp://purl.org/linked-data/cube#です。

このドキュメントで定義している語彙は、非規範のフォーマットでも利用できます: Turtle

このドキュメントのステイタス

この項は、このドキュメントの公開時のステイタスについて記述しています。他のドキュメントがこのドキュメントに取って代わることがありえます。現行のW3Cの刊行物およびこの技術報告の最新の改訂版のリストは、http://www.w3.org/TR/のW3C技術報告インデックスにあります。

このドキュメントは、W3Cメンバー、ソフトウェア開発者、他のW3Cグループ、および他の利害関係者によりレビューされ、W3C勧告として管理者の協賛を得ました。これは確定済みドキュメントであり、参考資料として用いたり、別のドキュメントで引用することができます。勧告の作成におけるW3C の役割は、仕様に注意を引き付け、広範囲な開発を促進することです。これによってウェブの機能性および相互運用性が増強されます。

この語彙は、元々W3Cの外部で開発され、公開されましたが、Government Linked Data Working Group内で拡張され、さらに開発されました。

このドキュメントは、Government Linked Data Working Groupによって勧告として発表されました。このドキュメントに関してコメントを行いたい場合には、public-gld-comments@w3.org購読アーカイブ)にお送りください。どのようなコメントでも歓迎します。

ワーキンググループの実装報告書を参照してください。

このドキュメントは、2004年2月5日のW3C特許方針の下で活動しているグループによって作成されました。W3Cは、このグループの成果物に関連するあらゆる特許の開示の公開リストを維持し、このページには特許の開示に関する指示も含まれています。 不可欠な請求権(Essential Claim(s))を含んでいると思われる特許に関して実際に知っている人は、 W3C特許方針の6項に従って情報を開示しなければなりません。

目次

1. 語彙の概要

この語彙の用語のUMLスタイルのブロック図
1 キーとなる用語とそれらの関係を要約した図

1.1 語彙の索引

クラス: qb:Attachable qb:AttributeProperty qb:CodedProperty qb:ComponentProperty qb:ComponentSet qb:ComponentSpecification qb:DataSet qb:DataStructureDefinition qb:DimensionProperty qb:HierarchicalCodeList qb:MeasureProperty qb:Observation qb:Slice qb:ObservationGroup qb:SliceKey

プロパティー: qb:attribute qb:codeList qb:component qb:componentAttachment qb:componentProperty qb:componentRequired qb:concept qb:dataSet qb:dimension qb:hierarchyRoot qb:measure qb:measureDimension qb:measureType qb:observation qb:observationGroup qb:order qb:parentChildProperty qb:slice qb:sliceKey qb:sliceStructure qb:structure

2. はじめに

この項は非規範的です。

統計データは、政策予測、計画や調整の基礎であり、ウェブ上で見られるマッシュアップやビジュアル化の多くを支えています。関連情報とリンクし組み合わせられるように、統計データをウェブに適したフォーマットで公開できることに強い関心が集まっています。

次元のグループでまとめられた統計データセットの中心となるのは、観測値と、関連するメタデータです。データ・キューブ語彙により、このような情報をW3CRDF(Resource Description Framework)標準を用いて表わし、リンクト・データの原則に従って公開できます。語彙は、統計データ交換のためのSDMX ISO標準で用いられるアプローチに基づきます。このキューブ・モデルは非常に一般的であるため、データ・キューブ語彙は、調査データ、スプレッドシート、OLAPデータ・キューブ[OLAP]などのその他のデータセットに使用できます。

データ・キューブ語彙は、ウェブ上の多次元データの公開に純粋に焦点を合わせています。我々は、開発中の一連のモジュール語彙がこのコアとなる基礎を拡張するだろうと予測しています。特に、統計データ(包括的なデータ・フローや関連する提供合意など)に対して付加的なコンテキストを公開できるようにサポートしてくれるSDMXの拡張語彙が必要であることを理解しています。その他の拡張では、調査用メタデータ(DDIに含まれるような、いわゆる「マイクロデータ」)や統計参照メタデータの公開をサポートできます。

データ・キューブは、次の既存のRDF語彙に基づいて構築されます。

2.1 RDFとリンクと・データ

リンクト・データは、ウェブでデータを公開するための方法の1つで、共通する概念に対する参照によりデータセットをリンク付けることが可能となります。この方法[LOD]では、データの利用者が、他の関連するURIへのリンクを含む、より多くの情報を得るためにURIを調べることができるように、HTTP URIを用いてエンティティーと概念を指定することが推奨されています。RDF[RDF-PRIMER]は、これらのエンティティーと概念を記述し、URIの逆参照により返される情報を表現するための標準を提供します。

RDFとリンクト・データのアプローチを用いて、統計などの多次元のデータを公開できることには多くの利点があります。

2.2 SDMXと関連標準

SDMX(The Statistical Data and Metadata Exchange)イニシアティブは、統計の実践においてより大きな効率を実現するために、7つの国際組織(BIS、ECB、Eurostat、IMF、OECD、世界銀行および国連)によって2001年に設立されました。これらの組織は、ほとんどが国家レベルであり、どの組織も、政策をサポートするために大量のデータを収集しています。さらに、国を超えた国際的なレベルでデータを広めています。

この作業から多くの重要な結果が得られました。それらは、技術仕様書-ISO:TS 17369(SDMX)-の2つのバージョンと、クロス・ドメインな統計の構造化と調和のためのいくつかの勧告の公表、SDMXコンテンツ指向ガイドラインです。成果はすべてwww.sdmx.orgで入手できます。標準は現在、集約された統計の収集、交換、処理および普及のために、公的な統計組織により世界中で広く採用されています。国連の統計委員会は、統計のために推奨される標準として、2007年にSDMXを勧告しました。

SDMX仕様は、SDMX-ML(XML構文)とSDMX-EDIという具象形式の2つの構文に反映されているコアな情報モデルを定義しています。

RDFデータ・キューブ語彙は、SDMX 2.0情報モデル[SDMX20]のコアの上に構築されています。

読者にとっては、SDMXユーザー・ガイド[SDMX-GUIDE]が有用な背景となるかもしれません。

SDMX標準パッケージの重要なコンポーネントは、SDMX実装[COG]の間で共有される用語を提供することにより、データセット間の比較可能性と相互運用性をサポートするコンテンツ指向ガイドライン(COG;Content oriented guidelines)、クロス・ドメインの概念の集合、コード・リスト、カテゴリーです。これらの用語のRDFバージョンは、データ・キューブ語彙と一緒に用いるために別途入手できます。詳細は、コンテンツ志向ガイドラインを参照してください。これらの外部資源は、データ・キューブ語彙仕様の規範部分となるものではありません。

2.3 読者と範囲

このドキュメントは、データ・キューブ語彙を記述したものであり、RDFで統計やその他の多重次元データを公開したい人向けです。SDMX-MLなどの他のフォーマットからのクロス・フォーマットな変換方法については、ここではカバーしていません。

3. 名前空間とドキュメント規定

RDFエンティティー(クラス、述語、固体)の名前はURIです。これらは通常、名前がprefix:localnameであるコンパクトな表記法を用いて表わされ、その場合、prefix名前空間URIを識別します。接頭辞で識別される名前空間は、フルのURIを得るためにlocalnameの前に置かれます。

このドキュメントでは、次の名前空間を用います。

接頭辞 名前空間 参考文献
qb http://purl.org/linked-data/cube# このドキュメント
skos http://www.w3.org/2004/02/skos/core# [SKOS-REFERENCE]
scovo http://purl.org/NET/scovo# [SCOVO] [HAUS09]
void http://rdfs.org/ns/void# [void]
foaf http://xmlns.com/foaf/0.1/ [FOAF]
org http://www.w3.org/ns/org# [ORG]
dct http://purl.org/dc/terms/ [DC11]
owl http://www.w3.org/2002/07/owl# [OWL2-PRIMER]
rdf http://www.w3.org/1999/02/22-rdf-syntax-ns# [RDF-CONCEPTS]
rdfs http://www.w3.org/2000/01/rdf-schema# [RDF-SCHEMA]
admingeo http://data.ordnancesurvey.co.uk/ontology/admingeo/ (非規範、例のみに使用)
interval http://reference.data.gov.uk/def/intervals/ (非規範、例のみに使用)
eg http://example.org/ns# (非規範、例のみに使用)

すべてのRDFの例は、Turtle構文[turtle]で記述しています。

4. 適合性

非規範と記している項と同じく、この仕様のすべてのガイドライン、図、例、注記は、非規範的です。この仕様のその他の部分はすべて規範的です。

この仕様の「しなければならない(MUST)」、「してはならない(MUST NOT)」、「必須である/要求される(REQUIRED)」、「すべきである/する必要がある(SHOULD)」、「すべきでない/する必要がない(SHOULD NOT)」、「推奨される(RECOMMENDED)」、「することができる/してもよい(MAY)」、「選択できる/任意である(OPTIONAL)」というキーワードは、[RFC2119]で記述されているように解釈されるべきです。

次の場合、どれだけ交換が生じたとしても、データ交換はデータ・キューブに準拠しています。

適合データ交換は次のとおりです。

5. データ・キューブ

この項は非規範的です。

5.1 データセット

この項は非規範的です。

DataSetは定義されている構造に対応した統計データの集合です。大ざっぱに言えば、データセット内のデータは、次の種類のうちの1つに属しています。

観測データ
これは実際のデータ(計測値)です。統計表では、観測データは表のセル内の値でしょう。
組織構造
ハイパーキューブ内に観測データを配置するためには、少なくとも観測データが位置する各次元の値を知っている必要があるため、個々の観測データに対してこれらの値が指定されていなければなりません。データセットは、7.2項で述べているようなスライスの形の組織構造を追加で持つことができます。
構造メタデータ
観測データを配置した後には、それを解釈するために、何らかのメタデータが必要です。計測の単位は何か?正常値か時系列の破綻(a series break)か?計測値か推定値か?これらのメタデータは属性として提供され、個々の観測データまたはそれ以上のレベルに付与できます。
参照メタデータ
これは、データセットのカテゴリー、その公開者、アクセス可能なSPARQLエンドポイントなどの、データセット全体を記述するメタデータです。外部メタデータについては9項で記述しています。

5.2 キューブ・モデル - 次元、属性、測度

この項は非規範的です。

統計データ・セットは、ある論理空間内のある点で行われた観測データの集合で構成されます。その集合は、何が計測され(例えば、経済活動、人口)、それがどのように計測され、その観測データがどのように表わされるか(例えば、単位、倍率、状況)を記述したメタデータに加え、観測の対象(例えば、時間、エリア、性別)を定義する次元の集合によって特徴付けられます。統計データセットは、それらの次元でインデックス付けされた多次元空間、すなわちハイパー・キューブと見なすことができます。この空間は一般的に、略してキューブと呼ばれます。名前を文字通りに受け取るべきではありませんが、それは、正確に三次元が存在することを示唆するものでも(それ以上も以下もありえる)、次元がすべて何かしら似たサイズであることを示唆するものでもありません。

キューブは、1組の次元(dimension)、属性(attribute)および測度(measure)によって構成されます。これらを集合的にコンポーネントを呼びます。

次元コンポーネントは、観測データを識別する役割を果たします。すべての次元コンポーネントの値の集合は、1つの観測データを識別するのに十分です。次元の例には、観測を適用する時間や観測がカバーする地理的な領域が含まれます。

測度コンポーネントは、観測される現象を表わします。

属性コンポーネントは、観測値を限定し、解釈できるようにします。これによって、測度の単位、あらゆるスケーリング係数、観測状況(例えば、推測暫定)などのメタデータの指定が可能となります。

5.3 スライスの導入

この項は非規範的です。

データセット内の観測データのサブセットをグループ化することはしばしば有益です。特に、次元のうちの1つ(または、小さなサブセット)を除くすべてを固定し、それらの次元の値のすべての観測データを1つのエンティティーとして参照するために有益です。このような選択をキューブのスライスと呼びます。例えば、領域の業績指標に関するデータセットを与えられた場合、与えられた指標と与えられた領域に関するすべての観測データをグループ化したとします。すると、この個々のグループは、観測値の時系列を表わすスライスになるでしょう。

データの公開者は、様々な目的でデータのスライスを識別できます。スライスは、例えば、特定の時間や領域に影響する計測プロセスの変化を記録する際に、メタデータを付与するのに有用なグルーピングでありえます。スライスにより、ユーザに提示すべきデータの特定のサブセットを公開者が識別してラベル付けすることも可能となります - データを利用するアプリケーションで、より容易にプレゼンテーションに適したグラフや図を構築できます。

統計アプリケーションでは、1つの次元が未指定のままスライスを扱うのが一般的です。具体的に言うと、1つの自由な次元が時間であるスライスを時系列といい、時間ではない次元に従ったスライスをセクションといいます。データ・キューブ語彙内では、任意の次元のスライスが可能で、特定の種類のスライスに異なる名前をつけません。このようなサブクラスのスライスは、拡張語彙に追加できます。

5.4

この項は非規範的です。

データ・キューブ語彙の使用方法を説明するために、領域(単一自治体(unitary authority))、年齢、時間別の平均寿命を記述したStatsWales報告書No.003311から抜粋した小さなデモンストレーション用データセットを使用します。使用する抜粋は次のとおりです。


2004-2006 2005-2007 2006-2008

男性 女性 男性 女性 男性 女性
ニューポート 76.7 80.7 77.1 80.9 77.0 81.5
カーディフ 78.7 83.3 78.6 83.7 78.7 83.4
モンマスシャー 76.6 81.3 76.5 81.5 76.6 81.7
マーサーティドビル 75.5 79.1 75.5 79.4 74.9 79.6

ご覧のように、期間(3年周期の平均)、地域、性別という、3つの次元があります。各観測データは、その人口の平均寿命(測度)を表わし、計測値の単位(年)を定義するためには属性が必要です。

データのスライスの例として、時間と性別を固定したスライスを定義してみましょう。そのスライスは、異なる地域(つまり、上の表のレイアウトの列に対応)の平均寿命の違いを示すことになります。

このようなスライス構造を含む、このデータのデータ・キューブとしての完全なエンコーディングを付録Cで示しています。

6. データ構造定義の作成

qb:DataStructureDefinitionは、1つ以上のデータセットの構造を定義します。特に、次元の順序や属性が必須かオプションかなどの限定情報とともに、データセットで用いる次元、属性、測度を定義します。整形式のデータセットの場合、この情報の多くは、観測値のRDFコンポーネント・プロパティー内では明示的ではありません。しかし、構造の明示的な宣言には、次のようないくつかの利点があります。

統計データの公開時には、すべて同じ構造に従った、一連の定まった公開物を持っていることが一般的です。DSD(Data Structure Definition;データ構造定義)の概念により、その構造を一度定義し、をれを一連の公開物のそれぞれに再利用できます。その結果、利用者は、データの構造が変わっていないことを確信できます。

6.1 次元、属性および測度

データ・キューブ語彙は、次元、属性、測度をRDFプロパティーとして表わします。それぞれは、抽象的なqb:ComponentPropertyクラスのインスタンスで、順に、qb:DimensionPropertyqb:AttributePropertyおよびqb:MeasurePropertyというサブクラスを持っています。

コンポーネント・プロパティーは、次のいくつかの情報をカプセル化します。

同じ概念が、異なるコンポーネントに出現可能です。例えば、通貨の概念は、次元として用いる(為替レートを扱うデータセットで)ことも、属性として用いる(観測されたトレードが行われた通貨を記述する場合)こともできます。時間の概念は通常、次元のみとして用いられますが、データ値(例えば、xsd:dateTime)やシンボル値(例えば、data.gov.ukが開発した参照時間URIから得られたURI)としてもエンコード可能です。統計機関は通常、複数の異なるデータセットに使用できる、コンポーネントを支える統計概念の標準シソーラスを持っています。

この汎用的な統計概念の再利用をサポートするために、データ・キューブ語彙は、qb:ComponentPropertyをそれが表わす概念にリンクするqb:conceptプロパティーを提供しています。我々は、そのような概念を表わすためにSKOS語彙[SKOS-PRIMER]を用います。これは、概念が統制用語リストやシソーラスとして既に維持されている場合にはとても自然なことです。非公式のデータセットのデータ構造定義を開発する場合は、適切な概念はまだないかもしれません。その場合には、概念が他の形式で再利用できそうであれば、特定のqb:ComponentPropertyと一緒にskos:Conceptを公開することが推奨されます。しかし、そのような再利用が期待できない場合は、その必要はありません - qb:conceptリンクはオプションであり、qb:ComponentPropertyの適切なサブクラスのシンプルなインスタンスで十分です。

コンポーネントの可能な値の表現は、通常のRDFの手法でコンポーネントのrdfs:rangeプロパティーを用いて記述します。したがって、例えば、時間次元の値は、xsd:dateTimeという型のリテラルを用いるか、時間参照サービスから得たURIとして表わされるでしょう。

統計データセットでは、値は、何らかの(階層形式でありえる)コード・リストを用いてエンコードされるのが普通で、より構造的な形式でコード・リスト全体を容易に識別できると便利でしょう。これに対応するために、qb:codeListを用いてオプションでコンポーネントを注釈し、コードとして使用できるskos:Conceptの集合を示すこともできます。qb:codeListの値はskos:ConceptSchemeskos:Collectionまたはqb:HierarchicalCodeListでありえます。そのような場合には、コンポーネントのrdfs:rangeは、単なるskos:Conceptのままでもかまいませんが、特定のスキーム内でメンバーがすべてskos:Conceptであるrdfs:Classを定義する設計パターンも便利です。この方法により、rdfs:rangeをより特化でき、汎用的なRDFツールで適切な値域チェックを実行できるようになります。

任意のSDMX拡張語彙には、コンポーネントに関してエンコードすべき情報がもう1つあることに注意してください。それは、コンポーネントが構造定義内で果たす役割です。特に、どれが時間次元なのか、どのコンポーネントが主要な測度なのかなどを利用者が容易に識別できると便利な場合があります。そのような役割が概念にとって本質的なものであることが判明したため、この情報はskos:Conceptのサブクラスを個々の役割に提供することによりエンコーディングできます。ここの役割の特定の選択は、SDMX標準に固有のものであるため、コアのデータ・キューブ語彙には含まれていません。

我々の実行例に必要なコンポーネントについて説明する前に、もう1つ紹介すべき仕組みがあります。それは、再利用可能な概念の集合とSDMXに基づくコンポーネントです。

6.2 コンテンツ志向ガイドライン

この項は非規範的です。

SDMX標準には、データセットにまたがる再利用を目的とした共通の統計概念および関連するコード・リストを定義したコンテンツ志向ガイドライン(COG;content oriented guideline)[COG]が含まれています。コミュニティー・グループが、このガイドラインのRDFエンコーディングを開発しました。これらには、次のものが含まれます。

接頭辞 名前空間 説明
sdmx-concept http://purl.org/linked-data/sdmx/2009/concept# 各COG定義概念に対するSKOS概念
sdmx-code http://purl.org/linked-data/sdmx/2009/code# 各COG定義コード・リストに対するSKOS概念および概念スキーム(ConceptSchemes)
sdmx-dimension http://purl.org/linked-data/sdmx/2009/dimension# 次元として使用できる各COG概念に対応するコンポーネント・プロパティー
sdmx-attribute http://purl.org/linked-data/sdmx/2009/attribute# 属性として使用できる各COG概念に対応するコンポーネント・プロパティー
sdmx-measure http://purl.org/linked-data/sdmx/2009/measure# 測度として使用できる各COG概念に対応するコンポーネント・プロパティー

コミュニティーのこれらの資源は、便宜上提供しているものであり、データ・キューブ仕様の一部を成すものではありません。しかし、それらは多くの既存のデータ・キューブの公開物で利用されているため、我々は作業例においてそれらを参照しています。

6.3 次元と測度の例

この項は非規範的です。

我々のデータセットの例を見てみると、表現している次元が、期間、領域(単一自治体)、性別の3つあることが分かります。データセットのトピック(平均寿命)に相当する(主要な)測度が1つあり、年間の値をエンコードしています。したがって、以下のコンポーネントが必要です。

時間。 これには、SMDX-COGにREF_PERIODという適切な定義済み概念があります。したがって、対応するコンポーネント・プロパティーsdmx-dimension:refPeriodを再利用できます。しかし、期間自体を表わすためには、data.gov.uk参照時間サービスを用いて、データ構造定義内でこれを宣言すると便利でしょう。

例1
eg:refPeriod  a rdf:Property, qb:DimensionProperty;
    rdfs:label "reference period"@en;
    rdfs:subPropertyOf sdmx-dimension:refPeriod;
    rdfs:range interval:Interval;
    qb:concept sdmx-concept:refPeriod . 

領域。この場合も、これに使用できる適切なCOG概念と関連コンポーネントがあり、再び、コンポーネントの値域をカスタマイズできます。この場合、Ordnance Survey Administrative Geography Ontology[OS-GEO]を使用できます。

例2
eg:refArea  a rdf:Property, qb:DimensionProperty;
    rdfs:label "reference area"@en;
    rdfs:subPropertyOf sdmx-dimension:refArea;
    rdfs:range admingeo:UnitaryAuthority;
    qb:concept sdmx-concept:refArea . 

性別。この場合、デフォルトのコード・リストには必要な用語が含まれているため、対応するCOGコンポーネントsdmx-dimension:sexを直接使用できます。

測度。このプロパティーは、個々の観測データの値を示します。これには、デフォルトのsmdx-measure:obsValueを使用できます(メタデータを用いて観測されたトピックを定義)。しかし、観測された現象に対応する特定の測度を用いると、RDFデータセットの読みやすさと処理が向上します。

例3
eg:lifeExpectancy  a rdf:Property, qb:MeasureProperty;
    rdfs:label "life expectancy"@en;
    rdfs:subPropertyOf sdmx-measure:obsValue;
    rdfs:range xsd:decimal . 

単位測度属性。主要な測度自体はプレーンな十進の値です。この値を正しく解釈するためには、それがどんな単位で計測されたのか(この場合は、年)を定義する必要があります。これは観測値の解釈を限定する属性を用いて定義します。具体的には、この例では、UNIT_MEASUREの概念に相当する定義済みのsdmx-attribute:unitMeasureを使用できます。一般的に、この属性の値を表わすためには、測度の単位の共通シソーラスを用います。このシンプルな例では、「Years」に関するウィキペディア・ページのトピックに相当するDBpedia資源http://dbpedia.org/resource/Yearを用います。

これは、このデータセットの構造定義に必要な最小のコンポーネントをカバーします。

6.4 コンポーネント仕様とデータ構造定義

コンポーネントをこのデータセットの構造の仕様へと結合させるためには、qb:ComponentSpecification資源の集合を参照するqb:DataStructureDefinition資源を宣言する必要があります。qb:DataStructureDefinitionは同じ構造を持つ他のデータセットにも再利用できます。

最もシンプルなケースでは、qb:ComponentSpecificationは対応するqb:ComponentProperty(通常、qb:dimensionqb:measureqb:attributeのサブプロパティーのうちの1つを用いて)を参照するだけです。しかし、いくつかの方法でコンポーネント仕様を限定することもできます。

我々の実行例では、次元は有効に順序付けできます。属性は、単位測度という1つだけが存在しており、これは必須です。語彙の使用法を説明するために、この属性がデータセットのレベルで付与されていると宣言しますが、一般的に、正規表現のほうがクエリや結合が容易です。

したがって、我々の例のデータセット(そして、その他の同様のデータセット)の構造は、次のように宣言できます。

例4
eg:dsd-le a qb:DataStructureDefinition;
    # The dimensions
    qb:component [ qb:dimension eg:refArea;         qb:order 1 ];
    qb:component [ qb:dimension eg:refPeriod;       qb:order 2 ];
    qb:component [ qb:dimension sdmx-dimension:sex; qb:order 3 ];
    # The measure(s)
    qb:component [ qb:measure eg:lifeExpectancy];
    # The attributes
    qb:component [ qb:attribute sdmx-attribute:unitMeasure; 
                   qb:componentRequired "true"^^xsd:boolean;
                   qb:componentAttachment qb:DataSet; ] .

同じ構造を持つ異なるデータセットで再利用されるため、データ構造定義(DSD)にURIを付与したことに注意してください。同様に、コンポーネント・プロパティー自体も、異なるDSDで再利用できます。しかし、コンポーネントの仕様は、特定のDSDの範囲内でのみ有効であるため、空白ノードを用いてそれを表わすことにしました。

6.5 複数の測度の処理

我々のデータセットの例は、計測対象の観測値が1つ(この場合「平均寿命」)であるという点で比較的シンプルです。他のデータセットでは、複数の測度がありえます。これらの測度は、同様の性質(例えば、地方自治体の実績に関するデータセットは、地域ごとに複数の異なる実績指数を提供するかもしれない)を持っていることも、または全く異なる(例えば、トレードに関するデータセットは、トレードごとに量、値、重量を提供するかもしれない)こともありえます。

データ・キューブ語彙がサポートする複数の測度を表わす方法は2つあります。

最初の方法では、個々の観測データは、1つの測度に対し1つの観測値を記録します。我々は、各観測データが伝える測度を示す値を持つ追加の次元を導入します。この測度次元という方法は、SDMX情報モデルがサポートしているものです。

2番目の方法では、1つの観測データは、複数の異なる測度に対して値を提供できます。これは、マルチスペクトル・センサ計測のように、複数の値がそれぞれ1つの観測イベントに関連付けられている場合に特に適しています。この複数測度という方法は、ビジネス・インテリジェンスやOLAPなどのアプリケーションでよく用いられます。

データ・キューブ語彙では、同じデータセット内でこれらの方法を混ぜて用いることはできませんが、どちらの表現方法を用いてもかまいません。

両方の表現方法は、観測値が存在する次元の空間のあらゆるポイントで、値がすべての測度に付与されていなければなりません。複数測度観測データの場合には、個々の観測データに個々の測度がなければなりません。測度次元を用いるキューブでは、キューブ内の密度の高いポイントごとに観測データの集合があり、それらの個々の集合内には、各測度が付与された観測データがなければなりません。

複数測度観測データ

この方法により、個々の観測データに複数の観測値を付与できます。これはセンサ・データやOLAPキューブなどの表現に適しています。この表現を用いるためには、データ構造定義に複数のqb:MeasurePropertyコンポーネントを宣言し、各プロパティーのインスタンスをデータセット内の観測データに付与すればよいだけです。

例えば、出荷ごとのユニット数と総重量を含む出荷データの集合があれば、次のようなデータ構造定義になりえます。

例5
eg:dsd1 a qb:DataStructureDefinition;
    rdfs:comment "shipments by time (multiple measures approach)"@en;
    qb:component 
        [ qb:dimension  sdmx-dimension:refTime; ],
        [ qb:measure    eg-measure:quantity; ],
        [ qb:measure    eg-measure:weight; ] . 

これは、次のような個々の観測データに相当するでしょう。

例6
eg:dataset1 a qb:DataSet;
    qb:structure eg:dsd1 .
    
eg:obs1a  a qb:Observation;
    qb:dataSet eg:dataset1;
    sdmx-dimension:refTime "2010-07-30"^^xsd:date;
    eg-measure:weight 1.3 ;
    eg-measure:quantity 42 ;
    . 

複数測度のアプローチの1つの限界は、単一の観測値に属性を付与できないということであることに注意してください。観測データのインスタンスに付与される属性は、観測全体(例えば、誰が観測をしたかを示すなど)に適用されます。属性は、qb:MeasureProperty自体に直接付与することもできます(例えば、その測度に対する測度単位を示すなど)が、その付与はデータセット全体(実際に、その測度プロパティーを用いるあらゆるデータセット)に適用され、観測ごとに異なるものであることができません。この限界が問題となるアプリケーションは、測度次元のアプローチを用いてください。

測度次元

この方法は、観測は単一の計測値を有するものに限られますが、測度次元という次元を追加することで、データセットが複数の測度を持てるようになります。測度次元の値は、どの特定の測度が観測によって伝えられるかを示します。これはSDMX内で用いられる表現方法で、拡張語彙により、そのような単一の測度という制限を行うqb:DataStructureDefinitionのサブクラスを導入できます。

この表現を用いるためには、測度次元の役割を果たすように、データ構造定義内で追加の次元を宣言します。データ・キューブ語彙内での使用に関しては、この目的のために、qb:measureTypeという1つのすぐれたコンポーネントを提供しています。拡張語彙では、測度の型として機能する概念を識別する役割を提供することでこれを一般化でき、他の測度次元を宣言できるようにします。

qb:measureTypeを測度次元として用いるような特殊なケースでは、認められている測度の集合はDSD内で宣言された測度であると仮定されます。この情報を複製するために、別のコード・リストやクラスの列挙を定義する必要はありません。したがって、qb:measureTypeは、暗黙のコード・リストを有する「魔法の」次元プロパティーです。qb:measureTypeに対する暗黙のコード・リストというこの概念は、SDMXの使用法とは少し異なるものです。

上記の我々の例に対するデータ構造定義は、この表現方法を用いると、次のとおりになるでしょう。

例7
eg:dsd2 a qb:DataStructureDefinition;
    rdfs:comment "shipments by time (measure dimension approach)"@en;
    qb:component 
        [ qb:dimension  sdmx-dimension:refTime; ],
        [ qb:measure    eg-measure:quantity; ],
        [ qb:measure    eg-measure:weight; ],
        [ qb:dimension  qb:measureType; ] . 

これは、次のような個々の観測データに相当するでしょう。

例8
eg:dataset2 a qb:DataSet;
    qb:structure eg:dsd2 .
    
eg:obs2a  a qb:Observation;
    qb:dataSet eg:dataset2;
    sdmx-dimension:refTime "2010-07-30"^^xsd:date;
    qb:measureType eg-measure:weight ;
    eg-measure:weight 1.3 .
    
eg:obs2b  a qb:Observation;
    qb:dataSet eg:dataset2;
    sdmx-dimension:refTime "30-07-2010"^^xsd:date;
    qb:measureType eg-measure:quantity ;
    eg-measure:quantity 42 . 

測度プロパティーが、計測値を伝えるプロパティーとしても、測度次元の値としても現われる重複に注意してください。我々は、統一的なキューブ/次元メカニズムと、すべての種類のデータセットに測度プロパティーを宣言し使用する統一的な方法を保証するために、この重複が必要であると受け止めています。

SDMXをよく知っている人は、RDF表現では、個々の測度をそれぞれ包含する、別個の「主要な測度」は必要ないことにも注意すべきです。それらの個々の測度は直接用いられます。拡張語彙は、データ構造定義に関して別の注釈を用いることで、SDMXの主要な測度の往復に対処できます。

7. データセットの表現

7.1 データセットと観測データ

全データセットを表わす資源が作成され、qb:DataSetとして型付けされ、qb:structureにより対応するデータ構造定義にリンクされます。

落とし穴: qb:DataSetという大文字法は、void:Datasetdcat:Datasetなどの他の語彙の大文字法とは異なることに注意してください。この通常とは異なる大文字法は、SDMX標準との互換性のために選択されています。同じことが、関連するプロパティーqb:dataSetにも当てはまります。

個々の観測データは、qb:Observationという型のインスタンスとして表わされます。基本的なケースでは、属性、次元、計測のそれぞれに対する値は、観測値データに直接付与されます(これらのコンポーネントがすべてRDFプロパティーであることを思い出してください)。その観測データは、qb:dataSetプロパティーを用いて、それを含んでいるデータセットにリンクされます。

したがって、我々の実行例では、次のようになると思われます。

例9
eg:dataset-le1 a qb:DataSet;
    rdfs:label "Life expectancy"@en;
    rdfs:comment "Life expectancy within Welsh Unitary authorities - extracted from Stats Wales"@en;
    qb:structure eg:dsd-le ;
    .  

eg:o1 a qb:Observation;
    qb:dataSet  eg:dataset-le1 ;
    eg:refArea                 ex-geo:newport_00pr ;                  
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    sdmx-attribute:unitMeasure <http://dbpedia.org/resource/Year> ;
    eg:lifeExpectancy          76.7 ;
    .

eg:o2 a qb:Observation;
    qb:dataSet  eg:dataset-le1 ;
    eg:refArea                 ex-geo:cardiff_00pt ;                  
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    sdmx-attribute:unitMeasure <http://dbpedia.org/resource/Year> ;
    eg:lifeExpectancy          78.7 ;
    .

eg:o3 a qb:Observation;
    qb:dataSet  eg:dataset-le1 ;
    eg:refArea                 ex-geo:monmouthshire_00pp ;                  
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    sdmx-attribute:unitMeasure <http://dbpedia.org/resource/Year> ;
    eg:lifeExpectancy          76.6 ;
    .

...

この正規化された構造により、データセットのクエリや結合は容易になりますが、ここにはいくぶん冗長性があります。例えば、平均寿命の測度単位は、データセットの全体にわたって統一的であり、観測データによって変わりません。このような状況に対応するために、データ・キューブ語彙では、入れ子の構造でハイ・レベルにコンポーネントを付与できます。確かに、元のデータ構造宣言(Data Structure Declaration)を再度見てみると、測度単位をデータセット・レベルに付与するように宣言していることが分かります。したがって、短縮版の例は次のとおりです。

例10
eg:dataset-le1 a qb:DataSet;
    rdfs:label "Life expectancy"@en;
    rdfs:comment "Life expectancy within Welsh Unitary authorities - extracted from Stats Wales"@en;
    qb:structure eg:dsd-le ;  
    sdmx-attribute:unitMeasure <http://dbpedia.org/resource/Year> ;
    .
    
eg:o1 a qb:Observation;
    qb:dataSet  eg:dataset-le1 ;
    eg:refArea                 ex-geo:newport_00pr ;                  
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    eg:lifeExpectancy          76.7 ;
    .
    
eg:o2 a qb:Observation;
    qb:dataSet  eg:dataset-le1 ;
    eg:refArea                 ex-geo:cardiff_00pt ;                  
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    eg:lifeExpectancy          78.7 ;
    .

eg:o3 a qb:Observation;
    qb:dataSet  eg:dataset-le1 ;
    eg:refArea                 ex-geo:monmouthshire_00pp ;                  
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    eg:lifeExpectancy          76.6 ;
    .

...

介在する構造のない単なる観測データを含んでいるデータセットでは、観測データはそれぞれ、すべての測度の値に加え、次元の値の完全な集合を持っていなければなりません。その集合がスライスを用いて構造化されていれば、次の項で論じているとおり、さらなる省略が可能です。

7.2 スライスおよび観測データのグループ

スライスにより、観測データのサブセットをまとめてグループ化できます。これは、観測データから任意に選択したものを表わすことではなく、1つ以上の次元の値が固定されたキューブの統一的なスライスを表わすことを目的としています。

スライスは、多くの理由で使用できます。

スライスの使用法を説明するために、サンプルデータの集合を一連の地理データへとグループ化してみます。それによって、例えば「2004年-2006年の男性の平均寿命観測データ」を参照し、地域にまたがる比較表を示すように、アプリケーションを誘導できるでしょう。

最初に、「スライス・キー」をデータ構造定義に関連付けて、望むスライス構造を定義します。qb:SliceKeyを作成して、スライスで固定するコンポーネント・プロパティー(次元でなければならない)をリストアップすることでこれを行います。キーは、qb:sliceKeyでDSDに付与します。例えば、次のとおりです。

例11
eg:sliceByRegion a qb:SliceKey;
    rdfs:label "slice by region"@en;
    rdfs:comment "Slice by grouping regions together, fixing sex and time values"@en;
    qb:componentProperty eg:refPeriod, sdmx-dimension:sex .
    
eg:dsd-le-slice1 a qb:DataStructureDefinition;
    qb:component 
        [ qb:dimension eg:refArea;         qb:order 1 ],
        [ qb:dimension eg:refPeriod;       qb:order 2 ],
        [ qb:dimension sdmx-dimension:sex; qb:order 3 ],
        [ qb:measure eg:lifeExpectancy];
        [qb:attribute sdmx-attribute:unitMeasure; qb:componentAttachment qb:DataSet; ] ;
    qb:sliceKey eg:sliceByRegion .

次に、インスタンス・データでは、スライスはqb:Sliceのインスタンスで表わされ、それは、qb:observationによってスライスの観測データにリンクされ、また、qb:sliceStructureによってキーにリンクされます。データセットは、自身が含んでいるスライスをqb:sliceによって示します。したがって、我々の例では、次のようになるでしょう。

例12
eg:dataset-le2 a qb:DataSet;
    rdfs:label "Life expectancy"@en;
    rdfs:comment "Life expectancy within Welsh Unitary authorities - extracted from Stats Wales"@en;
    qb:structure eg:dsd-le-slice2 ;  
    sdmx-attribute:unitMeasure <http://dbpedia.org/resource/Year> ;
    qb:slice eg:slice2;
    .

eg:slice2 a qb:Slice;
    qb:sliceStructure  eg:sliceByRegion ;
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    qb:observation eg:o1b, eg:o2b, eg:o3b, ... .

eg:o1b a qb:Observation;
    qb:dataSet  eg:dataset-le2 ;
    eg:refArea                 ex-geo:newport_00pr ;                  
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    eg:lifeExpectancy          76.7 ;
    .
    
eg:o2b a qb:Observation;
    qb:dataSet  eg:dataset-le2 ;
    eg:refArea                 ex-geo:cardiff_00pt ;                  
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    eg:lifeExpectancy          78.7 ;
    .

eg:o3b a qb:Observation;
    qb:dataSet  eg:dataset-le2 ;
    eg:refArea                 ex-geo:monmouthshire_00pp ;                  
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    eg:lifeExpectancy          76.6 ;
    .

...

ここで、個々の観測データに関する次元の値をまだ繰り返していることに注意してください。この正規表現は、データを利用するアプリケーションが、最初にデータ構造定義を解析してスライス定義を検索することなく、今までどおり観測値に統一的にクエリを行うことができることを意味します。望ましい場合には、この冗長性は、次元に異なる付与レベルを宣言することで減少させることができます。例えば次のとおりです。

例13
eg:dsd-le-slice3 a qb:DataStructureDefinition;
    qb:component 
        [ qb:dimension eg:refArea;         qb:order 1 ];
        [ qb:dimension eg:refPeriod;       qb:order 2; qb:componentAttachment qb:Slice ];
        [ qb:dimension sdmx-dimension:sex; qb:order 3; qb:componentAttachment qb:Slice ];
        [ qb:measure eg:lifeExpectancy];
        [ qb:attribute sdmx-attribute:unitMeasure; qb:componentAttachment qb:DataSet; ] ;
    qb:sliceKey eg:sliceByRegion .

eg:dataset-le3 a qb:DataSet;
    rdfs:label "Life expectancy"@en;
    rdfs:comment "Life expectancy within Welsh Unitary authorities - extracted from Stats Wales"@en;
    qb:structure eg:dsd-le-slice3 ;  
    sdmx-attribute:unitMeasure <http://dbpedia.org/resource/Year> ;
    qb:slice eg:slice3 ;
    .

eg:slice3 a qb:Slice;
    qb:sliceStructure  eg:sliceByRegion ;
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    qb:observation eg:o1c, eg:o2c, eg:o3c, ... .

eg:o1c a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:newport_00pr ;                  
    eg:lifeExpectancy          76.7 ;
    .
    
eg:o2c a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:cardiff_00pt ;                  
    eg:lifeExpectancy          78.7 ;
    .

eg:o3c a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:monmouthshire_00pp ;                  
    eg:lifeExpectancy          76.6 ;
    .

...

アクセスのし易さや表示上の目的で、公開者は観測データの集合をグループ化したいと考えているけれども、次元の値の集合を固定するだけではその集合を定義できないというな状況もあります。例えば、気象観測データを表わす際に、個々の観測データが異なる時間に取得されたものである可能性があったとしても、各局から入手できる最新の観測データをグループ化することが望ましい場合があります。これらの状況のために、データ・キューブ語彙はqb:ObservationGroupをサポートしています。qb:ObservationGroupには、任意の観測データの集合を含むことができます。qb:Sliceは、qb:ObservationGroupの特殊なケースです。

8. 概念スキームとコード・リスト

8.1 コンポーネント・プロパティーのコード値

データセット内の次元の値は、曖昧さなく定義されていなければなりません。それは、型付きの値(例えば、時間インスタンスではxsd:dateTime)でも、あるコード・リストから得たコードでもかまいません。同様に、データセットで用いられる多くの属性は、自由なテキストの記述ではなく、ある統制用語リストのコード値です。データ・キューブ語彙では、そのようなコードは通常のRDFのようにURI参照で表わされます。

関連する次元に適したURIの集合が既に存在していることがあります(例えば、我々の実行例における、エリアと期間の表現)。また、変換されているデータセットが、まだ関連URIのない何らかのスキームの統制用語を用いているケースもありえます。そのような場合には、SKOSの使用をお勧めします。つまり、skos:Conceptを用いて個々のコード値を表わし、skos:ConceptSchemeまたはskos:Collectionを用いて許容可能な値の集合全体を表わします。

我々の作業例で既に用いたように、性別をSDMX COGコード・リストの変換から抽出した例でこれを説明します。このコード・リストの関連するサブセットは次のとおりです。

例14
sdmx-code:sex a skos:ConceptScheme;
    skos:prefLabel "Code list for Sex (SEX) - codelist scheme"@en;
    rdfs:label "Code list for Sex (SEX) - codelist scheme"@en;
    skos:notation "CL_SEX";
    skos:note "This  code list provides the gender."@en;
    skos:definition <http://sdmx.org/wp-content/uploads/2009/01/02_sdmx_cog_annex_2_cl_2009.pdf> ;
    rdfs:seeAlso sdmx-code:Sex ;
    sdmx-code:sex skos:hasTopConcept sdmx-code:sex-F ;
    sdmx-code:sex skos:hasTopConcept sdmx-code:sex-M .

sdmx-code:Sex a rdfs:Class, owl:Class;
    rdfs:subClassOf skos:Concept ;
    rdfs:label "Code list for Sex (SEX) - codelist class"@en;
    rdfs:comment "This  code list provides the gender."@en;
    rdfs:seeAlso sdmx-code:sex .

sdmx-code:sex-F a skos:Concept, sdmx-code:Sex;
    skos:topConceptOf sdmx-code:sex;
    skos:prefLabel "Female"@en ;
    skos:notation "F" ;
    skos:inScheme sdmx-code:sex .

sdmx-code:sex-M a skos:Concept, sdmx-code:Sex;
    skos:topConceptOf sdmx-code:sex;
    skos:prefLabel "Male"@en ;
    skos:notation "M" ; 
    skos:inScheme sdmx-code:sex .

skos:prefLabelを用いてコードに名前を与え、skos:noteで内容記述を提供し、skos:notationを用いて他のシリアル化に現われるかもしれない短い形式のコードを記録できます。SKOS仕様[SKOS-REFERENCE]は、skos:notationを用いる際に、それぞれにデータ型をカスタムで作成することを推薦していますが、ここでは、その表記法はRDFエンコーディングでの使用を意図しているのではなく、単に他の表現(そのようなデータ型を使用しない)で用いられる表記法を文書化しただけです。

コード・リストを開発する際に、階層構造に関係なく、コード・リスト内のコードをすべて表示するクラスも作成することは便利でよい実践です。これは、rdfs:rangeを用いてqb:ComponentPropertyの値域を定義することを可能とし、それによって、DMX-RDFに対応したカスタム・ツールを必要とせずに、標準のRDF閉世界チェッカーを使ってコード・リストの使用を検証できます。上記の例では、クラス名が概念スキームのそれと同じだが先頭が大文字である共通規定を用いてこれを行っています。

このコード・リストは、次のような、次元などのコード化されたプロパティーに関連付けることができます。

例15
eg:sex a qb:DimensionProperty, qb:CodedProperty;
    qb:codeList sdmx-code:sex ;
    rdfs:range sdmx-code:Sex .

qb:codeListを用いて、明示的にコード・リストを宣言することは義務ではありませんが、概念スキームを定義する時には有用になりえます。

8.2 階層的コード・リスト

コード・リストが階層構造を持っている場合もあります。特にこれは、データ・キューブにデータ値の集約(例えば、地理的な領域にわたって測度を集約)が含まれている時にSDMXで用いられます。階層コード・リストは、子コードのツリー(tree)やラティス(lattice)によりskos:hasTopConceptコードから下方へとリンクするために、skos:narrower関係またはそのサブプロパティーを用いて表わすべきです(SHOULD)。一部の公開用ツール連鎖では、対応する推移的なskos:narrowerTransitiveは自動的に推論されるでしょう。skos:narrowerを用いると、トップに集約層を追加することにより既存のスキームを拡張した新しい概念スキームを宣言できます。すべての項目はskos:inSchemeによってスキームにリンクされます。

8.3 非SKOSの階層

SKOS関係skos:narrowerを用いる以外の方法で概念の階層的配列を指定できることが便利なことがあります。これが便利な状況はいくつかあります。例えば次のような場合です。

データ・キューブ語彙は、qb:HierarchicalCodeListクラスによってこの状況をサポートします。qb:HierarchicalCodeListのインスタンスは、階層内にルートの概念(qb:hierarchyRoot)と、階層内の用語をその直近のサブ用語にリンクする親-子関係(qb:parentChildProperty)を定義します。

したがって、qb:HierarchicalCodeListは、qb:hierarchyRootskos:hasTopConceptと同じ役割を果たし、qb:parentChildPropertyの値はskos:narrowerと同じ役割を果たすという点でskos:ConceptSchemeに似ています。コード・リストがSKOS概念スキームやコレクションとして既に入手可能である場合、または、そのように合理的に作成可能な場合、)となっており誤記である可能性が高い。、それらを直接使用すべきです(SHOULD)。qb:HierarchicalCodeListは、その用語はSKOSとして利用できないけれども、再利用に適した他の何らかのRDF表現で利用できる場合のために提供されています。

例えば、イギリスのOrdnance Surveyは、11のルート(ウェールズ、スコットランド、南西部のようなヨーロッパの地域)を持つ地理的な階層を公開しており、包含階層を定義するために空間関係オントロジーを用いています。これは、下記を用いて、qb:HierarchicalCodeListとして表わすことができます。

例16
@prefix spatial: <http://data.ordnancesurvey.co.uk/ontology/spatialrelations/> .

eg:GBgeoHierarchy a qb:HierarchicalCodeList;
    rdfs:label "Geographic Hierarchy for Great Britain"@en;
    qb:hierarchyRoot 
      <http://data.ordnancesurvey.co.uk/id/7000000000041427>, # South West
      <http://data.ordnancesurvey.co.uk/id/7000000000041426>, # West Midlands
      <http://data.ordnancesurvey.co.uk/id/7000000000041421>, # South East
      <http://data.ordnancesurvey.co.uk/id/7000000000041430>, # Yorkshire & the Humber
      <http://data.ordnancesurvey.co.uk/id/7000000000041423>, # East Midlands
      <http://data.ordnancesurvey.co.uk/id/7000000000041425>, # Eastern
      <http://data.ordnancesurvey.co.uk/id/7000000000041428>, # London
      <http://data.ordnancesurvey.co.uk/id/7000000000041431>, # North West
      <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:parentChildProperty  spatial:contains;
    .

eg:geoDimension a qb:DimensionProperty ;
    qb:codeList eg:GBgeoHierarchy .

再利用する階層が、子の概念を親の概念に関連付けるプロパティーを持っているだけの場合があることに注意してください。この状況は、qb:parentChildPropertyがchild-to-parentプロパティーのowl:inverseOfであると宣言することにより対応できます。例えば、次の通りです。

例17
@prefix spatial: <http://data.ordnancesurvey.co.uk/ontology/spatialrelations/> .

eg:GBgeoHierarchy a qb:HierarchicalCodeList;
    qb:parentChildProperty  [owl:inverseOf spatial:within] .

データ・キューブの将来の拡張は、例えば、各親がその子どもの素の和集合である階層を宣言するために、qb:HierarchicalCodeListのサブクラスの追加をサポートするかもしれません。

8.4 集約

SKOS(または、非SKOS)の階層を用いることで、リーフではない(non-leaf)概念の集約統計を階層で公開できます。データ・キューブ語彙自体は、そのような集約がどのように行われるかを制約しません。確かに、統計アプリケーションでは、集約された値に対して統計を適切に修正することは簡単ではなく、データや正確な分析方法に依存するかもしれません。同様に、OLAPなどの他のアプリケーションでは、多くの様々な集約演算子がよく利用されます。

特定のデータセット内で用いられる集約オペレーションや、あるデータセットがどのように別のものから派生したのかを表わす語彙用語は、データ・キューブ仕様のこのバージョンではサポートしていません。この分野は、データ・キューブの将来の拡張において対応されるかもしれません。

9. データセット・メタデータ

発見、表示、処理をサポートするために、データセットは、メタデータでマークアップすべきです。データセットに共通に必要な重要なメタデータの注釈を表わすためにダブリン・コア用語[DC11]を使用すべきです(SHOULD)。表示ラベル用のRDFS用語(rdfs:label)や記述コメント(rdfs:comment)も、データ・キューブの初期のバージョンや共通のRDF実践との互換性のために付与すべきです(SHOULD)。

推奨されるメタデータ用語のコア集合は次のとおりです。

この他にも、データ・キューブのデータセット記述に使用できるデータセットに対するメタデータ用語の勧告を追加提供するドキュメント(特に、[DCAT])があります。

9.1 データセットの分類

統計の公開者はしばしば、自身のデータセットを、教育労働輸送などの様々な統計領域に分類します。このようなデータセット全体の分類を記録するためには、dct:subjectの使用をお勧めします。分類の用語には、SDMXコンテンツ指向ガイドラインの主題領域のリスト(List of Subject-matter Domains)などの粗い分類もあれば、データセットの発見をサポートするためのきめの細かい分類もあります。

一般的に、分類表は、SKOS語彙を用いて表わされます。便宜上、SMDX主題領域は、http://purl.org/linked-data/sdmx/2009/subject#のSKOS概念スキームとしてコード化されました。

したがって、我々のデータセットの例は、次のようにマークアップされるでしょう。

例18
eg:dataset1 a qb:DataSet;
    rdfs:label      "Life expectancy"@en;
    dct:title       "Life expectancy"@en;
    rdfs:comment    "Life expectancy within Welsh Unitary authorities - extracted from Stats Wales"@en;
    dct:description "Life expectancy within Welsh Unitary authorities - extracted from Stats Wales"@en;
    dct:issued      "2010-08-11"^^xsd:date;
    dct:subject
        sdmx-subject:3.2 ,      # regional and small area statistics
        sdmx-subject:1.4 ,      # Health
        eg:Wales;               # Wales
    ...

このとき、eg:Walesは、場所のための適切な統制語から得られたskos:Conceptです。

9.2 公開者の記述

データセットを公開する組織を、データセットのメタデータの一部として記録すべきです。これにも、ダブリン・コア用語dct:publisherの使用をお勧めします。組織はfoaf:Agentのインスタンスとして表わすか、org:Organization[ORG]などの何らかのより特定的なサブクラスとして表わすべきです。

例19
eg:dataset1 a qb:DataSet;
    dct:publisher <http://example.com/meta#organization> .
    
<http://example.com/meta#organization> a org:Organization, foaf:Agent;
    rdfs:label "Example org" .    

拡張語彙は追加のメタデータ・プロパティーを提供でき、どのメタデータを提供しなければならないかを制約できます。

10. 省略化および正規化されたデータ・キューブ

正規形では、データ・キューブを形成するqb:Observationには、関連するデータ構造定義で宣言されている必須の次元、属性、測度のそれぞれに対してプロパティー値があります。データ・キューブのこの形式は、正規化という用語で呼ばれています。これはデータにクエリを行うために便利なフォーマットで、これにより、複数のキューブのものを含む、観測データの集合を抽出する統一的なクエリを書くことが可能となります。しかし、完全な正規表現の冗長性は、一部の状況において問題となりえるデータ・キューブの送信や記憶装置のオーバーヘッドを引き起こします。オプションとして省略形式が提供されており、それを使用するという要件もあることに注意してください。多くの状況において、標準的な圧縮技術により、正規形のオーバーヘッドの多くを取り除くことができます。

これに対処するために、データ・キューブ語彙は、コンポーネント・プロパティーをデータ・キューブ内の他のレベルに付与できる、省略形の概念をサポートしています。具体的には、それらは、qb:DataSetまたはqb:Sliceに付与できます。これらの場合、付与されたプロパティは、その付与のポイントに関連するすべてのqb:Observationインスタンスに適用されているとみなされます。説明に関しては、測度の単位がデータセット全体に付与されるように宣言されており、すべての観測データに対して繰り返す必要がない例4を参照してください。

qb:MeasurePropertyに属性を付与することもできます。その場合には、属性は、そのプロパティーが生じた観測データではなく、そのプロパティーにのみ適用されることになりす。

10.1 正規化アルゴリズム

これらの概念は、省略形のデータ・キューブを標準化できる変換アルゴリズムで定義します。この変換は、SPARQL 1.1更新言語[sparql11-update]を用いて表現します。この表記法の使用は、変換をこのように実装しなければならないことを示唆しません。データ・キューブを用いた情報交換は、省略形のデータを保持し、アクセスを緩和するためのクエリの書き直しなどの他の技術を用いたり、他の手段で正規化アルゴリズムを実装したり、正規形またはこれらを任意に混ぜた形式ですべてのデータを処理したりできます。

正規化アルゴリズムには、2組のSPARQL更新オペレーションが含まれており、これらを正規化すべきデータ・キューブRDFグラフを含んでいるデフォルト・グラフのSPARQLデータセットに順番に適用すべきです。

最初の更新オペレーションは、選択的な型とプロパティー閉包のオペレーションを行ないます。これらは2つの目的を果たします。qb:Observationqb:Sliceのインスタンスに関するrdf:typeの言明が、省略形のデータ・キューブでは割愛できることを保障します。また、qb:componentProperty(特に、qb:dimensionqb:measureqb:attribute)のサブプロパティーの拡張により、更新オペレーションの2番目の集合の単純化も行います。

フェーズ1: 型およびプロパティー閉包
PREFIX rdf:            <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX qb:             <http://purl.org/linked-data/cube#>

INSERT {
    ?o rdf:type qb:Observation .
} WHERE {
    [] qb:observation ?o .
};

INSERT {
    ?o  rdf:type qb:Observation .
    ?ds rdf:type qb:DataSet .
} WHERE {
    ?o qb:dataSet ?ds .
};

INSERT {
    ?s rdf:type qb:Slice .
} WHERE {
    [] qb:slice ?s.
};

INSERT {
    ?cs qb:componentProperty ?p .
    ?p  rdf:type qb:DimensionProperty .
} WHERE {
    ?cs qb:dimension ?p .
};

INSERT {
    ?cs qb:componentProperty ?p .
    ?p  rdf:type qb:MeasureProperty .
} WHERE {
    ?cs qb:measure ?p .
};

INSERT {
    ?cs qb:componentProperty ?p .
    ?p  rdf:type qb:AttributeProperty .
} WHERE {
    ?cs qb:attribute ?p .
}

これらの閉包オペレーションは、データ・キューブ語彙のRDFSセマンティックスによって暗示されます。データ・キューブのプロセッサは、ここで定義している更新オペレーションの代わりに、フルのRDFS閉包を適用できます(MAY)。

2番目の更新オペレーションは、宣言された付与レベルに対するデータセットのデータ構造定義のコンポーネントをチェックします。可能な付与レベルごとに、対応する観測データまで引き下げてそのコンポーネントの発生を探します。

フェーズ2: 付与レベルの引き下げ
PREFIX qb:             <http://purl.org/linked-data/cube#>

# Dataset attachments
INSERT {
    ?obs  ?comp ?value
} WHERE {
    ?spec    qb:componentProperty ?comp ;
             qb:componentAttachment qb:DataSet .
    ?dataset qb:structure [qb:component ?spec];
             ?comp ?value .
    ?obs     qb:dataSet ?dataset.
};

# Slice attachments
INSERT {
    ?obs  ?comp ?value
} WHERE {
    ?spec    qb:componentProperty ?comp;
             qb:componentAttachment qb:Slice .
    ?dataset qb:structure [qb:component ?spec];
             qb:slice ?slice .
    ?slice ?comp ?value;
           qb:observation ?obs .
};

# Dimension values on slices
INSERT {
    ?obs  ?comp ?value
} WHERE {
    ?spec    qb:componentProperty ?comp .
    ?comp a  qb:DimensionProperty .
    ?dataset qb:structure [qb:component ?spec];
             qb:slice ?slice .
    ?slice ?comp ?value;
           qb:observation ?obs .
}

11. 整形式のキューブ

RDFデータ・キューブのインスタンスは、この項で定義している完全性制約に準拠すべきです。

整形式のRDFデータ・キューブとは、ここで定義している個々の完全性チェックにパスした1つ以上のqb:DataSetインスタンスを記述したRDFグラフです。

整形式省略形のRDFデータ・キューブとは、正規化アルゴリズムを用いて拡張した時に整形式のRDFデータ・キューブを生成するRDFグラフです。

11.1 完全性制約

個々の完全性制約は、話言葉の散文として、また、可能な場合には、SPARQL[sparql11-query]のASKクエリやクエリ・テンプレートとして表わされます。ASKクエリがRDFグラフに適用され、対応する制約に違反する1つ以上のデータ・キューブのインスタンスがそのグラフに含まれていれば、(true)を返すでしょう。

完全性制約を表わすためにSPARQLクエリを用いることは、この方法で完全性チェックを行なわなければならいことを示唆するわけではありません。実装は、同等性チェックを行なうために、別のクエリ式や別の実装技術を自由に使用できます。

個々の完全性制約クエリは、次の接頭辞バインディングを仮定します。

PREFIX rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos:    <http://www.w3.org/2004/02/skos/core#>
PREFIX qb:      <http://purl.org/linked-data/cube#>
PREFIX xsd:     <http://www.w3.org/2001/XMLSchema#>
PREFIX owl:     <http://www.w3.org/2002/07/owl#>

完全な制約の集合を以下に挙げます。

IC-0. データ型の整合性

RDFグラフは、グラフ内で用いられているすべてのデータ型を含んでいるデータ型マップを用いたRDF D-含意[RDF-MT]の下で整合性がなければなりません。

IC-1. 一意のデータセット

すべてのqb:Observationには、きっかり1つの関連するqb:DataSetがあります。

ASK {
  {
    # Check observation has a data set
    ?obs a qb:Observation .
    FILTER NOT EXISTS { ?obs qb:dataSet ?dataset1 . }
  } UNION {
    # Check has just one data set
    ?obs a qb:Observation ;
       qb:dataSet ?dataset1, ?dataset2 .
    FILTER (?dataset1 != ?dataset2)
  }
}
    

IC-2. 一意のDSD

すべてqb:DataSetには、きっかり1つの関連するqb:DataStructureDefinitionがあります。

ASK {
  {
    # Check dataset has a dsd
    ?dataset a qb:DataSet .
    FILTER NOT EXISTS { ?dataset qb:structure ?dsd . }
  } UNION { 
    # Check has just one dsd
    ?dataset a qb:DataSet ;
       qb:structure ?dsd1, ?dsd2 .
    FILTER (?dsd1 != ?dsd2)
  }
}
    

IC-3. DSDが測度を包含

すべてのqb:DataStructureDefinitionには少なくとも1つの宣言された測度が含まれていなければなりません。

ASK {
  ?dsd a qb:DataStructureDefinition .
  FILTER NOT EXISTS { ?dsd qb:component [qb:componentProperty [a qb:MeasureProperty]] }
}
    

IC-4. 次元が値域を持つ

qb:DataStructureDefinitionで宣言されたすべての次元には、宣言されたrdfs:rangeがなければなりません。

ASK {
  ?dim a qb:DimensionProperty .
  FILTER NOT EXISTS { ?dim rdfs:range [] }
}
    

IC-5. 概念次元がコード・リストを持つ

skos:Conceptの値域を有するすべての次元には、qb:codeListがなければなりません。

ASK {
  ?dim a qb:DimensionProperty ;
       rdfs:range skos:Concept .
  FILTER NOT EXISTS { ?dim qb:codeList [] }
}
    

IC-6. 属性のみがオプションでありえる

qb:componentRequiredを用いて、オプションと記すことができるqb:DataStructureDefinitionの唯一のコンポーネントは属性です。

ASK {
  ?dsd qb:component ?componentSpec .
  ?componentSpec qb:componentRequired "false"^^xsd:boolean ;
                 qb:componentProperty ?component .
  FILTER NOT EXISTS { ?component a qb:AttributeProperty }
}
    

IC-7. スライス・キーが宣言されていなければならない

すべてのqb:SliceKeyqb:DataStructureDefinitionに関連付けられていなければなりません。

ASK {
    ?sliceKey a qb:SliceKey .
    FILTER NOT EXISTS { [a qb:DataStructureDefinition] qb:sliceKey ?sliceKey }
}
    

IC-8. スライス・キーはDSDと整合性がある

qb:SliceKeyのすべてのqb:componentPropertyも、関連するqb:DataStructureDefinitionqb:componentとして宣言されなければなりません。

ASK {
  ?slicekey a qb:SliceKey;
      qb:componentProperty ?prop .
  ?dsd qb:sliceKey ?slicekey .
  FILTER NOT EXISTS { ?dsd qb:component [qb:componentProperty ?prop] }
}
    

IC-9. 一意のスライス構造

個々のqb:Sliceには、きっかり1つの関連するqb:sliceStructureがなければなりません。

ASK {
  {
    # Slice has a key
    ?slice a qb:Slice .
    FILTER NOT EXISTS { ?slice qb:sliceStructure ?key }
  } UNION {
    # Slice has just one key
    ?slice a qb:Slice ;
           qb:sliceStructure ?key1, ?key2;
    FILTER (?key1 != ?key2)
  }
}
    

IC-10. スライス次元が完全

すべてのqb:Sliceには、そのqb:sliceStructureで宣言されたすべての次元に対する値がなければなりません。

ASK {
  ?slice qb:sliceStructure [qb:componentProperty ?dim] .
  FILTER NOT EXISTS { ?slice ?dim [] }
}
    

IC-11. すべての次元が必須

すべてのqb:Observationには、その関連するqb:DataStructureDefinitionで宣言された個々の次元に対する値がなければなりません。

ASK {
    ?obs qb:dataSet/qb:structure/qb:component/qb:componentProperty ?dim .
    ?dim a qb:DimensionProperty;
    FILTER NOT EXISTS { ?obs ?dim [] }
}
    

IC-12. 重複した観測データの禁止

同じqb:DataSet内の2つのqb:Observationは、すべての次元に対して同じ値を持つことができません。

ASK {
  FILTER( ?allEqual )
  {
    # For each pair of observations test if all the dimension values are the same
    SELECT (MIN(?equal) AS ?allEqual) WHERE {
        ?obs1 qb:dataSet ?dataset .
        ?obs2 qb:dataSet ?dataset .
        FILTER (?obs1 != ?obs2)
        ?dataset qb:structure/qb:component/qb:componentProperty ?dim .
        ?dim a qb:DimensionProperty .
        ?obs1 ?dim ?value1 .
        ?obs2 ?dim ?value2 .
        BIND( ?value1 = ?value2 AS ?equal)
    } GROUP BY ?obs1 ?obs2
  }
}
    

IC-13. 必須の属性

すべてのqb:Observationには、必須と記されている個々の宣言された属性に対する値があります。

ASK {
    ?obs qb:dataSet/qb:structure/qb:component ?component .
    ?component qb:componentRequired "true"^^xsd:boolean ;
               qb:componentProperty ?attr .
    FILTER NOT EXISTS { ?obs ?attr [] }
}
    

IC-14. すべての測度が存在する

測度次元を用いないqb:DataSetにおいては、個々のqb:Observationに、すべての宣言された測度に対して値がなければなりません。

ASK {
    # Observation in a non-measureType cube
    ?obs qb:dataSet/qb:structure ?dsd .
    FILTER NOT EXISTS { ?dsd qb:component/qb:componentProperty qb:measureType }

    # verify every measure is present
    ?dsd qb:component/qb:componentProperty ?measure .
    ?measure a qb:MeasureProperty;
    FILTER NOT EXISTS { ?obs ?measure [] }
}
    

IC-15. 測度次元に整合性がある

測度次元を用いるqb:DataSetにおいては、個々のqb:Observationに、その与えられたqb:measureTypeに対応する測度に対して値がなければなりません。

ASK {
    # Observation in a measureType-cube
    ?obs qb:dataSet/qb:structure ?dsd ;
         qb:measureType ?measure .
    ?dsd qb:component/qb:componentProperty qb:measureType .
    # Must have value for its measureType
    FILTER NOT EXISTS { ?obs ?measure [] }
}
    

IC-16. 測度次元観測データに1つの測度

測度次元を用いるqb:DataSetにおいては、個々のqb:Observationには、1つの測度に対する値のみがなければなりません(IC-15によって、これはそのqb:measureTypeに対応する測度になるでしょう)。

ASK {
    # Observation with measureType
    ?obs qb:dataSet/qb:structure ?dsd ;
         qb:measureType ?measure ;
         ?omeasure [] .
    # Any measure on the observation
    ?dsd qb:component/qb:componentProperty qb:measureType ;
         qb:component/qb:componentProperty ?omeasure .
    ?omeasure a qb:MeasureProperty .
    # Must be the same as the measureType
    FILTER (?omeasure != ?measure)
}
    

IC-17. 測度次元キューブにすべての測度が存在する

測度次元を用いるqb:DataSetにおいては、非測度次元のある組み合わせに対する観測データがあれば、個々の宣言された測度に対する同じ非測度次元の値を有する他の観測データがなければなりません。

ASK {
  {
      # Count number of other measures found at each point 
      SELECT ?numMeasures (COUNT(?obs2) AS ?count) WHERE {
          {
              # Find the DSDs and check how many measures they have
              SELECT ?dsd (COUNT(?m) AS ?numMeasures) WHERE {
                  ?dsd qb:component/qb:componentProperty ?m.
                  ?m a qb:MeasureProperty .
              } GROUP BY ?dsd
          }
        
          # Observation in measureType cube
          ?obs1 qb:dataSet/qb:structure ?dsd;
                qb:dataSet ?dataset ;
                qb:measureType ?m1 .
    
          # Other observation at same dimension value
          ?obs2 qb:dataSet ?dataset ;
                qb:measureType ?m2 .
          FILTER NOT EXISTS { 
              ?dsd qb:component/qb:componentProperty ?dim .
              FILTER (?dim != qb:measureType)
              ?dim a qb:DimensionProperty .
              ?obs1 ?dim ?v1 . 
              ?obs2 ?dim ?v2. 
              FILTER (?v1 != ?v2)
          }
          
      } GROUP BY ?obs1 ?numMeasures
        HAVING (?count != ?numMeasures)
  }
}
    

IC-18. 整合性があるデータセット・リンク

qb:DataSet Dにqb:slice Sがあり、Sにqb:observation Oがあれば、Oに対応するqb:dataSetはDでなければなりません。

ASK {
    ?dataset qb:slice       ?slice .
    ?slice   qb:observation ?obs .
    FILTER NOT EXISTS { ?obs qb:dataSet ?dataset . }
}
    

IC-19. コード・リストからのコード

次元プロパティーにqb:codeListがあれば、すべてのqb:Observationの次元プロパティーの値がコード・リストになければなりません。

次の完全性チェック・クエリは、チェックするデータ・キューブと、コード・リストの定義を含んでいるRDFグラフに適用されなければなりません。skos:ConceptSchemeの場合には、個々の概念はskos:inSchemeを用いてスキームにリンクされなければなりません。skos:Collectionの場合には、集合はskos:memberを用いて、個々の概念(または、入れ子の集合に)にリンクしなければなりません。集合がskos:memberListを用いれば、[SKOS-REFERENCE]のS36によって定義されているskos:memberの値の含意は、このチェックが適用される前に、実現されなければなりません。

ASK {
    ?obs qb:dataSet/qb:structure/qb:component/qb:componentProperty ?dim .
    ?dim a qb:DimensionProperty ;
        qb:codeList ?list .
    ?list a skos:ConceptScheme .
    ?obs ?dim ?v .
    FILTER NOT EXISTS { ?v a skos:Concept ; skos:inScheme ?list }
}

ASK {
    ?obs qb:dataSet/qb:structure/qb:component/qb:componentProperty ?dim .
    ?dim a qb:DimensionProperty ;
        qb:codeList ?list .
    ?list a skos:Collection .
    ?obs ?dim ?v .
    FILTER NOT EXISTS { ?v a skos:Concept . ?list skos:member+ ?v }
}
    

IC-20. 階層からのコード

次元プロパティーに非空白qb:parentChildPropertyを有するqb:HierarchicalCodeListがある場合、すべてのqb:Observationのその次元プロパティーの値は、qb:parentChildPropertyリンクに沿った0以上のホップ(hop)を用いて、階層のルートから到達できなければなりません。

このチェックは、シンプルな固定SPARQLクエリで行うことができません。その代わりに、クエリ・テンプレートが提供されています。テンプレートのインスタンスは、そのqb:parentChildPropertyに対してIRIの値を持っている個々のqb:HierarchicalCodeListに対して生成されるべきです。それは、次のインスタンス化クエリ内の?pの個々のバインディングに関するものです。

SELECT ?p WHERE {
    ?hierarchy a qb:HierarchicalCodeList ;
                 qb:parentChildProperty ?p .
    FILTER ( isIRI(?p) )
}

その後、テンプレートは、文字列$pを、インスタンス化クエリによって見つかったIRIと置換することによりインスタンス化されます。テンプレートは次のとおりです。

ASK {
    ?obs qb:dataSet/qb:structure/qb:component/qb:componentProperty ?dim .
    ?dim a qb:DimensionProperty ;
        qb:codeList ?list .
    ?list a qb:HierarchicalCodeList .
    ?obs ?dim ?v .
    FILTER NOT EXISTS { ?list qb:hierarchyRoot/<$p>* ?v }
}
    

IC-21. 階層からのコード(逆)

次元プロパティーに逆のqb:parentChildPropertyを有するqb:HierarchicalCodeListがある場合、すべてのqb:Observationのその次元プロパティーの値は、逆のqb:parentChildPropertyリンクに沿った0以上のホップを用いて、階層のルートから到達できなければなりません。

このチェックは、シンプルな固定SPARQLクエリで行うことができません。その代わりに、クエリ・テンプレートが提供されています。テンプレートのインスタンスは、関連する逆のプロパティーで、そのqb:parentChildPropertyに対して空白ノードの値を持っている個々のqb:HierarchicalCodeListに対して生成されるべきです。それは、次のインスタンス化クエリの?pの個々のバインディングに関するものです。

SELECT ?p WHERE {
    ?hierarchy a qb:HierarchicalCodeList;
                 qb:parentChildProperty ?pcp .
    FILTER( isBlank(?pcp) )
    ?pcp  owl:inverseOf ?p .
    FILTER( isIRI(?p) )
}

その後、テンプレートは、文字列$pを、インスタンス化クエリによって見つかったIRIと置換することによりインスタンス化されます。テンプレートは次のとおりです。

ASK {
    ?obs qb:dataSet/qb:structure/qb:component/qb:componentProperty ?dim .
    ?dim a qb:DimensionProperty ;
         qb:codeList ?list .
    ?list a qb:HierarchicalCodeList .
    ?obs ?dim ?v .
    FILTER NOT EXISTS { ?list qb:hierarchyRoot/(^<$p>)* ?v }
}
    

12. 語彙参照

12.1 データセット

データセットの表現の項を参照してください。

Class: qb:DataSet Sub class of: qb:Attachable Equivalent to: scovo:Dataset
観測データの集合を表わし、ある共通の次元構造に準拠して、様々なスライスへ組織化される可能性がある。

12.2 観測データ

データセットの表現の項を参照してください。

Class: qb:Observation Sub class of: qb:Attachable Equivalent to: scovo:Item
キューブ内の1つの観測データ。1つ以上の関連する計測値を持ちえる。
Property: qb:dataSet ( Domain: qb:Observation -> Range: qb:DataSet )
この観測データがその一部であるデータセットを示す。
Property: qb:observation ( Domain: qb:ObservationGroup -> Range: qb:Observation )
このデータセットのスライス内に含まれている観測データを示す。

12.3 スライス

スライスの項を参照してください。

Class: qb:ObservationGroup
任意の可能性がある、観測データのグループ。
Class: qb:Slice Sub class of: qb:Attachable, qb:ObservationGroup
次元の値(スライスのコンポーネント・プロパティー)のサブセットを固定することで定義されたDataSetのサブセットを示す。
Property: qb:slice ( Domain: qb:DataSet -> Range: qb:Slice; sub property of: qb:observationGroup )
次元の値のサブセットを固定することで定義されたDataSetのサブセットを示す。
Property: qb:observationGroup ( Domain: -> Range: qb:ObservationGroup )
観測データのグループを示す。異なる資源にグループを付与し、1つのDataSetに制限する必要がないように、このプロパティーの定義域はオープンのままにされる。

12.4 次元、属性、測度

次元、属性および測度の項を参照してください。

Class: qb:Attachable
属性と次元を持つことができるすべてに対する抽象スーパークラス。
Class: qb:ComponentProperty Sub class of: rdf:Property
次元、属性または測度を表わすすべてのプロパティーの抽象スーパークラス。
Class: qb:DimensionProperty Sub class of: qb:ComponentProperty, qb:CodedProperty
キューブの次元を表わすコンポーネント・プロパティーのクラス。
Class: qb:AttributeProperty Sub class of: qb:ComponentProperty
キューブ内の観測データの属性を表わすコンポーネント・プロパティーのクラス。例えば、計測の単位。
Class: qb:MeasureProperty Sub class of: qb:ComponentProperty
観測されている現象の計測値を表わすコンポーネント・プロパティーのクラス。
Class: qb:CodedProperty Sub class of: qb:ComponentProperty
すべてのコード化されたコンポーネント・プロパティーのスーパークラス。

12.5 再利用可能な汎用コンポーネント・プロパティー

測度次元の項を参照してください。

Property: qb:measureType ( Domain: -> Range: qb:MeasureProperty )
汎用的な測度次元。この次元の値は、(DSDの測度の集合の)どの測度が観測から与えられるかを示す。

12.6 データ構造定義

コンポーネント仕様とデータ構造定義の項を参照してください。

Class: qb:DataStructureDefinition Sub class of: qb:ComponentSet
DataSetまたはスライスの構造を定義する。
Property: qb:structure ( Domain: qb:DataSet -> Range: qb:DataStructureDefinition )
このデータセットが準拠するする構造を示す。
Property: qb:component ( Domain: qb:DataStructureDefinition -> Range: qb:ComponentSpecification )
データセットの構造に含まれているコンポーネントの仕様を示す。

12.7 コンポーネントの仕様 - DSDでのコンポーネントの使用に限定を与えるために

コンポーネント仕様とデータ構造定義の項を参照してください。

Class: qb:ComponentSpecification Sub class of: qb:ComponentSet
DSDでのその使用に固有のコンポーネント(属性、次元など)のプロパティーを定義するために用いられる。
Class: qb:ComponentSet
1つ以上のComponentPropertiesを参照するものの抽象クラス。
Property: qb:componentProperty ( Domain: qb:ComponentSet -> Range: qb:ComponentProperty )
DataSetで期待されるComponentProperty(つまり、属性/次元)、またはSliceKeyで固定された次元を示す。
Property: qb:order ( Domain: qb:ComponentSpecification -> Range: xsd:int )
この構造をもつ集合のコンポーネントの優先順位を示す。表示を誘導するために用いられる。 - 下位の順位の方が高い準備の前に来て、順序がないコンポーネントが最後に来る。
Property: qb:componentRequired ( Domain: qb:ComponentSpecification -> Range: xsd:boolean )
DSDのコンテキストにおいて、コンポーネント・プロパティーが必須(真)かオプションか(偽)かを示す。属性に対応するコンポーネントにのみ適用可能。デフォルトは偽(オプション)。
Property: qb:componentAttachment ( Domain: qb:ComponentSpecification -> Range: rdfs:Class )
コンポーネント・プロパティーが付与されるべきレベルを示す。これはqb:DataSet、qb:Sliceまたはqb:Observation、もしくはqb:MeasurePropertyでありえる。
Property: qb:dimension ( Domain: -> Range: qb:DimensionProperty ; sub property of: qb:componentProperty )
コンポーネントは次元であると明示するqb:componentPropertyに対する代替。
Property: qb:measure ( Domain: -> Range: qb:MeasureProperty ; sub property of: qb:componentProperty )
コンポーネントは測度であると明示するqb:componentPropertyに対する代替。
Property: qb:attribute ( Domain: -> Range: qb:AttributeProperty ; sub property of: qb:componentProperty )
コンポーネントは属性であると明示するqb:componentPropertyに対する代替。
Property: qb:measureDimension ( Domain: -> Range: qb:DimensionProperty ; sub property of: qb:componentProperty )
コンポーネントは測度次元であると明示するqb:componentPropertyに対する代替。

12.8 スライスの定義

スライスの項を参照してください。

Class: qb:SliceKey Sub class of: qb:ComponentSet
対応するスライスで固定されているDataSetのコンポーネント・プロパティーのサブセットを示す。
Property: qb:sliceStructure ( Domain: qb:Slice -> Range: qb:SliceKey )
このスライスに対応するスライス・キーを示す。
Property: qb:sliceKey ( Domain: qb:DataStructureDefinition -> Range: qb:SliceKey )
このデータセットでスライスに用いられるスライス・キーを示す。

12.9 概念

概念スキームとコード・リストの項を参照してください。

Property: qb:concept ( Domain: qb:ComponentProperty -> Range: skos:Concept )
ComponentPropertyによって計測または示される概念を与える。
Property: qb:codeList ( Domain: qb:CodedProperty -> Range: owl:unionOf(skos:ConceptScheme skos:Collection qb:HierarchicalCodeList) )
CodedPropertyに関連したコード・リストを与える。

12.10 非SKOSの階層

非SKOSの階層の項を参照してください。

Class: qb:HierarchicalCodeList
コーディングに使用できる概念の汎用化された階層を表わす。階層は、子概念に階層内の概念を関連づけるプロパティーとともに、1つ以上のルートによって定義される。異なるqb:parentChildPropertyの値が個々の階層に用いられていれば、同じ概念は複数の階層のメンバーでありえる。
Property: qb:hierarchyRoot ( Domain: qb:HierarchicalCodeList )
階層の根を指定する。階層には複数のルートがあってもよいが、少なくとも1つはなくてはならない。
Property: qb:parentChildProperty ( Domain: qb:HierarchicalCodeList -> Range: rdf:Property )
階層内の親概念を子概念に関連づけるプロパティーを指定する。子が1つ以上の親を持っていてもよいことに注意。

A. 謝辞

この作業は、2010年2月に英国サニングデールのONSが主催する、SDMXおよびセマンティック・ウェブにおける統計データセットの公開に関するワークショップで始められた共同作業に基づいており、それは、チルブルグのODaF 2010ワークショップで継続されました。著者は、この作業への情報提供に対し、これらのワークショップの参加者すべてに感謝していますが、特に、SDMXに関する我慢強い説明とコア・データ・キューブ表現に関する必要な洞察に対しArofan Gregoryに感謝申し上げます。

編集者は、John Sheridanの元の作業に対するコメント、提案、サポートに感謝したい。

W3Cのプロセスを通じた進行中で、多くの個人がこの仕様に関し価値のあるコメントを提供してくださいました。我々は、特にBenedikt Kaempgen、Sarven CapadisliおよびCurran Kelleherの貢献に謝意を表します。

B. 更新履歴

W3C 2013年12月17日勧告案以後の更新: なし。

W3C 2013年3月12日最終草案以後の更新:

W3C 2012年4月5日草案以後の更新:

C. データ・キューブの完全な例

これは、5.4項で紹介した、実行例の完全なデータ・キューブのエンコーディングです。簡潔に示すことができるように、省略形を用いています。これは、すべての完全性チェック(sdmx-dimension:sexの宣言がhttp://purl.org/linked-data/sdmx/2009/dimensionから含まれているとき)にパスし、したがって、整形式の省略されたデータ・キューブです。

@prefix rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:     <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:      <http://www.w3.org/2002/07/owl#> .
@prefix xsd:      <http://www.w3.org/2001/XMLSchema#> .
@prefix skos:     <http://www.w3.org/2004/02/skos/core#> .
@prefix void:     <http://rdfs.org/ns/void#> .
@prefix dct:      <http://purl.org/dc/terms/> .
@prefix foaf:     <http://xmlns.com/foaf/0.1/> .
@prefix org:      <http://www.w3.org/ns/org#> .
@prefix admingeo: <http://data.ordnancesurvey.co.uk/ontology/admingeo/> .
@prefix interval: <http://reference.data.gov.uk/def/intervals/> .

@prefix qb:       <http://purl.org/linked-data/cube#> .

@prefix sdmx-concept:    <http://purl.org/linked-data/sdmx/2009/concept#> .
@prefix sdmx-dimension:  <http://purl.org/linked-data/sdmx/2009/dimension#> .
@prefix sdmx-attribute:  <http://purl.org/linked-data/sdmx/2009/attribute#> .
@prefix sdmx-measure:    <http://purl.org/linked-data/sdmx/2009/measure#> .
@prefix sdmx-metadata:   <http://purl.org/linked-data/sdmx/2009/metadata#> .
@prefix sdmx-code:       <http://purl.org/linked-data/sdmx/2009/code#> .
@prefix sdmx-subject:    <http://purl.org/linked-data/sdmx/2009/subject#> .

@prefix ex-geo:   <http://example.org/geo#> .
@prefix eg:       <http://example.org/ns#> .

# -- Data Set --------------------------------------------

eg:dataset-le3 a qb:DataSet;
    dct:title       "Life expectancy"@en;
    rdfs:label      "Life expectancy"@en;
    rdfs:comment    "Life expectancy within Welsh Unitary authorities - extracted from Stats Wales"@en;
    dct:description "Life expectancy within Welsh Unitary authorities - extracted from Stats Wales"@en;
    dct:publisher   eg:organization ;
    dct:issued      "2010-08-11"^^xsd:date;
    dct:subject
        sdmx-subject:3.2 ,      # regional and small area statistics
        sdmx-subject:1.4 ,      # Health
        ex-geo:wales;           # Wales
    qb:structure eg:dsd-le3 ;  
    sdmx-attribute:unitMeasure <http://dbpedia.org/resource/Year> ;
    qb:slice eg:slice1, eg:slice2, eg:slice3, eg:slice4, eg:slice5, eg:slice6 ;
    .

eg:organization a org:Organization, foaf:Agent;
    rdfs:label "Example org"@en .    
        
# -- Data structure definition ----------------------------

eg:dsd-le3 a qb:DataStructureDefinition;
    qb:component 
    # The dimensions
        [ qb:dimension eg:refArea;         qb:order 1 ],
        [ qb:dimension eg:refPeriod;       qb:order 2; qb:componentAttachment qb:Slice ],
        [ qb:dimension sdmx-dimension:sex; qb:order 3; qb:componentAttachment qb:Slice ];
        
    # The measure(s)
    qb:component [ qb:measure eg:lifeExpectancy];
    
    # The attributes
    qb:component [ qb:attribute sdmx-attribute:unitMeasure; 
                   qb:componentRequired "true"^^xsd:boolean;
                   qb:componentAttachment qb:DataSet; ] ;
    
    # slices
    qb:sliceKey eg:sliceByRegion ;
    .
    
eg:sliceByRegion a qb:SliceKey;
    rdfs:label "slice by region"@en;
    rdfs:comment "Slice by grouping regions together, fixing sex and time values"@en;
    qb:componentProperty eg:refPeriod, sdmx-dimension:sex ;
    .
                   
# -- Dimensions and measures  ----------------------------

eg:refPeriod  a rdf:Property, qb:DimensionProperty;
    rdfs:label "reference period"@en;
    rdfs:subPropertyOf sdmx-dimension:refPeriod;
    rdfs:range interval:Interval;
    qb:concept sdmx-concept:refPeriod ;
    .


eg:refArea  a rdf:Property, qb:DimensionProperty;
    rdfs:label "reference area"@en;
    rdfs:subPropertyOf sdmx-dimension:refArea;
    rdfs:range admingeo:UnitaryAuthority;
    qb:concept sdmx-concept:refArea ;
    .

eg:lifeExpectancy  a rdf:Property, qb:MeasureProperty;
    rdfs:label "life expectancy"@en;
    rdfs:subPropertyOf sdmx-measure:obsValue;
    rdfs:range xsd:decimal ;
    .
    
# -- Observations -----------------------------------------

# Column 1
    
eg:slice1 a qb:Slice;
    qb:sliceStructure  eg:sliceByRegion ;
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    qb:observation eg:o11, eg:o12, eg:o13, eg:o14 ;
    .

eg:o11 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:newport_00pr ;                  
    eg:lifeExpectancy          76.7 ;
    .
    
eg:o12 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:cardiff_00pt ;                  
    eg:lifeExpectancy          78.7 ;
    .

eg:o13 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:monmouthshire_00pp ;                  
    eg:lifeExpectancy          76.6 ;
    .

eg:o14 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:merthyr_tdfil_00ph ;
    eg:lifeExpectancy          75.5 ;
    .

# Column 2
    
eg:slice2 a qb:Slice;
    qb:sliceStructure  eg:sliceByRegion ;
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2004-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-F ;
    qb:observation eg:o21, eg:o22, eg:o23, eg:o24 ;
    .

eg:o21 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:newport_00pr ;                  
    eg:lifeExpectancy          80.7 ;
    .
    
eg:o22 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:cardiff_00pt ;                  
    eg:lifeExpectancy          83.3 ;
    .

eg:o23 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:monmouthshire_00pp ;                  
    eg:lifeExpectancy          81.3 ;
    .

eg:o24 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:merthyr_tdfil_00ph ;
    eg:lifeExpectancy          79.1 ;
    .

# Column 3
    
eg:slice3 a qb:Slice;
    qb:sliceStructure  eg:sliceByRegion ;
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2005-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    qb:observation eg:o31, eg:o32, eg:o33, eg:o34 ;
    .

eg:o31 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:newport_00pr ;                  
    eg:lifeExpectancy          77.1 ;
    .
    
eg:o32 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:cardiff_00pt ;                  
    eg:lifeExpectancy          78.6 ;
    .

eg:o33 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:monmouthshire_00pp ;                  
    eg:lifeExpectancy          76.5 ;
    .

eg:o34 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:merthyr_tdfil_00ph ;
    eg:lifeExpectancy          75.5 ;
    .

# Column 4
    
eg:slice4 a qb:Slice;
    qb:sliceStructure  eg:sliceByRegion ;
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2005-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-F ;
    qb:observation eg:o41, eg:o42, eg:o43, eg:o44 ;
    .

eg:o41 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:newport_00pr ;                  
    eg:lifeExpectancy          80.9 ;
    .
    
eg:o42 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:cardiff_00pt ;                  
    eg:lifeExpectancy          83.7 ;
    .

eg:o43 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:monmouthshire_00pp ;                  
    eg:lifeExpectancy          81.5 ;
    .

eg:o44 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:merthyr_tdfil_00ph ;
    eg:lifeExpectancy          79.4 ;
    .

# Column 5
    
eg:slice5 a qb:Slice;
    qb:sliceStructure  eg:sliceByRegion ;
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2006-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-M ;
    qb:observation eg:o51, eg:o52, eg:o53, eg:o54 ;
    .

eg:o51 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:newport_00pr ;                  
    eg:lifeExpectancy          77.0 ;
    .
    
eg:o52 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:cardiff_00pt ;                  
    eg:lifeExpectancy          78.7 ;
    .

eg:o53 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:monmouthshire_00pp ;                  
    eg:lifeExpectancy          76.6 ;
    .

eg:o54 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:merthyr_tdfil_00ph ;
    eg:lifeExpectancy          74.9 ;
    .

# Column 6
    
eg:slice6 a qb:Slice;
    qb:sliceStructure  eg:sliceByRegion ;
    eg:refPeriod               <http://reference.data.gov.uk/id/gregorian-interval/2006-01-01T00:00:00/P3Y> ;
    sdmx-dimension:sex         sdmx-code:sex-F ;
    qb:observation eg:o61, eg:o62, eg:o63, eg:o64 ;
    .

eg:o61 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:newport_00pr ;                  
    eg:lifeExpectancy          81.5 ;
    .
    
eg:o62 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:cardiff_00pt ;                  
    eg:lifeExpectancy          83.4 ;
    .

eg:o63 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:monmouthshire_00pp ;                  
    eg:lifeExpectancy          81.7 ;
    .

eg:o64 a qb:Observation;
    qb:dataSet  eg:dataset-le3 ;
    eg:refArea                 ex-geo:merthyr_tdfil_00ph ;
    eg:lifeExpectancy          79.6 ;
    .

D. 参考文献

D.1 規範的な参考文献

[DC11]
Dublin Core metadata initiative. Dublin Core metadata element set, version 1.1. July 1999. Dublin Core recommendation. URL: http://dublincore.org/documents/dcmi-terms/
[OWL2-PRIMER]
Pascal Hitzler; Markus Krotzsch; Bijan Parsia; Peter Patel-Schneider; Sebastian Rudolph. OWL 2 Web Ontology Language Primer (Second Edition). 11 December 2012. W3C Recommendation. URL: http://www.w3.org/TR/owl2-primer/
[RDF-CONCEPTS]
Graham Klyne; Jeremy Carroll. Resource Description Framework (RDF): Concepts and Abstract Syntax. 10 February 2004. W3C Recommendation. URL: http://www.w3.org/TR/rdf-concepts/
[RDF-MT]
Patrick Hayes. RDF Semantics. 10 February 2004. W3C Recommendation. URL: http://www.w3.org/TR/rdf-mt/
[RDF-PRIMER]
Frank Manola; Eric Miller. RDF Primer. 10 February 2004. W3C Recommendation. URL: http://www.w3.org/TR/rdf-primer/
[RDF-SCHEMA]
Dan Brickley; Ramanathan Guha. RDF Schema 1.1. 9 January 2014. W3C Proposed Edited Recommendation. URL: http://www.w3.org/TR/rdf-schema/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Internet RFC 2119. URL: http://www.ietf.org/rfc/rfc2119.txt
[SKOS-REFERENCE]
Alistair Miles; Sean Bechhofer. SKOS Simple Knowledge Organization System Reference. 18 August 2009. W3C Recommendation. URL: http://www.w3.org/TR/skos-reference
[sparql11-query]
Steven Harris; Andy Seaborne. SPARQL 1.1 Query Language. 21 March 2013. W3C Recommendation. URL: http://www.w3.org/TR/sparql11-query/
[sparql11-update]
Paul Gearon; Alexandre Passant; Axel Polleres. SPARQL 1.1 Update. 21 March 2013. W3C Recommendation. URL: http://www.w3.org/TR/sparql11-update/

D.2 参考情報の参考文献

[COG]
SDMX Contnent Oriented Guidelines, http://sdmx.org/?page_id=11
[DCAT]
Fadi Maali; John Erickson. Data Catalog Vocabulary (DCAT). W3C Candidate Recommendation. 5 November 2013. URL: http://www.w3.org/TR/vocab-dcat/
[FOAF]
Dan Brickley, Libby Miller. FOAF Vocabulary Specification 0.98. 9 August 2010. URL: http://xmlns.com/foaf/spec/
[HAUS09]
Michael Hausenblas; Wolfgang Halb; Yves Raimond; Lee Feigenbaum; Danny Ayers. SCOVO: Using Statistics on the Web of Data. 2009. URL: http://mhausenblas.info/pubs/eswc09-inuse-scovo.pdf
[LOD]
Linked Data, http://linkeddata.org/
[OLAP]
Online Analytical Processing Data Cubes, http://en.wikipedia.org/wiki/OLAP_cube
[ORG]
Dave Reynolds. The Organzation Ontology. 25 June 2013. W3C Candidate Recommendation. URL: http://www.w3.org/TR/vocab-org/
[OS-GEO]
Ordnance Survey Administrative Geography Ontology, http://data.ordnancesurvey.co.uk/ontology/admingeo/
[SCOVO]
The Statistical Core Vocabulary, http://sw.joanneum.at/scovo/schema.html
[SDMX-GUIDE]
SDMX User Guide, Version 2009.1, January 2009. Statistical Data and Metadata Exchange Initiative. URL: http://sdmx.org/wp-content/uploads/2009/02/sdmx-userguide-version2009-1-71.pdf
[SDMX20]
SDMX Information Model: UML Conceptual Design (Version 2.0), November 2005, Statistical Data and Metadata Exchange Initiative. URL: http://sdmx.org/docs/2_0/SDMX_2_0%20SECTION_02_InformationModel.pdf
[SKOS-PRIMER]
Antoine Isaac; Ed Summers. SKOS Simple Knowledge Organization System Primer. 18 August 2009. W3C Note. URL: http://www.w3.org/TR/skos-primer
[turtle]
Eric Prud'hommeaux; Gavin Carothers. RDF 1.1 Turtle. 9 January 2014. W3C Proposed Recommendation. URL: http://www.w3.org/TR/turtle/
[void]
Keith Alexander; Richard Cyganiak; Michael Hausenblas; Jun Zhao. Describing Linked Datasets with the VoID Vocabulary. 3 March 2011. W3C Note. URL: http://www.w3.org/TR/void/