2017-01-29 8 views
0

이 쿼리를 사용하여 jena와 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 같은 문장이 필요합니다"불꽃이 필요합니다. 나를 도와 주셔서 감사합니다!

답변

0

스파크가 아니라 Sparql입니다. 아파치 스파크 헤드 here입니다. 당신이 찾고있는 것은 String 함수입니다. 당신은 regex() 함수를 찾고 있을지도 모른다. 그러나 가장 사소한 쿼리 이외에는 많은 시간이 걸릴 것입니다. 사실 DB 시스템과 같이 사용하지 않는 것이 좋습니다. 당신이 주제를 찾고 클래스 검색되지 않습니다 또한

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)" 
     "}"; 

그 리터럴 URI, BN, 될 수 있습니다처럼 SPARQL 문자열이어야합니다.

+0

발견 나누었다 나는 짧은 시간에 검색 할 수있는 방법? –

+0

죄송합니다. 문자열 함수를 강조 표시하는 것을 잊어 버렸습니다. 조금 빠르지 만 반전 된 인덱스가 없으면 Lucene을 사용하거나 [Jena 기본 구현] (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\")}" ;