我有以下代码来列出本体的个体:
public static void main(String[] args) {
OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
String fileName = "C:/Users/Ikno/Desktop/workspace/Jena/ontrdf.rdf";
try {
InputStream inputStream = new FileInputStream(fileName);
model.read(inputStream, "RDF/XML");
//model.read(inputStream, "OWL/XML");
inputStream.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
ExtendedIterator<Individual> itI = model.listIndividuals();
while (itI.hasNext()) {
Individual i = itI.next();
System.out.println(i.getLocalName());
}
}
代码正常,它返回所有单独的本地名称。问题是我在Protégé中创建了OWL本体,将其转换为RDF而只是为了由Jena操作是一个浪费的步骤。如果我取消注释 model.read(inputStream, "OWL/XML");
,则会出现以下错误:
class org.apache.jena.riot.RiotException
[line: 266, col: 31] {E201} Multiple children of property element
Jena不能支持这种OWL格式的操作吗?
最佳答案
作为一个选项,您可以使用 ONT-API ,这是 OWL-API 和 Apache Jena 之间的一种桥梁。因此,它同时支持所有 jena 和 owl-api 格式(OWL/XML 仅是 OWL-API&protege 的原始格式),但(注意)没有自己的实现。
关于java - Jena API - 如何处理 OWL 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24564343/