1

リレーショナル データベース テーブルから (おそらくテーブルを結合することによって) データの行を取得したとします。各行にはいくつかの列 (A、B、C、D など) があり、次の行は私が持っているものです。

A1、B1、C1、D1

A1、B2、C1、D1

A1、B2、C1、D2

エンティティ間でネットワーク グラフを描画する場合、次のような複数のトリプルを作成することで、情報を RDF に保存できます。

A1 は B1 に接続します

B1 は C1 に接続します

C1 は D1 に接続します

A1 は B2 に接続します

B2 は C1 に接続します

C1 は D2 に接続します (反対方向にも)

したがって、双方向グラフでは、それらは次のようになります

A1 -- B1 -- C1 -- D1

'----- B2 --- ' '--- D2

このアプローチの問題は、上のグラフを見ると、元の行にはなかった A1 - B1 - C1 - D2 間の接続も取得できるため、あいまいさが導入されたことです。私の最初の質問- 一般に、これはデータベース行をネットワーク グラフに保存するときに何が起こるのでしょうか (または、何か間違ったことをしていますか?)

元の情報を保持するために、bnode の各行にある 4 つのエンティティをグループ化できますが、グラフ接続を作成する際に以前と同じ柔軟性 (およびパフォーマンス) が得られるかどうかが懸念されます。As と B の間のすべての接続、または後でサブセットの他の組み合わせを取得する必要がある場合があります。また、異なる bnode 間で重複した情報を保存する必要があるため、これは以前ほどスペース効率が良くありません。

の 2 番目の質問は、RDF に行を格納しながら、柔軟性とパフォーマンスを維持するための最良の方法は何ですか? RDF から RDF へのマッピングに関する WWW.org の推奨事項を確認しました ( http://www.w3.org/TR/r2rml/およびhttp://www.w3.org/TR/rdb-direct-mapping/ ) 。 、しかし、データを保持するには、データを同じ行IDでグループ化する必要があるようです。これが唯一の方法ですか?

ありがとう。

4

2 に答える 2

4

あなたの行は n-ary リレーションシップを示しています (n=4 の場合)。つまり、互いに何らかの関係にある 4 つのものがあります。RDF は二項関係 (n=2) に基づいているため、2 つのものが互いに関係していることしか表現できません。RDF で n 項の関係を表すには、常に追加のノードを導入し、n 個のメンバーをそれに接続する必要があります。W3C には、このトピックに関する長いベスト プラクティス ドキュメントがあります: Defining N-ary Relations on the Semantic Web

このアプローチは柔軟性を失うことはなく (SPARQL を使用してこれらの関係を簡単にクエリできます)、重複する情報も保存しません。実際、提案された表現が機能しない理由は、重要な情報を削除したためです。

于 2012-05-01T15:36:29.180 に答える
2

「C1 connectTo D1」が欲しいというあなたの声明は奇妙に思えます。あなたの例は非常に抽象化されているため、データがそうであるというヒントが得られないため、間違っているとは言いません。

ほとんどの sql/rdb データ環境には、行を識別する主キー (または複合キー) があります。それがなければ、行を取得した後に行を更新することは「ほとんど」不可能です。「ほぼ」と言ったのは、それを実行できるデータベースには、行を一意に識別する「隠し」列があるためです (postgres oid など)。

概念的には、データベースの行は主語 (主キーを主語にマップ) に対応し、列は述語に対応します。実際のデータ値は、トリプル内のオブジェクトに対応します。あなたのuriを名前空間のすべてに追加してください。

リレーショナルをトリプルにマッピングする長い例については、d2rq-languageを参照してください。私の仮定 (主キーがある) が成り立つ場合、パフォーマンスは問題なく、SPARQL または単純なトリプルを使用してデータを非常に効率的に取得できます。仮定が正しくない場合は、bnodes または説明した「行内」トリプルを使用することもできますが、例には適切なガイダンスを提供するのに十分な情報がありません。

あなたの例は、一意の行があることを示していません。各行が列 a から列 d へのマッピングまたはルートを定義していることを暗示している可能性があります。その場合、データは上記のとおりではなく、各行は個別のグラフです。データストアにクワッドがある場合にも実行できますが、それは別のモデリング構造です。

于 2012-05-01T16:03:40.903 に答える