2012-05-01 5 views
1

私は、(おそらくテーブルを結合することによって)リレーショナルデータベーステーブルから取得されたデータの行を持っているとしましょう。各行には複数の列(A、B、C、Dなど)があり、次の行があります。データベースの行をグラフやRDFに保存する際に情報が失われることはありますか?

A1、B1、C1、D1

A1、B2、C1、D1

A1、B2、C1、D2

Iはエンティティ間のネットワークグラフを描画した場合、Iそのような

A1 connectsTo B1

B1 connectsTo C1

などの複数のトリプルを作成することにより、RDFの情報を保存することができ0

C1 connectsTo D1

A1 connectsTo B2

B2 connectsTo C1

C1 connectsTo D2(及び反対方向にも)

そこで双方向グラフでは、それらは

あろう

A1-B1-C1-D1

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

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

元の情報を保持するために、しかし、私の懸念は、以前と同じようにグラフ接続を作成する際に同じ柔軟性(とパフォーマンス)が得られるかどうかということです。私は、AsとBsの間のすべての接続、または後でサブセットの組み合わせを取得する必要があるかもしれません。また、これは前と同じように空間効率が良いわけではありません。異なるbノードに重複した情報を格納する必要があるからです。

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

ありがとうございました。

答えて

4

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

このアプローチでは、柔軟性が失われません(SPARQLを使用してそれらの関係を簡単に照会できます)。重複した情報も格納されません。実際に、提案された表現が機能しない理由は、 。

+0

ありがとうございました!正確に私が必要としたもの。 – Rolonoa

2

「C1 connectionsTo D1」が欲しいという発言は奇妙に思えます。あなたの例が非常に抽象化されているということは、あなたのデータが何であるかのヒントがないので、間違っているとは言いません。

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

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

リレーショナルとトリプルのマッピングの長期的な例については、d2rq-languageをご覧ください。私の前提が成立している(主キーを持っている)場合、パフォーマンスは上手くいくはずです.SPARQLや単純なトリプルを使用すると、データを効率的に利用できます。仮定が真実でない場合は、あなたが記述したbノードまたは「イントラ行」トリプルを使用することもできますが、良いガイダンスを与えるために十分な情報があなたの例にはありません。

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

+0

D2RQ :-)を言及してUpvoted – cygri

+0

これについてのあなたの視点を提供していただきありがとうございます。多くの関係やデータ型を扱っているため、私の例は必然的に抽象的でした。私はd2rqをチェックします。 – Rolonoa

関連する問題