14

SPARQLDESCRIBEクエリを実行していないようです。条件に一致するリソースの完全なグラフを取得する必要があります。私が試した1つのSPARQLエンドポイント(ノルウェー語RådataNå、http: //data.bibsys.no/data/query_authority.html )では、これは問題なく機能します。

PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>

DESCRIBE ?person WHERE {
  ?person rdf:type foaf:Person .
  FILTER EXISTS { ?person owl:sameAs ?sameAs }
}
LIMIT 100

owl:sameAsトリプルを持つPersonリソースで結果が得られます。

他のSPARQLエンドポイントでは、Onki Light(http://sparql.onki.fi/sparql.tpl)とDBPedia(http://dbpedia.org/sparql)の同様のクエリ

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

DESCRIBE ?x WHERE {
  ?x rdf:type skos:Concept .
  FILTER EXISTS { ?x skos:prefLabel ?prefLabel }
}
LIMIT 100

もがない多くのリソースを返すので、明らかにクエリを正しく実行していませんrdf:Type = skos:Conceptskos:prefLabel必要な結果を生成するには、この種のクエリをどのように記述する必要がありますか?

4

3 に答える 3

11

受け取ったリソース」は、要件を満たすリソースがないskos:prefLabelskos:Concept、おそらく関連しています。

SPARQL DESCRIBEクエリは、クエリのグラフパターンに一致するリソースを実際に返すのではなく、それらのリソースを「記述する」RDFグラフを返します。リソースを記述するために含まれるトリプルを選択するのは、sparqlサービス次第です。(以下の標準を参照してください)

SPARQL 1.1に関するW3C提案の推奨事項は、次のように述べています。

DESCRIBEフォームは、リソースに関するRDFデータを含む単一の結果RDFグラフを返します。[...]説明はクエリサービスによって決定されます。

したがって、予期せず受け取るリソースは、実際に必要なリソースを説明している可能性があります。問題を調査するには:必要なリソースとの関係について、実際に受け取る必要のあるトリプルを確認します。良い方法はLIMIT 1、DESCRIBEクエリの効果を確認することから始めることです。

たぶん、SELECTクエリが必要ですか?グラフパターンに一致するリソースのみを返します。

于 2013-03-04T08:48:54.383 に答える
2

@ThomasDESCRIBEが述べているように、標準では少し指定が不足しているため、一貫性のない結果が得られます。ただし、を使用するCONSTRUCTと、多くのエンジンが返すものDESCRIBE、つまりSPOとOPSを返すことができ、サービス間で一貫して返すことができます。これを行うクエリは次のとおりです。

CONSTRUCT {
   ?person ?p ?o .
   ?s ?p1 ?person .
}
WHERE {
   ?person rdf:type foaf:Person .
   FILTER EXISTS { ?person owl:sameAs ?sameAs } .
   ?person ?p ?o .
   ?s ?p1 ?person .
}

?personこれにより、バインドされたリソース、つまり、の?personすべてのプロパティと、値(オブジェクト)が?personであるすべてのプロパティを「説明」するRDFグラフが得られます。

于 2016-04-25T14:11:58.830 に答える
1

データの実際の構造がわからないため、SELECTまたはCONSTRUCTは当面のケースでは実行可能なオプションではありません。

なんでそんなこと言うの?私はあなたがリソースだけを手に入れたいと思う:

select ?x WHERE {
  ?x rdf:type skos:Concept .
  FILTER EXISTS { ?x skos:prefLabel ?prefLabel }
}
LIMIT 100

またはすべての発信トリプル:

select ?x ?p ?y WHERE {
  ?x rdf:type skos:Concept.
  FILTER EXISTS { ?x skos:prefLabel ?prefLabel }
  ?x ?p ?y
}
LIMIT 100
于 2015-01-08T10:18:35.480 に答える