この SPARQL クエリを使用して、DBpedia からすべてのタイプを取得しようとしています。
select ?type {
?type a owl:Class .
}
ここで、クエリによって返される各型の英語のラベルも含めたいと思います。クエリに何を追加する必要がありますか?
この SPARQL クエリを使用して、DBpedia からすべてのタイプを取得しようとしています。
select ?type {
?type a owl:Class .
}
ここで、クエリによって返される各型の英語のラベルも含めたいと思います。クエリに何を追加する必要がありますか?
これは、DBpedia から任意の情報を取得する方法についてもう少し学ぶ良い機会です。最初のクエリ (制限を追加) は次のとおりです。
select ?type {
?type a owl:Class .
}
limit 10
結果の 1 つはhttp://dbpedia.org/ontology/Animalで、実際に Web ブラウザーでアクセスすると、対応するページにそのリソースのプロパティがすべて表示されます。についてanimal
は、それほど多くはありませんが、私たちが興味を持っているのは
rdfs:label Tier
rdfs:label animal
rdfs:label animal
rdfs:label žival
rdfs:label 동물
ここで関心のあるプロパティはrdfs:label
であるため、クエリを次のように拡張できます。
select ?type ?label {
?type a owl:Class .
?type rdfs:label ?label .
}
limit 10
セミコロンを使用して、実際には少し省略できます。
select ?type ?label {
?type a owl:Class ;
rdfs:label ?label .
}
limit 10
ただし、そのクエリは、それぞれに対して複数の結果を返します?type
。実際、 ごと?label
に 1 つなので、次のような結果が得られます。
http://dbpedia.org/ontology/Animal "Tier"@de
http://dbpedia.org/ontology/Animal "animal"@en
ラベルは単なる文字列ではなく、言語タグを含む RDF リテラルであることに注意してください。SPARQL では、関数を使用して RDF リテラル (ある場合) の言語タグを取得できlang
ます。"en"
言語タグを演算子と比較することは可能です=
が、より堅牢な解決策は を使用することですlangMatches
。
filter langMatches( lang(?title), "FR" )
を使用して、次の両方の値を選択して検索できますが?title
、filter( lang(?title) = "fr" )
最初の値のみを検索します。
"Cette Série des Années Soixante-dix"@fr
"Cette Série des Années Septante"@fr-BE
langMatches、lang、およびフィルターを使用して、クエリをもう一度更新して、
select ?type ?label {
?type a owl:Class ;
rdfs:label ?label .
filter(langMatches(lang(?label),"EN"))
}
limit 10
DBpedia タイプとその英語ラベルを取得します。