1

DBpedia から市、州、および国の要約を英語でクエリしようとしていますが、結果はまちまちです。市と国ではうまくいくようですが、州ではうまくいきません。

SELECT * WHERE {
  ?x rdfs:label "France"@en.
  ?x dbpedia-owl:abstract ?abstract.
  FILTER (LANG(?abstract) = 'en')
}

または

SELECT * WHERE {
  ?x rdfs:label "Boston"@en.
  ?x dbpedia-owl:abstract ?abstract.
  FILTER (LANG(?abstract) = 'en')
}

ただし、次のクエリでは結果が見つかりません。

SELECT * WHERE {
  ?x rdfs:label "Sao Paulo"@en.
  ?x dbpedia-owl:abstract ?abstract.
  FILTER (LANG(?abstract) = 'en')
}

SELECT * WHERE {
  ?x rdfs:label "Massachusetts"@en.
  ?x dbpedia-owl:abstract ?abstract.
  FILTER (LANG(?abstract) = 'en')
}

まず、検索を都市、州、または国のみに絞り込むにはどうすればよいですか? 次に、フランスのマサチューセッツやローヌなどの州を見つけるにはどうすればよいですか?

4

1 に答える 1

2

SPARQL クエリ ( なしOPTIONAL) は、すべてのトリプル パターンに一致する結果のみを返します。結果を返さないクエリの場合、これは、リソース ?x に関する次のステートメントの 1 つ以上が使用できないことを意味します。

  • rdfs:label「サンパウロ」があります
  • ラベル「Sao Paulo」は言語タグ付きの英語です
  • ありますrdfs:abstract
  • アブストラクトは言語タグ付きの英語です

この例では、おそらく を見つけたかったでしょう<http://dbpedia.org/resource/Sao_Paulo>。このリソースのラベルは「Sao Paulo」ではなく、「São Paulo」です。

2 番目のクエリ (マサチューセッツ州) は機能しましたが、完了するまでに時間がかかりました。

結果を特定のタイプ (都市、州、国など) のリソースに制限するには、タイプを指定する必要があります。RDF では、リソースのタイプ (または「クラス」) は を使用して指定されますrdf:type。同じ方法でクエリを実行できます。

SELECT * WHERE {
  ?x rdfs:label "São Paulo"@en.
  ?x rdf:type dbpedia-owl:Settlement.
  ?x dbpedia-owl:abstract ?abstract.
  FILTER (LANGMATCHES(LANG(?abstract), 'en'))
}

代わりに、「?x is a ?y」と読むことができるrdf:type短縮形を使用できます。 また、よりも効率的に評価できる場合があります。a
LANGMATCHES(LANG(?abstract), 'en')LANG(?abstract) = 'en')

このリソースは、Wikipedia の自治体であるため、DBpedia には含まれdbpedia:São_Pauloていないことに注意してください: http://en.wikipedia.org/wiki/S%C3%A3o_Paulo。同様に、は状態として定義されていません。ただし、どちらもdbpedia-owl:PopulatedPlaceです。dbpedia-owl:Citydbpedia:Massachusetts

于 2013-01-19T12:45:31.250 に答える