2

以下は私の2つのテーブルです:

CREATE TABLE Tree (
    "id"            integer NOT NULL,   -- Primary key
    "tags"          varchar(500),
    "rootNode"      integer NOT NULL    -- Referes to Node table's "id"
);
CREATE TABLE Node (
    "id"            integer NOT NULL,   -- Primary key
    "parent"        integer NOT NULL,
    "owner"         varchar(500),
    "data"          varchar(500),
    "tags"          varchar(500)
);

これらのために作成した一般的な RDF ファイルは次のとおりです。

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:wp="http://example.com/dm#">
    <wp:WPS rdf:about="http://example.com/">
    <wp:node><rdf:Description>  <wp:id>0</wp:id><wp:parent>-1</wp:parent><wp:owner>Kumar</wp:owner><wp:data>--#ABCDEFGHIJKLMNOPQRSTUVWXYZ#--</wp:data><wp:tags>MyTag</wp:tags></rdf:Description></wp:node>
    .....
    <wp:tree><rdf:Description>  <wp:treeId>814</wp:treeId><wp:treeTags>Banking</wp:treeTags><wp:rootNode>19989</wp:rootNode></rdf:Description></wp:tree>
    .......
</wp:WPS></rdf:RDF>

これら 2 つのテーブルの結合 rdf ファイルを作成するこの正しい方法はありますか?


次に、次の SQL クエリと同様の SPQRQL クエリを実行します。

select w.id, w.tags, w.owner from Node w, Tree t where t.id=100;

FILTER を使用して次のクエリを使用しようとしましたが、目的の結果を得ることができませんでした。これを行う正しい方法は何ですか?

    PREFIX wp: <http://example.com/dm#> 
              SELECT ?x ?id 
              WHERE { 
                ?x wp:id ?id .
                ?x wp:trailId ?trailId .
                ?x wp:rootWP ?rootWP .
                FILTER (?trailId = 100)
                FILTER (?rootWP = ?id)
              }
4

1 に答える 1

2

一般的に言えば、RDF トリプルを格納するためにデータベース テーブル構造を自分で作成するべきではありません。正しく行うのは複雑なことであり、パフォーマンスを向上させることはさらに困難です。永続的なトリプル ストアを作成するだけの場合は、RDF プラットフォームの組み込み機能を使用します。Jena の場合、これはTDBまたはSDBになります。

あるいは、データをリレーショナル スキーマに格納する必要があるが、そのデータを RDF トリプルとして表示して SPARQL でクエリできるようにする場合は、リレーショナルから RDF へのマッピング ツールが必要です。この分野には標準化作業があり、 D2RQなどのオープンソースの実装があります。

于 2012-06-21T09:26:04.383 に答える