[10] [DFN[RDF [RUBYB[データ集合]@en[dataset]]]]は、一組の[[RDFグラフ]]の集合体です。

;; [20] [[SPARQL]] の[[問い合わせ]]は[[RDFデータ集合]]に対して実行されます。

* 仕様書

[REFS[
- [1] [CITE@en[RDF 1.1 Concepts and Abstract Syntax]] ([TIME[2014-04-26 12:01:24 +09:00]] 版) <https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-concepts/index.html#h2_section-dataset>
- [19] [CITE@EN[SPARQL 1.1 Query Language]] ([TIME[2013-03-21 11:27:53 +09:00]] 版) <http://www.w3.org/TR/sparql11-query/#rdfDataset>
- [23] [CITE@en[RDF 1.1 Concepts and Abstract Syntax]] ([TIME[2014-04-27 13:11:35 +09:00]] 版) <https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-concepts/index.html#h2_section-generalized-rdf>
]REFS]

* 定義

[2] [DFN[RDF [RUBYB[データ集合]@en[dataset]]]]は、[[RDFグラフ]]の[[集成]]であって、次のものから成ります [SRC[>>1, >>19]]。
[FIG[
- [3] [DFN[[RUBYB[[[既定グラフ]]]@en[default graph]]]]: 1つだけあって、[[名前]]を持たず、空でも[['''構いません''']]。
- [4] [DFN[[RUBYB[[[名前付きグラフ]]]@en[named graph]]]]: 零個以上の任意の個数あって、[[グラフ名]]と[[RDFグラフ]]の[[組]]。
]FIG]

[8] 実装によっては[[名前付きグラフ]]で空のものを扱えませんから、
空の[[名前付きグラフ]]が存在するかしないかに意味を持たせないようにすると[[相互運用性]]上の問題を回避できます。 [SRC[>>1]]

[24] [DFN[[RUBYB[一般化 RDF データ集合]@en[generalized RDF dataset]]]]は、[[RDFグラフ]]ではなく[[一般化RDFグラフ]]を利用できる[[RDFデータ集合]]です。更に[[グラフ名]]として[[リテラル]]も使えます。
[SRC[>>23]]

* グラフ名

[5] [DFN[[RUBYB[[[グラフ名]]]@en[graph name]]]]は、[[IRI]] または[[空白節点]]です。
[[グラフ名]]は[[RDFデータ集合]]内で[[固有]]でなければ[['''なりません''']]。 [SRC[>>1]]

[7] [[グラフ名]]は、形式的に[[グラフ]]と組み合わされているだけであり、
実際には[[グラフ]]を示すものである必要はありません。[[グラフ名]]におよって示される[[資源]]がどんなものか、
それと[[グラフ]]がどのような関係であるかについて [[RDF]] 仕様上の制約はありません。 [SRC[>>1]]

[9] [[SPARQL 1.1]] は[[グラフ名]]が[[空白節点]]となることを認めていません [SRC[>>1, >>19]]。

[25] [[一般化RDFデータ集合]]では[[グラフ名]]に[[リテラル]]も認められます [SRC[>>23]]。

* 同型性

[11] [[RDFデータ集合]] [VAR[D1]], [VAR[D2]] が[DFN[[RUBYB[[[データ集合同型]]]@en[dataset-isomorphic]]]]であるための[[必要十分条件]]は、
両者に次のような[[全単射]] [VAR[M]] が存在することです [SRC[>>1]]。
[FIG[
- [12] [VAR[M]] により[[空白節点]]から[[空白節点]]へと[[写像]]される
- [13] [VAR[M]] は[[リテラル]]と [[IRI]] に関して[[恒等写像]]である
- [14] すべての[[三項組]] [CODE[([VAR[s]], [VAR[p]], [VAR[o]])]] について
[CODE[[VAR[M]](([VAR[s]], [VAR[p]], [VAR[o]])) = ([VAR[M]]([VAR[s]]), [VAR[M]]([VAR[p]]), [VAR[M]]([VAR[o]]))]] である
- [15] すべての[[グラフ]] [CODE[[VAR[G]] = {[VAR[t1]], ..., [VAR[tn]]}]] について
[CODE[[VAR[M]]([VAR[G]]) = {[VAR[M]]([VAR[t1]]), ..., [VAR[M]]([VAR[tn]])}]] である
- [16] [VAR[D2]] の[[既定グラフ]]は [VAR[D1]] に [VAR[M]] を適用した結果である
- [17] 名前 [VAR[n]]、[[グラフ]] [VAR[G]] の組が [VAR[D1]] の[[名前付きグラフ]]であることは、
名前 [VAR[M]]([VAR[n]])、[[グラフ]] [VAR[M]]([VAR[G]]) が [VAR[D2]] の[[名前付きグラフ]]であることの[[必要十分条件]]である
]FIG]

* 関連

[6] [[空白節点]]は、[[RDFデータ集合]]中の[[グラフ]]間で共有できます [SRC[>>1]]。

[18] [[RDFグラフ]]を期待していて [[RDFデータ集合]]が返された時は、[[RDFデータ集合]]の[[既定グラフ]]を用いることが期待されています
[SRC[>>1]]。

* 歴史

[21] [[RDFデータ集合]]は [[SPARQL]] で導入されたようです。

[22] [[RDF 1.1]] で [[RDF]] 本体仕様に [[RDFデータ集合]]の定義が追加されました。この時に >>9
の通り[[空白節点]]を[[グラフ名]]とできるよう拡張されました。

[26] [[RDF 1.1]] で[[一般化RDFデータ集合]]も追加されました。
