2014-07-07 7 views
-1

Java 코드를 사용하여 SPARQL 엔드 포인트에 문제가 있습니다.Java 코드에서 SPARQL 쿼리 (DBPedia)를 호출 할 때 HttpException 오류가 발생했습니다.

은 특히,이 자바 클래스를 가지고 : "형 RDF"

public class example { 

    public static void main(String[] args) { 

     String value = "http://dbpedia.org/resource/Fred_Guy"; 

     example exam = example(); 
     QueryExecution qe = exam.query(value); 
     ResultSet results = ResultSetFactory.copyResults(qe.execSelect()); 

    } 


    public QueryExecution query(String stringa){ 

     ParameterizedSparqlString qs = new ParameterizedSparqlString("" + 
       "prefix dbpediaont: <http://dbpedia.org/ontology/>\n" + 
       "prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" + 
       "\n" + 
       "select ?resource where {\n" + 
       "?mat rdf:type ?resource\n" + 
       "filter strstarts(str(?resource), dbpediaont:)\n" + 
       "}"); 


     Resource risorsa = ResourceFactory.createResource(stringa); 
     qs.setParam("mat", risorsa); 

     QueryExecution exec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", qs.asQuery()); 

     ResultSet results = ResultSetFactory.copyResults(exec.execSelect()); 

     while (results.hasNext()) { 

      System.out.println(results.next().get("resource")); 
     } 

     // A simpler way of printing the results. 
     ResultSetFormatter.out(results); 

     return exec; 
    } 
} 

내가 술어 자원 "http://dbpedia.org/resource/Fred_Guy"의 객체를 검색하고 싶습니다. 하지만 이해할 수없는 오류가 있습니다.

Exception in thread "main" HttpException: 500 
    at com.hp.hpl.jena.sparql.engine.http.HttpQuery.execGet(HttpQuery.java:340) 
    at com.hp.hpl.jena.sparql.engine.http.HttpQuery.exec(HttpQuery.java:276) 
    at com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP.execSelect(QueryEngineHTTP.java:345) 
    at MyPackage.example.main(example.java:19) 

왜이 오류가 발생합니까? 나는 strstarts를 작성하지 않고

" http://dbpedia.org/sparql "

에서이 쿼리를 실행하기 위해 노력하고있어 나는이 오류가

: 내가 잘못 여기서 뭐하는 거지

Virtuoso 37000 Error SP031: SPARQL compiler: No one quad map pattern is suitable for GRAPH <http://dbpedia.org> { "http://dbpedia.org/resource/Fred_Guy" <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?resource } triple at line 7 

SPARQL query: 
define sql:big-data-const 0 
#output-format:text/html 
define sql:signal-void-variables 1 define input:default-graph-uri <http://dbpedia.org> prefix dbpediaont: <http://dbpedia.org/ontology/> 
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
select ?resource where { 
"http://dbpedia.org/resource/Fred_Guy" rdf:type ?resource 
} 

? 나는 예나 코드를 쓸 수있는 방법

prefix dbpediaont: <http://dbpedia.org/ontology/> 
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
select ?resource where { 
dbpedia:Fred_Guy rdf:type ?resource 
} 

SPARQL results

:

나는 거장에서이 코드를 작성하려고?

답변

2

두 가지 검색어가 있습니다. 질문이 끝나면 필터가없는 쿼리를 사용하지만 이는 코드에 포함 된 쿼리와 다릅니다. 당신이 DBpedia의 엔드 포인트 코드에 포함 된 쿼리를 사용하는 경우, 당신은 매우 분명 오류 메시지 :

의 핵심은
Virtuoso 22023 Error SL001: The SPARQL 1.1 function STRSTARTS() needs a string value as 2d argument 

SPARQL query: 
define sql:big-data-const 0 
#output-format:text/html 
define sql:signal-void-variables 1 define input:default-graph-uri <http://dbpedia.org> prefix dbpediaont: <http://dbpedia.org/ontology/> 
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

select ?resource where { 
?mat rdf:type ?resource 
filter strstarts(str(?resource), dbpediaont:) 
} 

The SPARQL 1.1 function STRSTARTS() needs a string value as 2d argument

당신은 그것이 IRI 이후 str()dbpediaont:를 작성해야

, 문자열이 아닙니다 :

filter strstarts(str(?resource), str(dbpediaont:))