同様のタイトルのこの質問に示されているように、名前の一部を知って dbpedia リソースを取得したいと思います。私はSPARQLなどに関しては初心者ですが、質問の例は、著者が「ルーマニア」を検索し、回答者が仕事をするためにSparqlリクエストで彼を接続したので、私を大いに助けてくれました. それは素晴らしいことですが、ここにあります。
この例では、彼らはすでにルーマニアが国であることを「知っていた」ため、
?c a dbpedia-owl:Country ;
WHERE句で。完全な sparql リクエストは
SELECT ?c
WHERE {
?c a dbpedia-owl:Country ;
foaf:name "Romania"@en .
FILTER NOT EXISTS {?c dbpedia-owl:dissolutionYear ?y}
}
しかし、この質問は私たちのニーズに完全に答えているわけではありません。そのため、「名前」はリソースの実際の名前またはその一部であり、その (rdf:)type に関係なく、その名前で任意のリソースを検索します。目標は、名前またはその一部を知っているだけで、「何か」を検索することです。
私は皆さんにこの質問をする前にいくつかの調査を行ってきましたが、「名前の一部」の問題は bif 関数 (sparql に準拠していないため悪い方法です) または CONTAINS 句で解決できることを既に知っています。しかし、それを使用する方法を示す例は見つかりませんでした。
ここで、dbpedia リソースの中から検索する「単語」があるとします。その単語は、ユーザーからの入力です。そして、それを「INPUT」と呼びましょう。
リクエストは次のようになります。
SELECT ?something WHERE
{
?something a (dbpedia Resource).
CONTAINS(?something,"INPUT")
}
私の主な質問は、次の 2 つの主要な側面についてです。
- タイプ Dbpedia Resource を説明するものはありますか? オントロジーなどではないと思います。一致するものを見つけるためにすべてのリソースの中から検索したいことを知っていることによって...
- 私が提供する特定の名前、または何らかの文字列。私は FILTER オプションを検討しましたが、それはすべてのリソースを取得し、取得後に名前でフィルタリングすることを意味しますが、これはあまり最適ではないと思います。
それで、名前またはその一部を提供してリソースを取得するこの「マスタークエリ」を知っている人はいますか? (たとえば、「オバマ」を提供し、バラックだけでなくミシェルにも結果を取得します)。
前もって感謝します。