使用 sparql 查询 Jena 从 OWL 文件中检索个人
retrieve individuals from OWL file using sparql query Jena
这是我的 CS.owl 的一部分,它显示了 class CloudService 的个人 DropBox。
<!-- http://www.semanticweb.org/ontologies/SaaS-24-03-2013.owl#DropBox -->
<owl:NamedIndividual rdf:about="&SaaS-24-03-2013;DropBox">
<rdf:type rdf:resource="&SaaS-24-03-2013;CloudService"/>
<hasPriceModel rdf:resource="&SaaS-24-03-2013;Freemium"/>
<hasDeliveryModel rdf:resource="&SaaS-24-03-2013;Software-as-a-Service"/>
</owl:NamedIndividual>
我需要使用 Jena 检索 class CloudService 的个体(例如 DropBox)。
下面的 SPARQL 查询 运行s 在 Protege 4.3 中是完美的。它检索许多服务,包括 "DropBox"。
我需要使用 Jena 运行 它。这是我的代码
String query = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+
"PREFIX owl: <http://www.w3.org/2002/07/owl#> "+
"PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> "+
"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "+
"PREFIX : <http://www.semanticweb.org/ontologies/SaaS-24-03-2013.owl#> "+
"SELECT ?Service "+
" WHERE {"+
" ?Service a :CloudService} ";
model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RULE_INF);
model.read("ontologies/CS.owl");
Query query = QueryFactory.create(SparqlQuery);
QueryExecution qe = QueryExecutionFactory.create(query, model);
com.hp.hpl.jena.query.ResultSet results = qe.execSelect();
qe.close();
ResultSetFormatter.out(System.out, results);
}
查询returns列下的空结果header
虽然它适用于 Protege 和 returns 结果(包括 DropBox)
我的代码有什么问题?
您关闭了执行 qe
然后尝试打印结果。代码必须完成调用 qe.close
的结果。移动 ResultSetFormatter
行。
这是我的 CS.owl 的一部分,它显示了 class CloudService 的个人 DropBox。
<!-- http://www.semanticweb.org/ontologies/SaaS-24-03-2013.owl#DropBox -->
<owl:NamedIndividual rdf:about="&SaaS-24-03-2013;DropBox">
<rdf:type rdf:resource="&SaaS-24-03-2013;CloudService"/>
<hasPriceModel rdf:resource="&SaaS-24-03-2013;Freemium"/>
<hasDeliveryModel rdf:resource="&SaaS-24-03-2013;Software-as-a-Service"/>
</owl:NamedIndividual>
我需要使用 Jena 检索 class CloudService 的个体(例如 DropBox)。 下面的 SPARQL 查询 运行s 在 Protege 4.3 中是完美的。它检索许多服务,包括 "DropBox"。 我需要使用 Jena 运行 它。这是我的代码
String query = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+
"PREFIX owl: <http://www.w3.org/2002/07/owl#> "+
"PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> "+
"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "+
"PREFIX : <http://www.semanticweb.org/ontologies/SaaS-24-03-2013.owl#> "+
"SELECT ?Service "+
" WHERE {"+
" ?Service a :CloudService} ";
model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RULE_INF);
model.read("ontologies/CS.owl");
Query query = QueryFactory.create(SparqlQuery);
QueryExecution qe = QueryExecutionFactory.create(query, model);
com.hp.hpl.jena.query.ResultSet results = qe.execSelect();
qe.close();
ResultSetFormatter.out(System.out, results);
}
查询returns列下的空结果header 虽然它适用于 Protege 和 returns 结果(包括 DropBox) 我的代码有什么问题?
您关闭了执行 qe
然后尝试打印结果。代码必须完成调用 qe.close
的结果。移动 ResultSetFormatter
行。