2016-03-19 2 views
0

Это мой код Java, и я пытаюсь выполнить запрос в моем файле rdf с помощью jena, но это дает мне исключение из литерала. Я разработал rdf-файл, используя инструмент протеже, и попытался запросить его с помощью jena.Получение исключения при запросе rdf-файла с использованием сервера jena fuseki

Exception in thread "main" java.lang.ClassCastException: com.hp.hpl.jena.rdf.model.impl.ResourceImpl cannot be cast to com.hp.hpl.jena.rdf.model.Literal 
at com.hp.hpl.jena.sparql.core.QuerySolutionBase.getLiteral(QuerySolutionBase.java:26) 
at emotion.sparqltest(emotion.java:36) 
at emotion.main(emotion.java:16) 

Мой Java код выглядит следующим образом ...

import com.hp.hpl.jena.query.Query; 
import com.hp.hpl.jena.query.QueryFactory; 
import com.hp.hpl.jena.query.QueryExecution; 
import com.hp.hpl.jena.query.QueryExecutionFactory; 
import com.hp.hpl.jena.query.QuerySolution; 
import com.hp.hpl.jena.query.ResultSet; 
import com.hp.hpl.jena.rdf.model.Literal; 
import com.hp.hpl.jena.rdf.model.Model; 
import com.hp.hpl.jena.util.FileManager; 

public class emotion { 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 

sparqltest();} 

static void sparqltest() 
{ 

FileManager.get().addLocatorClassLoader(emotion.class.getClassLoader()); 
Model model= FileManager.get().loadModel("C:/Users/avg/workspacejena32/Jena/bin/emotion.rdf"); 

String queryString="PREFIX uni:<http://www.semanticweb.org/avg/ontologies/2016/2/untitled-ontology-5#>" + 
       "SELECT * WHERE {" + 
       "uni:angry uni:says ?x}"; 



Query query= QueryFactory.create(queryString); 
QueryExecution qexec=QueryExecutionFactory.create(query, model); 

try { 
    ResultSet results = qexec.execSelect();while (results.hasNext()){ 
    QuerySolution soln = results.nextSolution(); 
    Literal name = soln.getLiteral("x"); 
    System.out.println(name); 
} 
} 

finally { 
qexec.close(); 
    }}} 

Если я сделать некоторые изменения в моем запросе, как этот

"uni:angry uni:says ?words" 

Тогда я получить нулевой результат следующим образом

null 
null 

ответ

2
Literal name = soln.getLiteral("x"); 

? X не является буквальным - это URI или пустой узел.

Когда вы используете uni:angry uni:says ?words, символ x не установлен.

+0

Тогда что мне делать? Я не понимаю, как это решить? –

+0

@AshutoshVikramsingGirase Хорошая среда IDE должна предоставлять другие методы, доступные на объекте 'soln'. Также [javadoc для ** QuerySolution **]. Существует также метод getResource(), который возвращает ресурс и метод get(), который возвращает RDFNode. Любой из них предоставит вам ресурс. –

 Смежные вопросы

  • Нет связанных вопросов^_^