0
これは私のJavaコードであり、jenaを使用して自分のrdfファイルを照会しようとしていますが、私はrdfファイルをprotgeツールを使って設計し、jenaを使ってそれを照会しようとしました。jena fusekiサーバーを使用してrdfファイルを照会中に例外を取得する
次のように私のJavaコードがある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)
...
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
次に、どうすればよいですか?私はそれを解決する方法が何も得ていないのですか? –
@AshutoshVikramsingGirase良いIDEは 'soln'オブジェクトで利用可能な他のメソッドを提供する必要があります。同様に[** QuerySolution **のjavadoc]もそうです。 Resourceを返すgetResource()メソッドと、RDFNodeを返すget()メソッドもあります。いずれかがあなたにリソースを得るでしょう。 –