2016-12-27 5 views
-1

私は2つの異なるオントロジーを持っています:1つは映画ジャンル用でもう1つは映画認証用です。私は、x(例えば、PG-13)とジャンルy(例えば、action)の映画を見つけることができるSPARQLのクエリを書いてみたいと思います。両方のオントロジーは異なっており、Apache Jenaにアップロードしています。2つの異なるオントロジーでクエリを作成する方法は?

これらは私のオントロジーです:

PREFIX o2: <http://www.semanticweb.org/administrator/ontologies/2016/11/genre_ontology#> 
PREFIX o1: <http://www.semanticweb.org/administrator/ontologies/2016/11/certification_ontology#> 

私はジャンルや認定を持つ映画を見つけたいです。私のクエリは、ここに

SELECT ?x ?z 
WHERE { 
    ?x o1:hasCertificationOf ?y. 
    ?z o2:hasGenre ?a. 

    FILTER regex(str(?y),"R_") FILTER regex (str(?a),"Adventure") 
} 

RあるRestricted認定

クエリ結果でxzで映画を含んでいますが、私は唯一のxzに共通のムービーをしたいですか?

+0

何を試しましたか?どのように映画に参加したいですか?それらの(正確に同じ)タイトルに基づいて、共通のIDに基づいて?詳細を追加! – vefthym

+0

両方のオントロジーを同じJenaモデルにロードすると、問題はありません。 SPARQLクエリを書くだけで、Jenaはトリプルの起点を気にしません。 – AKSW

+0

これは私のオントロジです。前者:http://www.semanticweb.org/administrator/ontologies/2016/11/genre_ontology# PREFIX o1:http://www.semanticweb.org/administrator/ontologies/2016/11/certification_ontology #、私はジャンルと認定を持つ映画を探したい。私のクエリはSELECTですか?x?z WHERE {?x o1:hasCertificationOf?y。 ?z o2:hasGenre?a。 FILTER regex(str(?y)、 "R_")FILTER regex(str(?a)、 "Adventure")}ここでRは制限付きの認証ですxとzのムービーを含むクエリ結果ですが、 xとz? –

答えて

1

あなたは常に質問に沿って最小限の例を提供するようにしてください。あなたはMultiple triple patternsで見たいと思うかもしれません

?s cert:level cert:PG13 . 
?s genres:genre genres:Action . 

見ての通り、私たちは(2つのオントロジーのための)2つの名前空間を使用します。あなたは(あなたのSPARQLクエリの前に)このようにそれらを参照することができます。

PREFIX cert: <http://example.com/cert/1.0/> 
PREFIX genres: <http://example.com/genres/1.0/> 

最終クエリは次のようになります。

PREFIX cert: <http://example.com/cert/1.0/> 
PREFIX genres: <http://example.com/genres/1.0/> 

SELECT ?s ?p ?o 
WHERE { 
    ?s ?p ?o . 
    ?s cert:level cert:PG13 . 
    ?s genres:genre genres:Action . 
} 

NB:単一のクエリで複数のグラフパターンを適用するために、それらのパターンで同じ変数を使用する必要があります(最後の2つのグラフパターンでは?s)。

私は著者とは関係がありませんが、私はあなたがhttps://www.futurelearn.com/courses/linked-dataを服用することで恩恵を受けるかもしれないと思います。

+0

これは私のオントロジです。前のページ:http://www.semanticweb.org/administrator/ontologies/2016/11/genre_ontology# PREFIX o1:http://www.semanticweb.org/administrator/ontologies/2016/11/certification_ontology #、私はジャンルと認定を持つ映画を探したい。私のクエリはSELECTですか?x?z WHERE {?x o1:hasCertificationOf?y。 ?z o2:hasGenre?a。 FILTER regex(str(?y)、 "R_")FILTER regex(str(?a)、 "Adventure")}ここでRは制限付きの認証ですxとzのムービーを含むクエリ結果ですが、 xとz? –

+0

'x'と' z'を使用せず、両方のパターンに 'x'を使用するだけです。これを強調するために私の答えを更新しました。 – berezovskyi

+0

両方のパターンでxを使用すると、結果は出ません。 –

関連する問題