DSPL 开发者指南

DSPL 代表数据集发布语言。它是表的元数据(有关数据集的信息,如名称和提供程序及其包含和显示的概念)和数据集实际数据的表示格式。可将此格式所述的数据集导入 Google 公开数据浏览器,借助该工具,用户可以直观地浏览数据。

注意:若要使用公开数据上传工具将数据上传到 Google 公开数据,您必须拥有 Google 帐号

本文档适用于希望在公共数据资源管理器中提供其内容的数据所有者。除教程之外,它还会深入介绍 DSPL 架构和支持的功能。虽然关系型数据库的知识也很有用,但只有 XML 知识的初级熟悉程度才比较高。

虽非硬性要求,但我们建议您先仔细阅读教程,该教程较短且易于理解,然后再查看本文档。

概览

DSPL 数据集是一个 .zip 文件,其中包含一个 XML 文件和一组 CSV 文件。CSV 文件是包含数据集数据的简单表格,XML 文件则描述数据集的元数据。后者包含测量信息说明等的信息元数据,以及表之间的引用等结构元数据。此元数据可让非专家用户探索和直观呈现您的数据。

处理

通常,创建 DSPL 数据集的过程如下所示(一些步骤可能会并行进行):

  1. 创建 DSPL XML 文件。
  2. 确定要在数据集中使用的外部数据源。
  3. 定义您的概念、切片和(可选)主题。迭代更新 DSPL 文件的内容。
  4. 将您的源数据导出为 .csv 文件。
  5. 创建 DSPL 数据集。
  6. 将数据集提交给 Google。

XML 结构

概览

DSPL XML 文件定义了数据集的元数据,包括概念、切片、主题和表之间的结构关系。 虽然可以手动创建此文件,但数据处理工具和脚本可以极大地简化流程。在新窗口中查看 DSPL 示例文件

该文件包含许多部分,下表进行了总结。我们在下表中更详细地介绍了每种操作。

小节 总结 更多信息
标头和导入 数据集的所有其他元素的父级。包括数据集的目标命名空间(即标识符),以及任何导入的数据集的命名空间。 文档
数据集信息 数据集的名称、说明和网址。 文档
提供商信息 数据集提供商的名称、说明和网址。 文档
概念

数据集中出现的“事物”的定义(例如,国家/地区、失业率、性别等)

每个概念都有一个唯一标识符,可通过切片和表引用。

文档
Slice

数据集中有统计信息的概念组合。每个切片都包含维度指标

Slice 引用概念和表格,其中包含实际数据。每个切片都有一个唯一标识符,可以由包含实际数据的表格引用。

文档
定义概念和切片的数据。概念表包含枚举,切片表用于存储统计数据。表在 XML 文件中定义,并指向包含实际数据的 .csv 文件。 文档
主题 用于整理数据集概念的类别。这些控件并非必需功能,但对于浏览数据的用户非常有用。 文档

标头和导入

声明公共数据命名空间

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 属性后跟一系列 xmlns 属性,用于指定要在文件中使用的其他 XML 架构。每个 DSPL 文件都必须包含 Google 公开数据架构,其 URI 为“http://schemas.google.com/dspl/2010”,并将其用作默认命名空间。它还应包含由“http://www.w3.org/2001/XMLSchema-instance”标识的标准 W3 XML 架构。如下一部分所述,您可以添加其他命名空间以包含来自其他数据集的信息。

导入其他数据集命名空间

数据集可以重复使用其他数据集中的定义和数据。例如,Google 提供了许多基本数据集,以定义用户数据中常见的概念。例如,大多数数据集都需要用概念来表示年数。您可以使用“http://www.google.com/publicdata/dataset/time”数据集中的年份概念,而不是定义一个新概念。如需了解详情,请参阅规范概念页面。

如需使用外部数据集,请将 <import> 元素添加到 DSPL 文件(紧跟命名空间声明),并指明您要导入的数据空间,如下所示:

<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> 的子级。指向数据集详细信息的链接。

提供商信息

<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> 的子级。指向数据集详细信息的网址的链接。

概念

说明

每个数据集包含一个或多个概念。概念是数据集中出现的一种数据类型的定义。例如,包含受众特征群体数据的数据集可能具有国家/地区、州、人口和年份相关的概念。与给定概念对应的数据值称为该概念的实例。概念通常在数据集中描述,但某些概念(如时间或年份)可能会在外部数据集中描述。

每个概念可以有一个或多个属性。属性是特性实例的特性,该特性会随着时间的推移而稳定。例如,国家/地区概念可能具有 namepopulationcapital 属性。

概念还可以包含一个或多个属性。特性在概念级别提供信息,而不是在单个实例提供信息。例如,如果我们有一个包含失业率概念的数据集,我们可以使用特性来指明此概念是百分比。属性的常见用途的另一个示例是提供单位信息。

示例

下面是一个具有唯一 ID country 和属性 name 的国家/地区概念示例。概念 ID 可用于从 Slice 和表中引用概念。

<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:locationcountry 会继承扩展概念定义的所有属性和属性:属性名称、说明、网址、纬度和经度。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> 的子级。包括子元素 <value>,其中包括相关概念的网址。
<pluralName> 选填 <info> 的子级。概念的复数名称。子元素 <value> 包含文本,例如 Countries
<totalName> 选填 <info> 的子级。概念所有实例的组合的名称。子元素 <value> 包含文本 - 例如,对于 country 概念,这可能是 World
<type> 选填 标识概念所描述的内容的类型。必需属性 ref 具有以下允许的值:
  • 字符串
  • float
  • integer
  • date
  • 布尔值
如果此概念是对其他概念的扩展,则可以省略该类型;在这种情况下,它继承自扩展概念。
<property> 选填

概念的属性,例如 capital。必需属性 id 的值在概念上必须是唯一的。可选的 concept 属性可用于指示此属性的值是给定概念的实例。如果指定了 concept,则可以省略 id;其值会被隐式定义为所引用概念的 ID(例如,<property concept="geo:country"/> 相当于 <property id="country" concept="geo:country"/>)。

属性可以包含布尔值 isParent 属性,以指明概念的实例与该属性的值之间的关系是分层的。

属性可以包含布尔型 isMapping 属性,以指明概念的实例与属性值之间存在 1-1 映射。

属性可以指定嵌套的 infotype,它们的定义方式与概念的定义相同。如果属性未指定 concept 属性,则需要 type;如果此属性没有引用,则必须与所引用概念的类型匹配。

<attribute> 选填

概念的属性。属性表示有关概念的额外信息(例如,GDP 是百分比)。必需属性 id 的值在概念上必须是唯一的。可选的 concept 属性可用于指示此属性的值是给定概念的实例。如果指定了 concept,则可以省略 id。其值隐式定义为所引用概念的 ID。(例如,<attribute concept="unit:unit"/> 相当于 <attribute id="unit" concept="unit:unit"/>

属性可以指定嵌套的 infotype,它们的定义方式与概念类似。如果该特性未指定 concept 特性,则必须使用 type,并且该特性必须与引用的概念的类型匹配。

<table> 选填 标识包含概念数据的数据表。必需 ref 属性的值必须与相关 <table> 元素中指定的表 ID 匹配。

Slice

说明

Slice 是存在数据的概念的组合。切片包含两种概念引用:维度和指标。维度是一个概念,用于细分或过滤数据。另一方面,指标描述与每个数据点观测到的一个或多个值。

通常,维度是分类值,而指标是非分类且随时间变化的数值。下面列出了每种机制的一些典型示例:

  • 维度:国家/地区、州、县、区域、年份、月份、性别、年龄类别、行业细分
  • 指标:人口、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> 选填 标识 Slice。切片的必需属性 id 必须唯一。
<dimension> 选填 通过引用概念定义切片的维度。必需属性 concept 的值必须与此概念的唯一 ID 完全匹配;如果该概念属于外部导入的数据集,则使用有效前缀。
<metric> 选填 通过引用概念定义切片的指标。必需属性 concept 的值必须与此概念的唯一 ID 完全匹配;如果该概念属于外部导入的数据集,则使用有效前缀。
<table> 标识包含 Slice 数据的数据表。必需 ref 属性的值必须与相关 <table> 元素中指定的表 ID 匹配。
<mapDimension> 选填 <table> 的子级。包含 concepttoColumn 特性;第一个值是 Slice 中的维度,第二个值是与前者相对应的表列。
<mapMetric> 选填 <table> 的子级。包含 concepttoColumn 特性;第一个值是 Slice 中的指标,第二个值是与前者相对应的表列。

说明

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> 的子级。表引用的数据文件。如果文件名采用网址形式(例如http://...),则系统将通过适当的协议(HTTP、HTTPS 或 FTP)提取该文件;否则,同名的文件必须与数据集捆绑。必需属性 format 的值始终为 csv。虽然 encoding 属性是可选的,但 .csv 文件必须采用 UTF-8 编码。

主题

说明

主题以分层方式对概念进行分类,让用户能够更轻松地在数据集中导航。

<topics> 元素应紧跟在 DSPL 文件中的 <concepts> 元素之前。(元素的顺序很重要,如果元素的顺序错误,您可能无法上传数据集。)如需使用主题,请从概念定义中引用这些主题。

示例

下面是一个主题定义示例:

<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 数据文件

除了 XML 元数据文件之外,DSPL 数据集还可以包含一个或多个采用 CSV 格式的数据文件。每个数据文件都支持数据集中的表,并且前者在 <data>...</data> 部分中引用。从概念上讲,这些文件及其关联的表用于表示概念定义切片数据。下文会更详细地介绍每种数据类型。

请注意,无论出于什么目的,所有数据文件都必须以英文逗号分隔 (CSV) UTF-8 文本文件。这些文件只能包含纯文本,不得包含 HTML。您可以手动创建数据文件,但实际上,您需要在包含原始数据源的工具(例如电子表格)中或在导出的数据中应用数据。

文件可与数据集捆绑在一起;如果名称采用网址形式,则可以通过 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 相关联,第二列与属性 name 相关联。
  • 属性列是可选的;如果属性在表中没有列,则假定每行的值都未定义。例如,上面的表格省略了 latitudelongitude 属性的列,因此国家/地区不可映射。
  • 概念 ID 字段(在本例中为 country)的每个值都必须是唯一的且非空(空字段是指不含或仅包含空白字符的字段)。
  • 引用其他概念的属性值必须为空或是所引用概念的有效值。
  • 可以选择用英文双引号将值括起来,除非它们包含英文逗号、英文双引号或换行符。
  • 对显示在值中的实际双引号先加另一个双引号。

Slice 数据文件

Slice 数据文件包含每个 Slice 的相关数据。Slice 定义使用 <table ref="..."> 元素引用 <table> 定义,后者又用于标识此文件。

示例

下面是一个包含上述 population_by_country Slice 数据的 .csv 文件示例:

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

下面对此示例做出了详细说明:

  • 指标字段为 population。字段 countryyear 是维度字段。
  • 维度字段的每个值都必须为空。这包括时间维度。指标字段的值可以为空。空值表示为无字符。
  • 每个引用概念(例如,上述示例的第一个字段引用概念 country)的每个列标题都必须与概念定义中概念的唯一 ID 完全匹配。
  • 维度值的唯一组合(例如 AF, 2000)只能出现一次。
  • 同一时间序列中的行(即,所有维度值组合除外,时间相同的行)必须组合在一起,但不需要以其他方式进行排序。

高级功能

多语言数据集

转换的 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>

转换的属性

在某些情况下,除了概念级元数据之外,您可能还需要提供对个别概念实例应用(或改为应用)的转换。当概念属性值(例如名称)因语言而异时,此功能尤其有用。

要以多种语言提供这些值,请在相应的定义表中为每个属性/语言组合创建一个列。 然后,通过为该概念的表引用标记添加一组 <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 公开数据动画地图图表中直观呈现这些实例。

如果您的概念等效于世界国家/地区、美国各州或美国的县,那么您可以直接链接到相应的 Google 规范概念,而不需要显式地理编码。如需了解详情,请参阅规范概念指南

如果没有,则需要将概念设为可映射。第一步是使其从 geo:location 扩展:

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

然后,您必须明确添加纬度和经度作为属性:

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

然后,这些值会在相应的概念定义数据表中以列的形式指定。

概念关系

概念通常以结构化方式与其他概念有关。例如,一个大洲实例可以包含多个国家/地区实例,而这些实例又可以包含多个州或省实例。在数据集元数据中对这些关系进行编码可以实现比其他方式更丰富的可视化功能,例如显示可收起的位置树。

在下面的部分中,我们将介绍 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>
  

支持数据表包含一个 state 列,其中包含每个县的两个字母的州代码。这种元数据允许公共数据浏览器以层次结构的形式显示州/省/自治区/直辖市和国家/地区,而此功能可让用户更轻松地进行探索。

请注意,一个概念可以有多个子级,但不能超过一个父级

映射

概念映射(即基本表示相同概念的概念)通过映射概念的 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 公开数据浏览器,请按照以下说明操作:

  1. 创建一个目录。
  2. 将数据集 dspl 文件保存到您创建的目录中。请务必使用 .xml 扩展名。
  3. 将所有本地 .csv 文件保存在同一目录中。通过网址引用的数据文件可以省略。
  4. 压缩目录。
  5. 将数据集上传到 Google 公开数据浏览器。

上传并验证数据集后,您可以在登录 Google 帐号后对其进行测试。在您审核它并告知我们它准备就绪之前,它无法发布。