Dey*_*sta 5 java nullpointerexception jena karaf
我正在org.apache.jena与karaf. 在尝试查询我的模型时,我NullPointerException打印了用于创建查询的所有变量,而 all( queryString, inferedModel) 不是null。这是我的代码的样子:
Model model = JenaEngine.readModel(inputDataOntology);
if (model == null) {
return "model null !";
}
Model inferedModel = JenaEngine.readInferencedModelFromRuleFile(model, inputRule);
if (inferedModel == null) {
return "inferedModel null !";
}
JenaEngine.updateValueOfDataTypeProperty(inferedModel, ns, "Peter", "age", 10);
JenaEngine.updateValueOfObjectProperty(inferedModel, ns, "Peter", "estFilsDe", "Femme1");
JenaEngine.createInstanceOfClass(model, ns, "Femme", "abc");
//query on the model
String prefixQuery = "PREFIX ns: <http://www.owl-ontologies.com/Ontology1291196007.owl#>\n" +
"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
"PREFIX owl: <http://www.w3.org/2002/07/owl#>\n"+
"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n";
String selectQuery = "SELECT ?user ?age WHERE {\n ?user ns:age ?age.\n }";
QueryExecution queryExecution = QueryExecutionFactory.create(prefixQuery+selectQuery, inferedModel);
ResultSet rs = queryExecution.execSelect();
List<String> users = new ArrayList();
while(rs.hasNext()) {
QuerySolution qs = rs.next();
Resource user = qs.getResource("user");
users.add(user.getLocalName());
}
String results = "";
for(String user : users) {
results+=user+" ";
}
return results;
Run Code Online (Sandbox Code Playgroud)
我NullPointerException在初始化QueryExecution变量的那一行得到了一个。
这是错误的堆栈跟踪:
java.lang.NullPointerException
at org.apache.jena.query.ARQ.isTrue(ARQ.java:650)
at org.apache.jena.sparql.lang.ParserBase.<init>(ParserBase.java:292)
at org.apache.jena.sparql.lang.SPARQLParserBase.<init>(SPARQLParserBase.java:43)
at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11Base.<init>(SPARQLParser11Base.java:22)
at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.<init>(SPARQLParser11.java:4974)
at org.apache.jena.sparql.lang.ParserSPARQL11.perform(ParserSPARQL11.java:91)
at org.apache.jena.sparql.lang.ParserSPARQL11.parse$(ParserSPARQL11.java:52)
at org.apache.jena.sparql.lang.SPARQLParser.parse(SPARQLParser.java:34)
at org.apache.jena.query.QueryFactory.parse(QueryFactory.java:147)
at org.apache.jena.query.QueryFactory.create(QueryFactory.java:79)
at org.apache.jena.query.QueryFactory.create(QueryFactory.java:52)
at org.apache.jena.query.QueryFactory.create(QueryFactory.java:40)
at fr.conceptit.tuto.web.Main.work(Main.java:71)
...
Run Code Online (Sandbox Code Playgroud)
我正在通过 Karaf 部署我的应用程序,也许问题来自那里。这是我在 Karaf 上的捆绑包列表的屏幕截图。请注意,我添加了所有 Jena 罐。卡拉夫捆绑包列表
感谢@AndyS 的评论,我找到了让它工作的方法。他指着正确的方向说:
NPE on
ARQ.isTrue: ARQ 未正确初始化
确实这就是问题所在,我通过初始化ARQ而不是JenaSystem按照他的建议解决了这个问题。基本上我org.apache.jena.query.ARQ.init()在有任何电话之前添加了Jena它并且它起作用了。再次感谢您的帮助和支持。
| 归档时间: |
|
| 查看次数: |
558 次 |
| 最近记录: |