1

私は SPARQL を初めて使用し、SQL 結合方式でトリプルからいくつかの結果を取得しようとしています。

たとえば、特定の画像が属するオブジェクトの ID や、オブジェクトの作成者の ID などを探しています。

RDF 関係は次のように定義されます。

<image> <isResourceOf> <object>
<person> <isAuthorOf> <object>

私はこれを試しました:

SELECT ?o ?a from <#ri> 
WHERE {
  {<myns:myImageID> <myns:isResourceOf> ?o}
  UNION
  {?a <myns:isAuthorOf> ?o}
}

?oただし、2 つの変数がバインドされていないため、これはすべての作成者をフェッチします。

最初の一致セットに対してのみ著者を一致させるにはどうすればよいですか?

ありがとう

gm

編集:

より完全な例:

PREFIX aic: <http://mydomain.org/definitions/1.0/fedora/3#>

SELECT *
WHERE {
  <info:fedora/AICTEST:DOResImg-G38562> aic:isResourceOf ?o . 
  ?a aic:isAuthorOf ?o .
}

結果がありません。

SELECT *
WHERE {
  <info:fedora/AICTEST:DOResImg-G38562> aic:isResourceOf ?o . 
}

結果 (CSV):

"o"
AICTEST:DOArtObj-1946.479

これとともに:

SELECT *
WHERE {
  ?a aic:isAuthorOf ?o .
}

結果:

"a","o"
info:fedora/AICTEST:DOAgent-35729,info:fedora/AICTEST:DOArtObj-1946.479
info:fedora/AICTEST:DOAgent-35729,AICTEST:DOObjSet-1946.494
4

3 に答える 3

3

SQL でジョインと呼ばれるものは、SPARQL では単純に基本的なグラフ パターンのリストとして表現されます。いいえUNION必要ありません:

 SELECT ?o ?a 
 WHERE { 
         <myns:myImageId> <myns:isResourceOf> ?o .
         ?a <myns:isAuthorOf> ?o .
 }

それだけです。SPARQL の考え方は、データに「グラフ テンプレート」を指定することです。テンプレートに正確に一致するものはすべて、クエリの結果です。したがって、上記のクエリは<myns:myImageId>、( = ) のリソースであるすべてのもの?oと、それらのそれぞれについて、すべての作成者 ( ?a) を提供します。

于 2013-07-30T23:33:35.443 に答える
2

この質問はhttp://answers.semanticweb.com//questions/23912/fetching-chained-relationships-with-sparql-mulgaraと重複しています

そこで言ったように、元のクエリの名前空間プレフィックスの定義に何か問題があると強く疑っています.

完全な情報を提供することをお勧めします。そうでない場合、有益なアドバイスを提供することができません。

于 2013-08-01T16:51:54.033 に答える
1

適切なリレーション チェーンを機能させることができました。

PREFIX aic: <http://mydomain.org/definitions/1.0/fedora/3#>
PREFIX fedora-rels-ext: <info:fedora/fedora-system:def/relations-external#>

SELECT ?o ?a ?p ?s
FROM <#ri>
WHERE {
  <info:fedora/AICTEST:DOResImg-G38562> aic:isResourceOf ?o . 
  OPTIONAL { 
    ?a aic:isAuthorOf ?o .
    OPTIONAL { 
      ?p aic:isBirthplaceOf ?a 
    } . 
  } . 
  OPTIONAL { 
    ?o fedora-rels-ext:isPartOf ?s .
  }
}

結果 (CSV):

"o","a","p","s"
info:fedora/AICTEST:DOArtObj-1946.479,info:fedora/AICTEST:DOAgent-35729,info:fedora/AICTEST:DOPlace-Meissen,AICTEST:DOObjSet-1946.494
于 2013-08-04T14:18:47.963 に答える