java - Jena API - 如何处理 OWL 文件?

标签 java rdf jena owl

我有以下代码来列出本体的个体:

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/

相关文章:

java - 使用 gson 反序列化时将 TypeToken 转换为 Type 时出错

java - hibernate 中的一对多映射。值即将为空

java - 如何减小 TDB 支持的 Jena 数据集的大小?

java - 将 Selenium 与 Mozilla 的 GeckoDriver 一起使用时未发现 CircularOutputStream 类异常

java - 在 Cucumber java 的特定步骤中访问 Cucumber 中的场景对象

rdf - 为什么 rdf :Seq and not rdfs:Seq?

java - 读取目录中的所有RDF文件

Django RDF 支持?

java - 如何将从 Sparql SELECT 查询获得的结果集转换为映射

java - 如何在 Jena 的 Sparql API 中设置属性路径?