11

同様のタイトルのこの質問に示されているように、名前の一部を知って 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 つの主要な側面についてです。

  1. タイプ Dbpedia Resource を説明するものはありますか? オントロジーなどではないと思います。一致するものを見つけるためにすべてのリソースの中から検索したいことを知っていることによって...
  2. 私が提供する特定の名前、または何らかの文字列。私は FILTER オプションを検討しましたが、それはすべてのリソースを取得し、取得後に名前でフィルタリングすることを意味しますが、これはあまり最適ではないと思います。

それで、名前またはその一部を提供してリソースを取得するこの「マスタークエリ」を知っている人はいますか? (たとえば、「オバマ」を提供し、バラックだけでなくミシェルにも結果を取得します)。

前もって感謝します。

4

1 に答える 1

15

最初の質問では、インスタンス リソースだけに関心があると思います。RDF ではすべてがリソースであるため、一般的なケースでインスタンス リソースだけを明示的に要求できるかどうかはわかりません。DBpedia データセットでこれが特に必要な場合は、プロパティとして dcterms:subject を持つリソースを照会できます (DBPedia ではインスタンス リソースのみが dcterms:subject を持ちます)。したがって、次のようなクエリを作成できます。

SELECT DISTINCT ?s ?label WHERE {
            ?s rdfs:label ?label . 
            FILTER (lang(?label) = 'en'). 
            ?label bif:contains "Obama" . 
            ?s dcterms:subject ?sub 
}

2 番目の質問についても同様です。DBpedia データセットのみを使用している場合は、SPARQL に準拠していませんが、「bif:contains」を使用することをお勧めします。これを行う別の最適な方法はないと思います。あなたが言ったように、特にクエリをすばやく実行する必要がある場合、FILTER の使用は最適ではありません。キーワード検索とインデックス作成は、各トリプル ストアによってアドホックに処理されると思いますが、全文検索を行う標準化された方法はまだありません。

要約すると、dbpedia のみを使用する場合は、ストアの機能とデータセットの詳細を使用して問題を解決するだけです。

于 2011-12-26T23:43:05.893 に答える