2012-10-21 4 views
2
나는 다음과 같은 쿼리를 사용하여 내 온톨로지에서 개인 검색 할 수 있습니다

:SPARQL 쿼리를 사용하여 올빼미에서 개인을 검색하는 방법은 무엇입니까?

SELECT ?indiv WHERE { ?indiv rdf:type:Fruit } 

를 내가 얻을 등 사과, 오렌지,하지만 난 자바에서이 쿼리를 작성, 내가받을 다음과 같은 예외로 결과 :

Exception in thread "main" com.hp.hpl.jena.query.QueryParseException: Encountered " "}" "} "" at line 4, column 41. 
Was expecting one of: 
    <IRIref> ... 
    <PNAME_NS> ... 
    <PNAME_LN> ... 
    <BLANK_NODE_LABEL> ... 
    <VAR1> ... 
    <VAR2> ... 
    "true" ... 
    "false" ... 
    <INTEGER> ... 
    <DECIMAL> ... 
    <DOUBLE> ... 
    <INTEGER_POSITIVE> ... 
    <DECIMAL_POSITIVE> ... 
    <DOUBLE_POSITIVE> ... 
    <INTEGER_NEGATIVE> ... 
    <DECIMAL_NEGATIVE> ... 
    <DOUBLE_NEGATIVE> ... 
    <STRING_LITERAL1> ... 
    <STRING_LITERAL2> ... 
    <STRING_LITERAL_LONG1> ... 
    <STRING_LITERAL_LONG2> ... 
    "(" ... 
    <NIL> ... 
    "{" ... 
    "[" ... 
    <ANON> ... 
    "+" ... 
    "*" ... 
    "/" ... 
    "|" ... 
    "?" ... 

at com.hp.hpl.jena.sparql.lang.ParserSPARQL11.perform(ParserSPARQL11.java:87) 
at com.hp.hpl.jena.sparql.lang.ParserSPARQL11.parse(ParserSPARQL11.java:40) 
at com.hp.hpl.jena.query.QueryFactory.parse(QueryFactory.java:132) 
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:69) 
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:40) 
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:28) 

내 코드는 다음과 같습니다 불법 SPARQL 구문입니다

String queryString = " PREFIX ont: <http://www.owl-ontologies.com/fruitOntology.owl#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?indiv WHERE { ?indiv ont:Fruit } "; 

Query query = QueryFactory.create(queryString) ; 
QueryExecution qexec = QueryExecutionFactory.create(query, m) ; 
try { 
    ResultSet results = qexec.execSelect() ; 
    for (; results.hasNext() ;) 
    { 
    QuerySolution soln = results.nextSolution() ; 
    Resource y = soln.getResource("y") ; 
    Resource x = soln.getLiteral("x") ; 
    System.out.println(y.getLocalName()+" = "+x.getString()) ; 
    } 
} 
catch(Exception e){ 
} 

답변

2

. 당신은 다음과 같은 것을 원합니다 :

PREFIX .... 
SELECT ?indiv WHERE { ?indiv rdf:type ont:Fruit } 

RDF는 트리플입니다. 관심있는 트리플 패턴은 predciate가 rdf:type 인 곳입니다. 패턴의 세 부분을 분리하는 공간이 필요합니다.

+0

이제 예외가 없습니다. 하지만 아무런 결과도 얻지 못했습니다 ... 왜 그런지에 대해 알고 있습니까? – Rosh

+2

아마도 과일을 직접적으로 주장하는 사람이 없기 때문일 것입니다. 더 나아가 A, B, & C가 사과이고 모든 사과가 과일이라면 A, B, C가 Fruit이라는 사실을 되돌리기 위해 어떤 종류의 추론을 사용하고 있는지 확인해야합니다. 사과의 사실 덕목. – Michael

관련 문제