2017-01-29 4 views
0

jenaとsparkを使用して特定のクラスをオントロジーで取得しています。sparkクエリを使用してrdfs:labelを取得するための条件と同じ

final String queryString = "" + 
      "prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n" + 
      "\n" + 
      "select ?class where {\n" + 
      " ?class rdfs:label \""+ word +"\"\n" + 
      "}\n" + 
      ""; 
ResultSet results = QueryExecutionFactory.create(queryString, model).execSelect(); 

単語がラベルの一部であるクラスを取得するには、どのようにクエリを変更する必要がありますか? 実際には私はスパークの "sql Like statement"のようなものが必要です。 私を助けてくれてありがとう!

答えて

0

スパークではありません。スパークヘッドです。スパークヘッドhereです。あなたが探しているのは文字列関数です。あなたはregex()関数を探しているかもしれません。しかし、最も些細なクエリ以外のものは時間がかかります。実際、DBシステムのように使用しないことをお勧めします。また、あなたが対象を探しているとそれがリテラルURI、BN、することができたクラスを探していません

final String queryString = 
     "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> " + 
     "SELECT ?s ?label ?contains" 
     "WHERE {" + 
     " ?s rdfs:label ?label ." + 
     " BIND(CONTAINS(?label,\""+ variableToFind +"\") AS ?contains)" 
     "}"; 

:あなたのSPARQL文字列は次のようにする必要があります。

+0

が見つかり.but私は短い時間で検索することができますか? –

+0

申し訳ありませんが、文字列関数を強調表示するのを忘れてしまいました。少し速いですが逆インデックスがなければLuceneを使うか、[Jena default implementation](https://jena.apache.org/documentation/)を使用してください。 query/text-query.html)。 – Nord

0

がより検索した後、私はyes.youがright.itは、多くの時間を要している右のクエリ

String Quert ="PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>" 
      + " SELECT ?x WHERE { ?x rdfs:label ?v ." + 
      "FILTER regex(?v, \"word\", \"i\")}" ; 
関連する問題