Jena 模型验证 OntModel

如何解决Jena 模型验证 OntModel

我创建了一个本体,我想用它来验证实例,以下是我的测试设置,无法获得验证报告,其中一个 uid 为零。这是 xsd:minexclusive "0"^^xsd:unsignedLong

任何人都可以帮助我理解使用 Jena 的最佳实践,我打算起诉认模型以接收验证 aginast ontModel 和 TDB 支持模型中的合并的输入。

:Book rdf:type owl:Class ;
      rdfs:subClassOf Model .

和数据属性

:uid rdf:type owl:DatatypeProperty,owl:FunctionalProperty ;
     rdfs:domain :Model ;
     rdfs:range [ rdf:type rdfs:Datatype ;
                  owl:onDatatype xsd:unsignedLong ;
                  owl:withRestrictions ( [ xsd:minexclusive "0"^^xsd:unsignedLong
                                         ]
                                       )
                ] .

尝试使用这个本体来验证数据

    OntModel ontModel =  ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RDFS_INF);
    ontModel.read(getClass().getClassLoader().getResource("model.owl").toExternalForm(),NS);
    // ontModel.write(System.out);
    reasoner reasoner = ontModel.getreasoner().bindSchema(ontModel);
    Model data = createTestData();
    //data.write(System.out);
    InfModel infModel = ModelFactory.createInfModel(reasoner,data);
    ValidityReport report = infModel.validate();
    if (report.isValid())
        System.out.println("valid");

在下面的代码//(index - 1)确保至少有一个id为0

    public static Model createTestData() {
    Model instances = ModelFactory.createDefaultModel();
    instances.setnsprefix("rdfs",RDFS.getURI());
    instances.setnsprefix("rdf",RDF.getURI());
    instances.setnsprefix("a",NS);
    instances.setnsprefix("",NS + "#");

    Property UID_PROPERTY = ResourceFactory.createProperty(NS + "#uid");

    IntStream.of(1,2,3).forEach(index -> {
        Resource r = instances.createResource(NS + "/item/" + (index - 1));
        
        r.addProperty(UID_PROPERTY,ResourceFactory.createTypedLiteral((index - 1)));
    });
    return instances;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?