嗨,我正在研究最后一年项目,这是一个基本上是使用本体的工作搜索引擎。我使用的技术是Java。
它的工作方式是用户搜索任何作业,例如:Java开发人员,然后该关键字应进入创建的Ontology中并在Ontology中得到匹配。一旦匹配,它将进入包含所有作业的Xml文件,并仅获取已匹配的作业。
本体已成功创建,唯一的问题是我在使用Jena API理解和编写 SPARQL查询时遇到困难,该查询将采用用户键入的关键字并进入 OWL或RDF本体文件并找到匹配项,然后从那里转到xml数据文件,仅获取匹配的数据并将其显示在页面上。
这是我编写的代码。我只能阅读本体,因此我决定首先正确显示它们,但出现错误。
OntModel model = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_MICRO_RULE_INF);
String inputFileName="e:/springmvc/jena/bin/jena/ontology14.owl";
InputStream in = FileManager.get().open( inputFileName );
if (in == null) {
throw new IllegalArgumentException(
"File: " + inputFileName + " not found");
}
model.read(in, null);
String queryString =
"prefix rdfs: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+
"prefix owl: <http://www.w3.org/2002/07/owl#> "+
"select ?ab where {?person owl:equivalentClass ?ab " +
"}";
Query query = QueryFactory.create(queryString);
QueryExecution qe = QueryExecutionFactory.create(query, model);
ResultSet results = qe.execSelect();
while(results.hasNext()){
QuerySolution soln = results.nextSolution();
Literal jobs = soln.getLiteral("x");
System.out.println(jobs);
}
qe.close();
我得到的错误:
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:41)
at jena.jeena.main(jeena.java:79)