コンテンツにスキップ

CSVW との比較

非公式翻訳 (Unofficial translation). これはデータパッケージスタンダードの有志による日本語訳です。 正典は英語原典 datapackage.org 。未訳の箇所は英語の原文を参照してください。

著者 Peter Desmet, Evgeny Karev, Sara Petti

2016 年、W3C により設立されたワーキンググループが、CSV ファイルを文書化しアクセスするための一連の勧告を作成した。これらは総称して CSVW on the Web (CSVW) と呼ばれる。CSVW はデータパッケージスタンダードと多くの類似点を示す。

以下では、CSVW とデータパッケージの(非)類似点の概観を示す。

適用範囲

CSVW は、区切りテキストファイル(CSV、TSV)のみを記述するための一連の仕様である(すなわち Model for Tabular Data and Metadata on the Web と Metadata Vocabulary for Tabular Data)。

データパッケージは、データセット・データファイル・表形式データを記述するための一連の仕様である。表形式でないデータファイルを記述でき、表形式であるもののための追加の仕様(すなわち Table Dialect と テーブルスキーマ)も含む。

保守

CSVW は 2016 年に公開された。そのワーキンググループは当時すでに解散していた。現在はコミュニティグループが存在するものの、標準に変更を加える権限を持たない。

データパッケージは 2012 年に公開され、2017 年に v1.0 へ、2024 年に v2.0 へと更新された。Open Knowledge Foundation (OKFN) によって保守されている。変更の要望は誰でも GitHub プルリクエストとして提案でき、複数の組織のメンバーからなるワーキンググループによって決定される。

採用とソフトウェアの対応状況

CSVW の採用に関する文書は見つけられなかったが、Swirrl が csvw.org でウェブサイトを運営しており、標準の解説とソフトウェアツールの概観を提供している。これらの多くは変換ツールだが、4 つのプログラミング言語(Java、Python、R、Ruby)向けにソフトウェアライブラリが提供されており、Python がもっとも人気がある(37 スター)。注目すべきは CSV lint で、これは CSV ファイルを検証するオンラインツールである。

データパッケージは幅広い組織やプロジェクトによって採用されており、その多くが標準を拡張しソフトウェアを作成してきた。ソフトウェアライブラリは 9 つのプログラミング言語(Go、Java、Javascript、Julia、PHP、Python、R、Ruby、Swift)向けに提供されており、Python がもっとも人気がある(708 スター)。これらはすべて、GitHub 上の Frictionless Data 組織の下でオープンソースソフトウェアとして保守されている。注目すべきは Open Data Editor で、これは非技術者向けの、フル機能を備えたデータパッケージエディタである。

拡張性と他の標準の利用

CSVW は他の標準(JSON-LD、XML Schema Datatypes、Compact URIs など)を広範に利用し、それらの使い方を定義している。また、CSVW を JSON や RDF へ変換する方法に関する仕様も持つ。CSVW は JSON Schema としては定義されていない。

データパッケージは、よく使われるプロパティ(description、contributors、licences、sources など)について独自のプロパティを定義しているが、いずれも必須ではない。利用者は他の標準のプロパティをカスタムプロパティとして含めることができる。データパッケージは JSON Schema として定義され、拡張可能となるよう設計されている。開発者は $schema で JSON スキーマを参照することでプロパティを追加または拡張でき、それらは検証ソフトウェアによって自動的に認識される。また、データパッケージを DataCite や DCAT といった他のメタデータ標準へ変換するソフトウェアも提供されている。

データとメタデータのリンク

CSVW はメタデータの所在を特定する複数の方法を定義している。

データパッケージのメタデータは、datapackage.json という名前のディスクリプタファイルに記述される。このファイルは resource.path を用いてデータファイルへリンクし、外部の dialect・スキーマ・(ドメイン固有の)仕様を参照できる。

プロパティの比較

以下は、CSVW の Metadata Vocabulary for Tabular Data(バージョン 20151217)で定義されたすべてのプロパティと、それらがデータパッケージ(v2.0)でどのようにサポートされているかの一覧である。

プロパティの構文

CSVW プロパティデータパッケージの対応詳細
Array properties対応
Link properties部分的URL とパスはサポートされるが、@context 内の @base URL は不可
URI template properties非対応
Column reference properties対応例:schema.primaryKey
Object properties対応例:resource.schema
Natural language properties対応例:resource.path
Atomic properties対応

トップレベルのプロパティ

CSVW プロパティデータパッケージの対応詳細
@context非対応

テーブルグループ

CSVW プロパティデータパッケージの対応詳細
tables対応テーブルは "type": "table" を持つ package.resources として定義できる。

構造・形式・dialect などが同一のテーブルは、resource.path に複数のファイルを持つ単一のリソースとして定義できる。実装はそれらのテーブルを連結する。
dialect対応resource.path 内の複数ファイルに対する resource.dialect として
notesカスタムプロパティ
tableDirection非対応
tableSchema対応resource.path 内の複数ファイルに対する resource.schema として
transformations非対応
@idカスタムプロパティ
@type非対応

テーブル

CSVW プロパティデータパッケージの対応詳細
url対応resource.path として
dialect対応resource.dialect として
notesカスタムプロパティ
suppressOutput非対応
tableDirection非対応
tableSchema対応resource.schema として
transformations非対応
@idカスタムプロパティテーブルは resource.name で識別される
@type対応resource.type として

スキーマ

CSVW プロパティデータパッケージの対応詳細
columns対応schema.fields として
foreignKeys対応schema.foreignKeys として
primaryKey対応schema.primaryKey として
rowTitles非対応タイトルはフィールドごとに field.title として定義される
@idカスタムプロパティ
@type非対応

列

CSVW プロパティデータパッケージの対応詳細
name対応field.name として
suppressOutput非対応
titles部分的field.title として(単一の値)
virtual非対応
@idカスタムプロパティ
@type非対応

継承されるプロパティ

データパッケージのプロパティは、特に指定がない限り(たとえば resource.sources)、親から継承しない。以下に挙げるプロパティは、missingValues を除き、データパッケージでは 1 つの階層にのみ存在する。

CSVW プロパティデータパッケージの対応詳細
aboutUrlカスタムプロパティ
datatype対応field.type として
default非対応
lang非対応レシピとして提案されている
null対応field.missingValues および schema.missingValues として、複数の値とラベルを定義するオプションを備える
ordered対応field.categoriesOrdered として
propertyUrl部分的field.rdfType として
required対応required フィールド制約として
separator対応list フィールド型における delimiter として
textDirection非対応
valueUrl非対応

共通プロパティ

共通プロパティは、データパッケージではカスタムプロパティとして追加できる。これは CSVW が推奨するのと同様に、接頭辞付きの名前を用いる。ただし、データパッケージはよく使われるプロパティ(description など)について独自の定義を持ち、それらはすべての階層に存在しうる点に注意されたい。

Dialect の記述

CSVW プロパティデータパッケージの対応詳細
commentPrefix対応dialect.commentChar として
delimiter対応dialect.delimiter として
doubleQuote対応dialect.doubleQuote として
encoding対応resource.encoding として
header対応dialect.header として
headerRowCount対応dialect.headerRows として
lineTerminators対応dialect.lineTerminator として
quoteChar対応dialect.quoteChar として
skipBlankRows非対応
skipColumns非対応
skipInitialSpace対応dialect.skipInitialSpace として
skipRows非対応dialect.commentRows として
trim非対応
@idカスタムプロパティ
@type非対応

変換の定義

データパッケージではサポートされない。

データ型

CSVW はデータ型を、組み込みデータ型と派生データ型として定義する。派生データ型は、組み込みデータ型をフォーマットや制約などで拡張したものである。データパッケージはこの区別を設けず、代わりにいくつかのフィールド型を定義する。型に応じて、format や制約で拡張できる。

CSVW プロパティデータパッケージの対応詳細
base非対応すべての型は field.type として定義される
format対応field.format として
length非対応
minLength対応minLength フィールド制約として
maxLength対応maxLength フィールド制約として
minimum対応minimum フィールド制約として
maximum対応maximum フィールド制約として
minInclusive対応minimum フィールド制約として
maxInclusive対応maximum フィールド制約として
minExclusive対応exclusiveMinimum フィールド制約として
maxExclusive対応exclusiveMaximum フィールド制約として
@idカスタムプロパティ
@type非対応