2017-05-12 20 views
1

は、私は「メディケア」は、それが動作しないために「メディ」と回から用語を変更するとすぐに、rdfs:SPARQLを使用して特定の用語に部分的に一致するdbpediaのラベルを検索する方法は?

select distinct ?label where 
{ 
    ?concept rdfs:label ?label 
    filter contains(?label,"Medi") 
    filter(langMatches(lang(?label),"en")) 
} 

しかし「メディ」単語が含まれているすべてのラベルを検索するには、このクエリを使用していますでる。メディケアのようなもっと長い言葉を使って作業するにはどうすればいいですか?すなわち、メディケアという単語が入っているすべてのラベルを抽出します。

答えて

2

DBpediaのすべてのラベルを照会する必要があります。これは非常に大きな数ですが、文字列包含チェックを適用する必要があります。これは確かに高価です。

select count(?label) where 
{ 
    ?concept rdfs:label ?label 
    filter(regex(str(?label),"Medi")) 
    filter(langMatches(lang(?label),"en")) 
} 

つのオプション:

SELECT DISTINCT ?label WHERE { 
    ?concept rdfs:label ?label . 
    ?label bif:contains "Medicare" 
    FILTER(langMatches(lang(?label),"en")) 
} 
  • 以来:

    1. のVirtuosoは、いくつかの全文検索をサポートしてい

      でもカウントクエリは、 "推定タイムアウトエラー" につながりますパブリックDBpediaエンドポイントは共有エンドポイントです。解決策はDBpedia daをロードすることですあなた自身のトリプルストアに集めます。 Virtuoso。ここで最大値を調整することができます。推定実行タイムアウトパラメータ。

  • +0

    こんにちは、 私は実際にローカルサーバー上でdbpediaを実行しています。そして、私はより速い解決を好むでしょう、遅い原因が悪いUXを意味するでしょう。 したがって、オプション#1をコピーしました。 'ヴィルトゥオーゾ37000エラーSP030:SPARQLコンパイラ、5行目:前に '?ラベル' での構文エラー: SPARQLクエリを 'BIF含ま': SQLを定義:ビッグデータのconst 0 #出力 - バックこれを得ました形式:テキスト/ html sql:signal-void-variablesを定義する1 SELECT DISTINCT?label WHERE { ?コンセプトrdfs:ラベル?ラベル ?ラベルbif:メディケア " FILTER(langMatches(lang(?label) ) } デバッグにお役立てください:) –

    +0

    ああ申し訳ありませんが、私は最初のトリプルパターンの後にドットを忘れました。今すぐ働かなければならない。 – AKSW

    関連する問題