DSPL 개발자 가이드

DSPL은 Dataset Publishing Language(데이터 세트 게시 언어)의 약자입니다. 이 형식은 메타데이터(이름, 제공자, 데이터 세트에 포함 및 표시되는 개념뿐만 아니라 데이터 세트에 관한 정보)와 데이터 세트의 실제 데이터 모두에 대한 표현 형식입니다. 이 형식에 설명된 데이터 세트를 풍부한 시각적 탐색이 가능한 도구인 Google Public Data Explorer로 가져올 수 있습니다.

참고: 공개 데이터 업로드 도구를 사용하여 Google 공개 데이터에 데이터를 업로드하려면 Google 계정이 있어야 합니다.

이 문서는 공개 데이터 탐색기에서 콘텐츠를 사용할 수 있도록 하려는 데이터 소유자를 대상으로 합니다. 이 가이드에서는 튜토리얼 이상으로 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입니다. 문서
개념

데이터 세트에 표시되는 '사물'의 정의 (예: 국가, 실업률, 성별 등)

각 개념에는 슬라이스 및 테이블에서 참조할 수 있는 고유 식별자가 있습니다.

문서
슬라이스

데이터 세트에 통계 데이터가 있는 개념의 조합 각 슬라이스에는 측정기준측정항목이 포함되어 있습니다.

Slice는 개념과 실제 데이터를 포함하는 테이블을 참조합니다. 각 슬라이스에는 실제 데이터가 포함된 테이블에서 참조할 수 있는 고유 식별자가 있습니다.

문서
테이블 개념 및 슬라이스의 데이터를 정의합니다. 개념 테이블에는 열거형이 포함되고 슬라이스 테이블에는 통계 데이터가 포함됩니다. 테이블은 XML 파일에 정의되며 실제 데이터가 포함된 .csv 파일을 가리킵니다. 문서
주제 데이터 세트 개념을 구성하는 카테고리입니다. 필수 사항은 아니지만 데이터를 탐색하는 사용자에게 매우 유용할 수 있습니다. 문서

헤더 및 가져오기

Public Data 네임스페이스 선언

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 파일에는 URI가 'http://schemas.google.com/dspl/2010'인 Google Public Data 스키마가 포함되어 있으며 이 파일이 기본 네임스페이스로 사용됩니다. 또한 '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>의 하위 요소입니다. 데이터 세트에 대한 자세한 정보가 포함된 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 링크입니다.

개념

설명

각 데이터 세트에는 하나 이상의 개념이 포함됩니다. 개념은 데이터 세트에 표시되는 데이터 유형에 대한 정의입니다. 예를 들어 인구통계로 구성된 인구 데이터가 포함된 데이터 세트에는 국가, 주, 인구, 연도라는 개념이 포함될 수 있습니다. 특정 개념에 해당하는 데이터 값을 해당 개념의 인스턴스라고 합니다. 개념은 일반적으로 데이터 세트에 설명되지만 일부 개념 (예: 시간 또는 연도)은 외부 데이터 세트에서 설명될 수 있습니다.

각 개념에는 하나 이상의 속성이 있을 수 있습니다. 속성은 시간이 지남에 따라 안정적인 개념 인스턴스의 특성입니다. 예를 들어 국가 개념에는 name, population, capital 속성이 있을 수 있습니다.

개념에는 하나 이상의 속성이 있을 수도 있습니다. 속성은 개별 인스턴스가 아닌 개념 수준에서 정보를 제공합니다. 예를 들어 실업률 개념이 있는 데이터 세트가 있는 경우 속성을 사용하여 이 개념이 백분율임을 나타낼 수 있습니다. 속성의 일반적인 용도의 또 다른 예는 단위 정보를 제공하는 것입니다.

다음은 고유 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 및 속성 name, continent, capital)를 설명합니다.
  • 이 개념은 위치의 표준 개념geo:location를 확장합니다. geo:location를 확장하면 country이 확장 개념으로 정의된 모든 속성 및 속성(속성 이름, 설명, URL, 위도 및 경도)을 상속합니다. 정의가 확장 개념에서 제공하는 정의와 일치하는 한 country이 이러한 속성 및 속성 중 일부를 다시 정의해도 괜찮습니다.
  • 개념 <info> 요소는 개념에 대한 주요 정보를 설명합니다. 공개 데이터 탐색기의 데이터 세트 방문 페이지에 표시됩니다.
  • 개념 <type> 요소는 콘텐츠 유형을 나타냅니다. 이 경우에는 문자열이지만 다를 수 있습니다. 개념 인구는 integer 유형을 가지며 Eurovision winner 개념은 유형이 부울일 수 있습니다.
  • <property> 요소는 고유 ID (id), info, type 등 개념의 각 속성을 설명합니다. 또한 속성에서 개념을 참조하여 값이 이 개념의 유효한 인스턴스임을 나타낼 수 있습니다.
  • 이 개념은 실제 데이터가 포함된 CSV 파일을 가리키는 데이터 테이블을 참조합니다. 데이터 테이블은 <table ref="countries_table"/>와 같이 참조됩니다.

    개념이 테이블을 참조하는 경우 연결된 데이터 파일에 모든 개념 인스턴스가 나열되어야 합니다. 예를 들어 데이터 세트에 포함된 일부 국가만 나열하는 테이블을 만들 수 없습니다. (관심 있는 국가의 하위 집합이 있는 경우 이를 설명하는 별도의 개념을 만들 수 있습니다. 예: mycountries)

요소

요소 필수 여부 설명
<concepts> 최상위 요소. 모든 <concept> 요소를 포함합니다.
<concept> 개념을 식별합니다. 필수 속성 id의 값은 데이터 세트 내의 개념에서 고유해야 합니다. 개념이 개념 데이터 테이블을 참조하는 경우 id의 값은 데이터 테이블의 개념을 설명하는 열 제목과 일치해야 합니다. extends 속성을 사용하여 이 개념이 다른 개념을 확장함을 표시할 수 있습니다. extends 값은 동일한 데이터 세트에 정의된 개념의 ID와 일치하거나 prefix:concept_id 형식이어야 합니다. 여기서 concept_idprefix와 연결된 가져온 외부 데이터 세트에 정의된 개념의 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 속성이 포함될 수 있습니다.

속성에는 부울 isMapping 속성이 포함되어 있을 수 있으며 개념의 인스턴스와 속성 값을 1~1로 매핑함을 나타냅니다.

속성은 중첩된 infotype를 지정할 수도 있으며, 이는 개념과 동일하게 정의됩니다. type는 속성에서 concept 속성을 지정하지 않는 경우 필요하며 필수인 경우 참조된 개념 유형과 일치해야 합니다.

<attribute> 선택사항

개념의 속성입니다. 속성은 개념에 대한 추가 정보 (예: GDP는 백분율임). 필수 속성인 id의 값은 개념마다 고유해야 합니다. 선택사항인 concept 속성을 사용하여 이 속성의 값이 특정 개념의 인스턴스임을 나타낼 수 있습니다. concept가 지정되면 id이 생략될 수 있습니다. 참조된 값은 참조된 개념의 ID로 암시적으로 정의됩니다. (예: <attribute concept="unit:unit"/><attribute id="unit" concept="unit:unit"/>와 동일합니다.

속성은 중첩된 것처럼 infotype를 지정할 수 있으며 개념과 동일하게 정의됩니다. type는 속성이 concept 속성을 지정하지 않는 경우 필요하며 필수인 경우 참조된 개념 유형과 일치해야 합니다.

<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 및 측정기준 country, year가 있습니다. 각 측정기준은 이미 다른 곳에 정의된 개념입니다. 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>의 하위 요소입니다. concepttoColumn 속성을 포함합니다. 첫 번째 값은 슬라이스의 차원이고, 두 번째 값은 전자의 테이블 열입니다.
<mapMetric> 선택사항 <table>의 하위 요소입니다. concepttoColumn 속성을 포함합니다. 첫 번째 값은 슬라이스의 측정항목이고 두 번째 값은 전자에 해당하는 테이블 열입니다.

설명

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 테이블을 설명합니다. 테이블에는 country, year, population 열이 있습니다.
  • 테이블의 각 열에는 id 속성으로 정의된 고유 ID가 있습니다. 이 ID는 연결된 데이터 파일의 적절한 열 제목과 정확하게 일치해야 합니다.
  • 선택사항인 type 속성의 값은 각 열의 데이터 유형을 정의합니다.
  • <data> 요소는 테이블의 데이터가 포함된 실제 .csv 파일(country_slice.csv)을 설명합니다. 파일 형식은 항상 csv입니다.

요소

요소 필수 여부 설명
<tables> 최상위 요소. 모든 <table> 요소를 포함합니다.
<table> 테이블을 식별합니다. 필수 속성 id의 값은 테이블에 고유해야 합니다.
<column> 선택사항 <table>의 하위 요소입니다. 테이블에 포함된 열에 대한 정보입니다. 다음과 같은 속성이 포함됩니다.
  • id (필수): 열의 ID입니다.
  • type(선택사항): 지정된 열에 있는 정보의 데이터 유형입니다. 허용되는 값은 string, float, integer, date 또는 boolean입니다.
<data> 선택사항 <table>의 하위 요소입니다. 테이블에서 참조되는 데이터 파일입니다. 파일 이름이 URL 형식(예: 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 데이터 파일

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 개념과 연결되고 두 번째 열은 name 속성과 연결됩니다.
  • 속성 열은 선택사항입니다. 속성에 테이블이 없는 경우 해당 값은 각 행에서 정의되지 않은 것으로 간주됩니다. 예를 들어 위 표에서는 latitudelongitude 속성의 열이 생략되어 있으므로 국가를 매핑할 수 없습니다.
  • 개념의 ID 필드(이 경우 country)의 각 값은 고유하고 비어 있지 않아야 합니다. 빈 필드는 0자 또는 공백 문자가 있는 값입니다.
  • 다른 개념을 참조하는 속성 값은 비어 있거나 참조된 개념의 유효한 값이어야 합니다.
  • 값을 큰따옴표로 묶는 것은 선택사항입니다. 단, 쉼표, 큰따옴표 또는 줄바꿈 문자가 포함된 경우는 예외입니다.
  • 값 앞에 표시되는 리터럴 큰따옴표를 이스케이프하려면 다른 큰따옴표로 묶습니다.

Slice 데이터 파일

Slice 데이터 파일에는 각 Slice의 관련 데이터가 포함됩니다. 슬라이스 정의에서는 <table ref="..."> 요소를 사용하여 <table> 파일을 참조하며, 이 정의에서 이 파일을 식별합니다.

다음은 위에서 설명한 population_by_country 슬라이스의 데이터가 포함된 .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>

변환된 속성

경우에 따라 개별 개념 인스턴스에 추가 (또는 대신)하여 개념 수준 메타데이터 이상의 번역을 제공해야 할 수도 있습니다. 이는 개념 속성의 값 (예: 이름)이 언어별로 다를 때 특히 유용합니다.

이러한 값을 여러 언어로 제공하려면 각 정의/언어 조합에 해당하는 정의 테이블에 열 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 공개 데이터 애니메이션 지도 차트에서 시각화할 수 있도록 지원합니다.

이 개념이 세계 국가, 미국 주 또는 미국의 카운티와 동일한 경우에는 해당 Google 표준 개념에 연결하기만 하면 됩니다. 명시적인 지오코딩은 필요하지 않습니다. 자세한 내용은 표준 개념 가이드를 참조하세요.

그렇지 않은 경우 개념을 매핑할 수 있도록 해야 합니다. 첫 번째 단계는 geo:location에서 확장되도록 하는 것입니다.

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

그런 다음 위도와 경도를 속성으로 명시적으로 추가해야 합니다.

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

그런 다음 해당 값이 해당 개념 정의 데이터 표에 열로 지정됩니다.

개념 관계

개념은 대개 구조화된 방식으로 다른 개념과 관련이 있습니다. 예를 들어 대륙 인스턴스에는 여러 국가 인스턴스가 포함될 수 있으며, 결과적으로 여러 주 또는 도 인스턴스가 포함될 수 있습니다. 데이터 세트 메타데이터에 이러한 관계를 인코딩하면 선택할 수 있는 위치 트리를 표시하는 등 축소할 때보다 더 풍부한 시각화 기능을 구현할 수 있습니다.

아래 섹션에서는 DSPL 스키마에서 지원되는 개념 관계를 설명합니다.

계층 구조

개념 계층 구조는 상위 개념의 인스턴스 식별자를 포함하는 하위 개념의 <property> 태그에 isParent="true" 속성을 사용하여 DSPL에서 표현됩니다.

예를 들어 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 카운티가 있으며 각 카운티의 2문자 상태 코드가 있습니다. 이러한 유형의 메타데이터를 사용하면 공개 데이터 탐색기에서 주와 카운티를 계층 구조로 표시할 수 있습니다. 이 기능은 사용자가 훨씬 더 쉽게 탐색할 수 있는 기능입니다.

개념에는 많은 하위 요소가 있을 수 있지만 상위 요소는 하나만 있을 수 있습니다.

매핑

개념 매핑 (즉, 기본적으로 같은 것을 나타내는 개념)은 매핑된 개념의 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. 만든 디렉터리에 데이터 세트 dspl 파일을 저장합니다. .xml 확장자를 사용해야 합니다.
  3. 로컬 .csv 파일을 동일한 디렉터리에 저장합니다. URL을 통해 참조되는 데이터 파일은 생략할 수 있습니다.
  4. 디렉터리를 압축합니다.
  5. Google Public Data Explorer에 데이터 세트를 업로드합니다.

데이터 세트가 업로드되고 검증된 후 Google 계정에 로그인하면 테스트할 수 있습니다. 검토 후 준비 여부를 Google에 알려주기 전에는 게시되지 않습니다.