DSPL デベロッパー ガイド

DSPL は Dataset Publishing Language の略です。これは、メタデータ(データセットの名前と情報、データセットに含まれる概念など)と、データセットのデータの両方を表す形式です。この形式で説明するデータセットは、Google Public Data Explorer にインポートできます。このツールは、データを視覚的に探索できます。

注: 一般公開データ アップロード ツールを使用して Google Public Data にデータをアップロードするには、Google アカウントが必要です。

このドキュメントは、Public Data Explorer でコンテンツを利用できるようにしたいデータオーナーを対象としています。DSPL スキーマとサポートされている機能の詳細について、チュートリアルで詳しく説明します。XML に関する基本的な知識があることを前提としていますが、リレーショナル データベースの知識も必要です。

必須ではありませんが、チュートリアルを読むことをおすすめします。このチュートリアルは、短くてわかりやすく、このドキュメントを読む前に理解できます。

概要

DSPL データセットは、XML ファイルと一連の CSV ファイルを含む .zip ファイルです。CSV ファイルは、データセットのデータを含むシンプルなテーブルです。XML ファイルは、データセットのメタデータを記述します。後者には、メジャーの説明などの情報メタデータと、テーブル間の参照などの構造メタデータが含まれます。このメタデータを使用すると、エキスパート以外のユーザーがデータを探索して可視化できます。

プロセス

一般に、DSPL データセットを作成するプロセスは次のとおりです(一部の手順は並行して行われます)。

  1. DSPL XML ファイルを作成します。
  2. データセットで使用する外部データソースをすべて特定します。
  3. コンセプト、スライス、トピック(省略可)を定義します。DSPL ファイルのコンテンツを反復的に更新します。
  4. ソースデータを .csv ファイルにエクスポートします。
  5. DSPL データセットを作成します。
  6. Google にデータセットを送信します。

XML 構造

概要

DSPL XML ファイルは、データセット、メタデータ(概念、スライス、トピック、テーブル間の構造的関係など)を定義します。このファイルは手動で作成することもできますが、データ処理ツールとスクリプトを使用すると処理を大幅に効率化できます。サンプル DSPL ファイルを新しいウィンドウで表示します

このファイルには、次の表に示す複数のセクションが含まれています。表ごとに前者について詳しく説明しています。

セクション まとめ 詳細
ヘッダーとインポート データセットの他のすべての要素の親。データセットのターゲット名前空間(識別子)とインポートされたデータセットの名前空間が含まれます。 ドキュメント
データセット情報 データセットの名前、説明、URL。 ドキュメント
プロバイダ情報 データセット プロバイダの名前、説明、URL。 ドキュメント
コンセプト

データセットに含まれる「もの」の定義(例:国、失業率、性別など)

各コンセプトには一意の識別子があります。これはスライスとテーブルで参照できます。

ドキュメント
Slices

データセット内に統計データが存在するコンセプトの組み合わせ。各スライスにはディメンションと指標が含まれます。

スライスは、コンセプトと、実際のデータが含まれるテーブルを参照します。各スライスには、実際のデータを含むテーブルで参照できる一意の識別子があります。

ドキュメント
テーブル コンセプトとスライスのデータを定義します。コンセプト テーブルは列挙型を、スライス テーブルは統計データを保持します。テーブルは XML ファイルで定義され、実際のデータを含む .csv ファイルを指します。 ドキュメント
トピック データセットのコンセプトを整理するためのカテゴリ。必須ではありませんが、ユーザーがデータを操作するときに便利です。 ドキュメント

ヘッダーとインポート

Public Data Namespace の宣言

DSPL データセットは、最上位の <dspl> 要素から始まります。これは、すべてのデータセット情報を囲み、ファイル全体で使用される名前空間を示すために使用されます。次の例をご覧ください。

<?xml version="1.0" encoding="UTF-8"?>
<dspl targetNamespace="http://www.example.com/mystats"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.google.com/dspl/2010" >
    ...
</dspl>

名前空間は、XML スキーマ(XML 要素と属性のセット)に関連付けることができる一意の識別子です。targetNamespace は、データセットを識別する URI を提供します。この URI は実際のリソースを指す必要はありませんが、コンテンツまたはデータセットを記述するドキュメントに URI を解決することをおすすめします。

targetNamespace を指定する必要はありません。指定しない場合は、インポート時に自動的に生成されます。

targetNamespace 属性の後に、ファイルで使用する他の XML スキーマを指定する一連の xmlns 属性が続きます。すべての DSPL ファイルには、Google Public Data スキーマ(URI は「http://schemas.google.com/dspl/2010」)が含まれており、これをデフォルトの名前空間として使用する必要があります。また、「http://www.w3.org/2001/XMLSchema-instance」で識別される標準の W3 XML スキーマも含める必要があります。次のセクションで説明するように、他の Namespace を追加して他のデータセットからの情報を含めることができます。

他のデータセットの名前空間のインポート

データセットは、他のデータセットの定義とデータを再利用できます。たとえば、Google は、ユーザーデータに共通するコンセプトを定義する基本的なデータセットを数多く提供しています。たとえば、ほとんどのデータセットには年を表すコンセプトが必要です。新しいコンセプトを定義する代わりに、「http://www.google.com/publicdata/dataset/time」データセットにある年のコンセプトを使用できます。詳しくは、正規のコンセプト ページをご覧ください。

外部データセットを使用するには、名前空間宣言の直後に DSPL ファイルに <import> 要素を追加し、インポートするデータ空間を指定します。

<import namespace="http://www.google.com/publicdata/dataset/google/time"/>

次のように、インポートした名前空間(この場合は time="http://www.google.com/publicdata/dataset/google/time")をファイルの先頭の名前空間宣言に追加します。

<?xml version="1.0" encoding="UTF-8"?>
<dspl targetNamespace="http://www.stats-bureau.com/mystats"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.google.com/dspl/2010"
    xmlns:time="http://www.google.com/publicdata/dataset/google/time" >
<import namespace="http://www.google.com/publicdata/dataset/google/time"/>

DSPL ファイルで、Google 一般公開データの時間データセットの要素を参照できるようになりました。参照するデータセットごとにこのプロセスを繰り返します。

外部データセット内のコンテンツの参照

別のデータセットをインポートしたら、そのデータセットのコンセプト、スライス、データを参照できる必要があります。これを行うには、prefix:other_id 形式の参照を使用します。ここで、prefix は、外部データセットの名前空間に使用される接頭辞です。

time データセットの year コンセプトへの参照の例を次に示します(上記を参照)。

<slices>
  <slice id="country_slice">
    <dimension concept="country"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <table ref="country_slice_table"/>
  </slice>
  ...
</slices>

データセット情報

<info> 要素には、データセットに関する記述情報が含まれます。関連する XML 要素の例と詳細を以下に示します。

<info>
  <name>
    <value>Unemployment Rates</value>
  </name>
  <description>
    <value>Worldwide unemployment rates by region</value>
  </description>
  <url>
    <value>http://www.example.com/mystats/info.html</value>
  </url>
</info>

要素

要素 必須 説明
<info> データセットに関する説明情報をすべて囲みます。子要素 <name><description><url> が含まれます。
<name> <info> の子。データセットの名前を識別する子要素 <value> が含まれます。
<description> 任意 <info> の子。データセットのテキストの説明を含む子要素 <value> が含まれます。
<url> <info> の子。データセットに関する詳細情報の URL へのリンク。

プロバイダ情報

<provider> 要素には、データセット プロバイダに関する情報が一覧表示されます。関連する XML 要素の例と詳細を以下に示します。

<provider>
  <name>
    <value>Bureau of Statistics</value>
  </name>
  <url>
    <value>http://www.example.com</value>
  </url>
</provider>

要素

要素 必須 説明
<provider> データセット プロバイダに関する説明情報をすべて囲みます。子要素 <name><url> が含まれます。
<name> 任意 <provider> の子。データセット プロバイダの名前を識別する子要素 <value> が含まれます。
<url> 任意 <info> の子。データセット プロバイダに関する詳細情報の URL へのリンク。

コンセプト

説明

各データセットには、1 つ以上のコンセプトが含まれます。コンセプトは、データセットに現れるデータの種類の定義です。たとえば、人口データを示すデータセットには、国、都道府県、人口、年という概念が含まれることがあります。特定のコンセプトに対応するデータ値は、そのコンセプトのインスタンスと呼ばれます。コンセプトは通常データセットで記述されますが、一部のコンセプト(時間、年など)は外部データセットで記述できます。

各コンセプトには 1 つ以上の「プロパティ」を含めることができます。プロパティとは、時間の経過とともに安定している概念インスタンスの特性です。たとえば、この国のコンセプトは namepopulationcapital というプロパティを持つことができます。

コンセプトには 1 つ以上の属性を含めることもできます。属性は、個々のインスタンスではなく、コンセプト レベルで情報を提供します。たとえば、失業率の概念を含むデータセットがある場合は、この概念が割合であることを指定する属性を使用できます。属性の一般的な使用例は、ユニット情報を提供することです。

次に、一意の ID である country とプロパティ name を使用する国のコンセプトの例を示します。コンセプト ID は、スライスとテーブルからのコンセプトの参照に使用できます。

<concept id="country" extends="geo:location">
  <info>
    <name><value>Country</value></name>
    <description>
      <value>My list of countries.</value>
    </description>
  </info>
  <type ref="string"/>
  <property id="name">
    <info>
      <name><value>Name</value></name>
      <description>
        <value>The official name of the country</value>
      </description>
    </info>
    <type ref="string" />
  </property>
  <property concept="geo:continent" isParent="true"/>
  <property id="capital" concept="geo:city" />
  <table ref="countries_table" />
</concept>

このサンプルについて解説します。

  • このコードは、ID が country、コンセプトが namecontinentcapital である国を表します。
  • このコンセプトは、ビジネス情報の標準的なコンセプトである geo:location を拡張したものです。geo:location を拡張することで、country は、拡張概念で定義されたすべてのプロパティと属性(プロパティ名、説明、URL、緯度と経度)を継承します。拡張コンセプトによって提供される属性と定義が一致していれば、country はこれらの属性とプロパティの一部を再定義しても問題ありません。
  • コンセプト <info> 要素には、コンセプトに関する重要な情報を記述します。これは、Public Data Explorer のデータセットのランディング ページに表示されます。
  • <type> 要素のコンセプトは、コンテンツのタイプを表します。この例では文字列ですが、変動する可能性があります。コンセプトの母集団は integer 型、コンセプト Eurovision winner はブール値の型になります。
  • <property> 要素は、一意の ID(id)、infotype など、コンセプトの各プロパティを記述します。プロパティでそのコンセプトの有効なインスタンスであることを示すため、コンセプトを参照することもできます。
  • このコンセプトは、実際のデータを含む CSV ファイルを指すデータテーブルを参照します。データテーブルは、<table ref="countries_table"/> のように参照されます。

    コンセプトがテーブルを参照する場合、関連するデータファイルに、そのコンセプトのインスタンスがすべてリストされている必要があります。たとえば、データセットに含まれる少数の国だけを表示するテーブルを作成することはできません。(対象の国のサブセットがある場合は、それを説明する別のコンセプトを作成できます。例: mycountries)。

要素

要素 必須 説明
<concepts> 最上位の要素。すべての <concept> 要素を囲みます。
<concept> コンセプトを識別します。必須の属性 id の値は、データセット内のコンセプトに対して一意である必要があります。コンセプトがテーブルのデータコンセプトを参照する場合、id の値は、データテーブルのコンセプトを説明する列見出しと一致する必要があります。extends 属性を使用して、このコンセプトが別のコンセプトを拡張していることを示すことができます。extends の値は、同じデータセットで定義されているコンセプトの ID と一致しているか、prefix:concept_id の形式である必要があります。concept_id は、prefix に関連付けられたインポートされる外部データセットで定義されたコンセプトの ID です。
<info> 任意 コンセプトを説明する情報が含まれています。
<name> <info> の子。コンセプトの名前。子要素 <value> にはテキストが含まれます(例: Country)。
<description> 任意 <info> の子。コンセプトの説明を含む子要素 <value> が含まれます。
<url> 任意 <info> の子。コンセプトの URL を含む子要素 <value> が含まれます。
<pluralName> 任意 <info> の子。コンセプトの複数形名。子要素 <value> にはテキストが含まれます(例: Countries)。
<totalName> 任意 <info> の子。コンセプトのすべてのインスタンスの組み合わせの名前。子要素 <value> にはテキストが含まれます(country コンセプトの場合は World など)。
<type> 任意 このコンセプトで説明されているコンテンツの種類を示します。必須の属性 ref には次の許容値があります。
  • 文字列
  • float
  • 整数
  • date
  • boolean
コンセプトが別のコンセプトを拡張する場合は、省略できます。その場合、そのコンセプトは拡張されたコンセプトから継承されます。
<property> 任意

コンセプトのプロパティ(capital など)。必須の属性 id の値は、コンセプトに固有のものである必要があります。オプションの concept 属性を使用すると、このプロパティの値が特定のコンセプトのインスタンスであることを示すことができます。concept を指定した場合、id を省略できます。この値は、参照されるコンセプトの ID として暗黙的に定義されます(例:<property concept="geo:country"/><property id="country" concept="geo:country"/> と同等です)。

プロパティには、コンセプトのインスタンスとこのプロパティの値の関係が階層的であることを示すために、ブール値の isParent 属性を含めることができます。

プロパティには、コンセプトのインスタンスとプロパティの値の間に 1 対 1 のマッピングがあることを示すために、ブール値の isMapping 属性を含めることができます。

プロパティでは、ネストされた infotype を指定できます。これらはコンセプトの場合と同様に定義されます。 type は、プロパティに concept 属性を指定していない場合に必要です。指定する場合は、参照されるコンセプトの型と一致する必要があります。

<attribute> 任意

コンセプトの属性。属性は、コンセプトに関する追加情報を表します(例:GDP は割合です)。必須の属性 id の値は、コンセプトに固有のものである必要があります。オプションの concept 属性を使用すると、この属性の値が特定のコンセプトのインスタンスであることを示すことができます。concept を指定する場合は、id を省略できます。その値は、参照されるコンセプトの ID として暗黙的に定義されます。(例: <attribute concept="unit:unit"/><attribute id="unit" concept="unit:unit"/> と同等です。

属性では、ネストされた infotype を指定できます。これらはコンセプトと同様に定義されます。属性に concept 属性が指定されていない場合、type は必須です。指定された場合、参照されるコンセプトの型と一致する必要があります。

<table> 任意 コンセプトのデータを含むデータテーブルを識別します。必須の ref 属性の値は、関連する <table> 要素で指定されたテーブル ID と一致する必要があります。

スライス数

説明

スライスは、データが存在するコンセプトの組み合わせです。スライスには、ディメンション指標の 2 種類のコンセプト参照が含まれます。ディメンションは、データのセグメント化またはフィルタリングに使用するコンセプトです。一方、指標は、観測された各データポイントに関連付けられた値を記述します。

一般に、ディメンションはカテゴリですが、指標はカテゴリではなく時間で変化する数値です。各プロトタイプのプロトタイプの例を次に示します。

  • ディメンション: 国、州、郡、地域、年、月、性別、年齢カテゴリ、業界セグメント
  • 指標: 人口、GDP、失業率、リテラシー、収益、費用、価格

<slices>
  <slice id="country_slice">
    <dimension concept="country"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <table ref="country_slice_table"/>
  </slice>
  ...
</slices>

このサンプルについて解説します。

  • このスライスは国別の人口を表しています。
  • 指標 population、ディメンション countryyear があります。各ディメンションは、別の場所ですでに定義されているコンセプトです。コンセプト country と指標 population は、現在のスライスと同じデータセットに存在し、concept="country" のように参照されます。
  • コンセプト year は、インポートされたデータセット時間に存在し、コンセプト名の前に使用されている接頭辞で識別されます(year)。例: concept="time:year"
  • スライスは、実際のデータを含む CSV ファイルを指すデータテーブルを参照します。データテーブルは <table ref="country_slice_table"/> のように参照されます。(データセットのインポートについての詳細は、上記をご覧ください)。

注: 一般的に、指標を最小限に抑えて意味のあるディメンションを作成すると、データセットの柔軟性が向上します。たとえば、指標 Female UnemploymentMale Unemployment を作成する代わりに、単一の指標 Unemployment を作成し、インスタンス FemaleMale を持つディメンション Gender を追加します。

要素

要素 必須 説明
<slices> 最上位の要素。すべての <slice> 要素を囲みます。
<slice> 任意 スライスを識別します。必須の属性 id の値は、スライスに一意である必要があります。
<dimension> 任意 コンセプトを参照することで、スライスのディメンションを定義します。必須属性 concept の値は、コンセプトの一意の ID と正確に一致する必要があります。コンセプトが外部からインポートされたデータセットに属している場合は、有効な接頭辞を使用する必要があります。
<metric> 任意 コンセプトを参照することで、スライスの指標を定義します。必須属性 concept の値は、コンセプトの一意の ID と正確に一致する必要があります。コンセプトが外部にインポートされたデータセットに属している場合は、有効な接頭辞を使用する必要があります。
<table> スライスのデータを含むデータテーブルを識別します。必須の ref 属性の値は、関連する <table> 要素で指定されたテーブル ID と一致する必要があります。
<mapDimension> 任意 <table> の子。 concept 属性と toColumn 属性が含まれます。最初の値はスライスのディメンション、2 番目の値は前の値に対応するテーブル列です。
<mapMetric> 任意 <table> の子。 concept 属性と toColumn 属性が含まれます。最初の値はスライスに含まれる指標で、2 番目の値は前者に対応するテーブル列です。

Tables

説明

DSPL ファイルの tables セクションは、データセットに含まれるデータテーブルを識別します。これらのテーブルは、コンセプトまたはスライスで参照できます。各 <table> 要素は、テーブルの列とその型を指定し、テーブルデータを含む CSV ファイルを指定します。

<tables>
  <table id="country_slice_table">
    <column id="country" type="string"/>
    <column id="year" type="date" format="yyyy"/>
    <column id="population" type="integer"/>
    <data>
      <file format="csv" encoding="utf-8">country_slice.csv</file>
    </data>
  </table>
  ...
</tables>

このサンプルについて解説します。

  • このサンプルでは、テーブル country_slice_table について説明します。このテーブルの列は countryyearpopulation です。
  • テーブル内の各列には、id 属性で定義された一意の ID が割り当てられます。この ID は、関連するデータファイル内の適切な列見出しと完全に一致している必要があります。
  • オプションの type 属性の値は、各列のデータ型を定義します。
  • <data> 要素は、テーブルのデータを含む実際の .csv ファイル(country_slice.csv)を記述します。ファイル形式は常に csv です。

要素

要素 必須 説明
<tables> 最上位の要素。すべての <table> 要素を囲みます。
<table> テーブルを識別します。必須の属性 id の値はテーブルに対して一意である必要があります。
<column> 任意 <table> の子。テーブルに含まれる列に関する情報。次の属性が含まれます。
  • id(必須): 列の ID。
  • type(省略可): 指定した列の情報のデータ型。指定できる値は stringfloatintegerdateboolean です。
<data> 任意 <table> の子。テーブルによって参照されるデータファイル。ファイル名が URL 形式(http://... など)を指定した場合、ファイルは適切なプロトコル(HTTP、HTTPS、FTP)で取得されます。それ以外の場合、この名前を持つファイルをデータセットにバンドルする必要があります。 必須属性 format の値は常に csv です。encoding 属性は省略可能ですが、.csv ファイルは UTF-8 でエンコードされている必要があります。

トピック

説明

トピックによりコンセプトが階層的に分類されるため、ユーザーはデータセットに簡単にアクセスできます。

DSPL ファイルの <concepts> 要素の直前に <topics> 要素が表示されます。(要素の順序は重要です。要素の順序が間違っている場合、データセットをアップロードできないことがあります)。トピックを使用するには、コンセプト定義からトピックを参照してください。

トピックの定義の例を次に示します。

<topics>
  <topic id="population_indicators">
    <info>
      <name>
        <value>Population indicators</value>
      </name>
    </info>
  </topic>
  ...
</topics>
  

次に、概念からのこのトピックへの参照例を示します。

<concept id="population">
  <info>
    <name>
      <value>Population</value>
    </name>
    <description>
      <value>Size of the resident population.</value>
    </description>
  <topic ref="population_indicators"/>
  <type ref="integer"/>
</concept>

トピックはネストでき、コンセプトは複数のトピックを参照できます。

要素の定義

要素 必須 説明
<topics> 最上位の要素。すべての <topic> 要素を囲みます。
<topic> トピックを識別します。必須属性 id の値はデータセットに対して一意でなければなりません。
<info> 任意 <topic> の子。トピックに関する情報を囲みます。
<name> 任意 <info> の子。その子要素 <value> は、トピックの名前を指定します。

DSPL データファイル

DSPL データセットには、XML メタデータ ファイルに加えて、CSV 形式のデータファイルを 1 つ以上含めることができます。各データファイルはデータセット内のテーブルをサポートし、<data>...</data> セクションの前者から参照されます。概念的には、これらのファイルとそれに関連するテーブルは、コンセプト定義またはスライス データを表すために使用されます。これらの各データファイル形式について、以下で詳しく説明します。

目的にかかわらず、すべてのデータファイルはカンマ区切りの(CSV)UTF-8 テキスト ファイルである必要があります。ファイルには書式なしテキストのみを含め、HTML は含めないでください。データファイルは手動で作成できますが、実際には、元のデータソースを含むツール(スプレッドシートなど)またはエクスポートしたファイル自体でデータを処理する必要があります。

ファイルはデータセットにバンドルできます。名前に URL を使用する場合は、HTTP、HTTPS、FTP を介してリモートソースから取得できます。

コンセプト データファイル

コンセプト データファイルには、各コンセプトに関連する情報が含まれています。コンセプト定義では、<table> 要素を使用してこのファイルを参照します。

上で定義した country のコンセプトの表の例を次に示します。

country, name
AD, Andorra
AF, Afghanistan
AI, Anguilla
AL, Albania
AO, Angola
AQ, Antarctica
AS, American Samoa

この例の仕組みは次のとおりです。

  • マッピングが指定されていない限り、データファイルの最初の行(列見出し)は、データが関連付けられているコンセプトの ID および適切なプロパティ ID と完全に一致する必要があります。ただし、データファイルとコンセプト テーブルでは、列の順序は同じにする必要はありません。この場合、最初の列は country というコンセプトに関連付けられ、2 番目の列はプロパティ name に関連付けられます。
  • プロパティ列は省略可能です。テーブルに列がない場合、その値は各行が未定義であるとみなされます。たとえば、上記の表では、latitude プロパティと longitude プロパティの列は省略されているため、国はマッピングできません。
  • コンセプト ID フィールドの各値(この場合は country)は、空ではなく、空でなければなりません(空のフィールドは、空白文字、または空白文字のみを含むフィールドです)。
  • 他のコンセプトを参照するプロパティの値は、空にするか、参照されるコンセプトの有効な値にする必要があります。
  • 値を二重引用符で囲む必要はありません。ただし、カンマ、二重引用符、改行文字は除きます。
  • 値内のリテラル二重引用符は、二重引用符で囲んでエスケープします。

スライス データファイル

スライス データファイルには、各スライスの関連データが含まれます。スライス定義は <table ref="..."> 要素を使用して <table> 定義を参照します。これにより、このファイルが識別されます。

上記の population_by_country スライスのデータを含む .csv ファイルの例を次に示します。

country, year, population
AF, 1960, 9616353
AF, 1961, 9799379
AF, 1962, 9989846
AF, 1963, 10188299

例は次のとおりです。

  • 指標フィールドは population です。country フィールドと year フィールドはディメンション フィールドです。
  • ディメンション フィールドの各値は空にできません。これには、時間のディメンションも含まれます。指標フィールドの値は空にできます。空の値は文字で表されません。
  • コンセプトを参照する各列見出し(たとえば、上記の例の最初のフィールドはコンセプト country を参照)は、コンセプト定義内のコンセプトの一意の ID と完全に一致する必要があります。
  • ディメンション値の一意の組み合わせ(AF, 2000 など)は 1 回だけ使用できます。
  • 同じ時系列の行(つまり、時間以外のすべてのディメンション値の組み合わせが同じ行)はグループ化する必要がありますが、特に並べ替える必要はありません。

高度な機能

多言語データセット

変換された XML 値

DSPL ファイル内のすべての <value> 要素で xml:lang 属性を使用できます。この属性では、標準の W3C 言語タグを使用して、要素のコンテンツの言語を指定します。この機能の使用は任意です。xml:lang 属性を指定しないと、コンテンツは英語とみなされます。

次の例は、英語、ブルガリア語、カタロニア語、中国語(簡体)のデータセットのスニペットを示しています。

<dspl ...>
  <info>
    <name>
      <value xml:lang="en">World Bank, World Development Indicators</value>
      <value xml:lang="bg">Световна банка, Индикатори за световно развитие</value>
      <value xml:lang="ca">Banc Mundial, Indicadors del desenvolupament mundial</value>
      <value xml:lang="zh-CN">国家/地区</value>
    </name>
    ...
  </info>

  <concepts>
    <concept id="country">
      <info>
        <name>
          <value xml:lang="en">Country</value>
          <value xml:lang="bg">Страна</value>
          <value xml:lang="ca">País</value>
          <value xml:lang="zh-CN">国家/地区</value>
        </name>
        ...
      </info>
      ...
    </concept>
    ...
  </concepts>

  ...
</dspl>

変換されたプロパティ

コンセプト レベルのメタデータにとどまらず、個々のコンセプト インスタンスに(または代わりに)適用する翻訳が必要になることがあります。これは、コンセプト プロパティの値(名前など)が言語によって異なる場合に特に便利です。

このような値を複数の言語で指定するには、プロパティと言語の組み合わせごとに、対応する定義テーブルに 1 つの列を作成します。コンセプトのテーブル参照タグに <mapProperty xml:lang="..." ref="..." toColumn="..."> 要素のセットを追加して、これらの列を関連するプロパティと言語にリンクします。

次の例は、英語、スペイン語、フランス語の名前を含んだ国のコンセプトを定義しています。

<concepts>
  ...
  <concept id="country" extends="geo:location">
    ...
    <property id="name">
      <info>
        <name>
          <value>Name</value>
        </name>
        <description>
          <value>The official name of the country</value>
        </description>
      </info>
      <type ref="string" />
    </property>
    ...
    <table ref="countries_table">
      <mapProperty xml:lang="en" ref="name" toColumn="name_en"/>
      <mapProperty xml:lang="es" ref="name" toColumn="name_es"/>
      <mapProperty xml:lang="fr" ref="name" toColumn="name_fr"/>
    </table>
  </concept>
  ...
</concepts>

...

<tables>
  ...
  <table id="countries_table">
    <column id="country" type="string"/>
    <column id="name_en" type="string"/>
    <column id="name_es" type="string"/>
    <column id="name_fr" type="string"/>
    ...
  </table>
</tables>

countries_table の CSV ファイルは、次のような形式になります。

country,name_en,name_es,name_fr,...
...
US,United States of America,Estados Unidos de América,États-Unis d'Amérique,...
...

マッピング可能なコンセプト

多くの概念(郡、州、都市など)には、地理的位置に対応するインスタンスがあります。DSPL はこれらのインスタンスをジオコーディングし、Google Public Data のアニメーション マップのグラフで視覚化できるようにサポートしています。

コンセプトが世界の国、米国の州、米国の郡と同等である場合は、対応する Google の正規のコンセプトにリンクするだけで済みます。明示的なジオコーディングは必要ありません。詳しくは、正規の概念に関するガイドをご覧ください。

そうでない場合は、コンセプトをマッピング可能にする必要があります。まず、geo:location から拡張します。

<concept id="..." extends="geo:location">
  ...
</concept>

次に、緯度と経度をプロパティとして明示的に追加する必要があります。

<concept id="..." extends="geo:location">
  ...
  <property id="latitude"/>
  <property id="longitude"/>
</concept>
  

これらの値は、対応するコンセプト定義データテーブルの列として指定されます。

概念的な関係

多くの場合、概念は体系的な方法で他の概念と関連します。たとえば、1 つの大陸のインスタンスに複数の国のインスタンスが含まれる場合があります。国のインスタンスには複数の州または州のインスタンスが含まれる場合があります。これらの関係をデータセット メタデータにエンコードすると、選択可能な場所の折りたたみ可能なツリーを表示するなど、他の方法では実現できない高度な可視化機能を実現できます。

以下のセクションでは、DSPL スキーマでサポートされるコンセプトの関係について説明します。

階層

DSPL では、親コンセプトのインスタンスの識別子を含む子コンセプトの <property> タグ内で isParent="true" 属性を使用することで、コンセプト階層が表されます。

たとえば、Google の米国のコンセプトは次のような形式です。

<concept id="us_county" extends="geo:location">
  <info>
    <name>
      <value xml:lang="en">County</value>
    </name>
    ...
  </info>
  ...
  <property id="state" concept="us_state" isParent="true"/>
  ...
  <data>
    <table ref="reference_us_counties"/>
  </data>
</concept>
  

サポートするデータテーブルには、各郡の 2 文字の州コードを含む state 列があります。このタイプのメタデータでは、Public Data Explorer で州と郡を階層として表示できます。この機能により、ユーザーが簡単にデータ探索を行えるようになります。

コンセプトには多くの子を設定できますが、親は 1 つのみです。

マッピング

コンセプト マッピング(つまり、基本的に同じものを表すコンセプト)は、マッピングされたコンセプトの property タグ内の isMapping="true" 属性で表現されます。

あるコンセプトが別のコンセプトにマッピングされることを指定すると、前者は後者のすべてのプロパティと属性を継承できます。これは特に、地域の地理的概念を Google の正規の地域データセットで定義された定義と「リンク」させる場合に便利です。

<concept id="my_country" extends="geo:location">
  <info>
    <name>
      <value xml:lang="en">Country</value>
    </name>
    ...
  </info>
  ...
  <property id="google_country_code" concept="geo:country" isMapping="true"/>
  <data>
    <table ref="countries_concept"/>
  </data>
</concept>
  

広告表示オプション

コンセプトの拡張は、対応するコンセプトの定義の extends 要素で指定されます。拡張機能は、特定のコンセプトが別の広範なコンセプトのサブクラスであることを示すのに役立ちます。拡張コンセプトは親のすべての属性とプロパティを継承します。また、他の属性とプロパティも追加できます。

たとえば、Google の currency コンセプトは unit を拡張します。

<concept id="unit">
  ...
</concept>

<concept id="currency" extends="unit">
  <info>
    <name>
      <value xml:lang="en">Currency unit</value>
    </name>
    ...
  </info>
  ...
  <table ref="currency_table"/>
</concept>
  

詳細な説明と例については、チュートリアルのコンセプトの拡張に関する説明をご覧ください。

データセットの送信

データセットを Google Public Data Explorer に送信するには、次の手順を行います。

  1. ディレクトリを作成します。
  2. 作成した DSP ファイルを、作成したディレクトリに保存します。拡張子は .xml にしてください。
  3. ローカルの .csv ファイルを同じディレクトリに保存します。URL で参照されるデータファイルは省略できます。
  4. ディレクトリを ZIP 形式で圧縮します。
  5. Google Public Data Explorer にデータセットをアップロードします。

データセットをアップロードして検証したら、Google アカウントにログインしたときにテストできます。チェックして準備が整うまでは公開されません。