首页 > 解决方案 > 我必须使用哪个推理器来验证给定的示例?

问题描述

我已经使用 Jena Lib 创建了一个模型,我想根据特定的 schema.rdf 对其进行验证。但是,当我开始验证时,它说一切正常,但我的模型中存在严重的架构违规,如下所示。在我的示例中,问题是现在我有一个具有属性“has-component”但“has-component”作为属性的主题在“#Component”-class 只允许的架构中。
我现在的问题是:验证后我可以使用哪个推理器来获取错误消息?

PS:我用所有不同的参数尝试了来自耶拿的几乎所有不同的推理器,但它仍然不起作用。

我的代码是:

Model schema = RDFDataMgr.loadModel("schema.rdf");
Model data = RDFDataMgr.loadModel("data.rdf");
Resource config = ModelFactory.createDefaultModel()
          .createResource()
          .addProperty(ReasonerVocabulary.PROPsetRDFSLevel, "full");        
Reasoner reasoner = RDFSRuleReasonerFactory.theInstance().create(config);
InfModel infmodel = ModelFactory.createInfModel(reasoner,schema,metadata);

ValidityReport validityReport = infmodel.validate();
if (validityReport.isValid()) {
    System.out.println("OK");
} else {
    System.out.println("Conflicts");
    for (Iterator i = validityReport.getReports(); i.hasNext();) {
        System.out.println(" - " + i.next());
    }
}

来自 data.rdf 的示例:

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:ixsr="http://ixsr.abokom.de/ixsr#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> 
[....]
  <ixsr:Topic rdf:about="http://ixsr.lebfy.de/topics/05d2c8268b68ff6444a49358ca7fe925/1/de-de">
    <ixsr:has-component rdf:resource="http://ixsr.lebfy.de/metadata/85e7506eb2e33f90c0a802687f559f0c"/>
    <ixsr:title xml:lang="de-de">Kontaktdaten</ixsr:title>
    <ixsr:relates-to-component rdf:resource="http://ixsr.lebfy.de/metadata/85e7506eb2e33f90c0a802687f559f0c"/>
    <ixsr:relates-to-product-feature rdf:resource="http://ixsr.lebfy.de/metadata/dbbb7334b2e2a9e5c0a8026860d20c17"/>
    <ixsr:relates-to-product-feature rdf:resource="http://ixsr.lebfy.de/metadata/10b4c299b2ddae19c0a8026824aa7410"/>
    <ixsr:relates-to-product-feature rdf:resource="http://ixsr.lebfy.de/metadata/b63e4b15b2dc2d83c0a8026877f6aa88"/>
    <ixsr:dateOfCreation xml:lang="de-de">2020-08-06T12:24:07.285+02:00</ixsr:dateOfCreation>
  </ixsr:Topic>
[....]

来自 schema.rdf 的示例:

<rdf:RDF xmlns:ixsr="http://ixsr.abokom.de/ixsr#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:schema="http://schema.org/" xml:base="http://ixsr.abokom.de/ixsr#" xml:lang="en">
[....]
<rdf:Property rdf:about="http://ixsr.abokom.de/ixsr#has-component">
<rdfs:label xml:lang="de">hat Komponente</rdfs:label>
<rdfs:label xml:lang="en">has component</rdfs:label>
<rdfs:subPropertyOf rdf:resource="http://ixsr.abokom.de/ixsr#ixsrRelationConcept"/>
<rdfs:domain rdf:resource="http://ixsr.abokom.de/ixsr#Component"/>
<rdfs:range rdf:resource="http://ixsr.abokom.de/ixsr#Component"/>
<ixsr:description xml:lang="en"/>
<rdfs:comment xml:lang="en">Relates to a component that is part of another component.</rdfs:comment>
<rdfs:comment xml:lang="de">Verweist auf eine Kompoente, die Teil einer anderen Komponente ist.</rdfs:comment>
<schema:domainIncludes rdf:resource="http://ixsr.abokom.de/ixsr#Component"/>
<schema:rangeIncludes rdf:resource="http://ixsr.abokom.de/ixsr#Component"/>
<ixsr:description xml:lang="en">Cardinality: http://ixsr.abokom.de/ixsr#Component [0..*]</ixsr:description>
</rdf:Property>
[....]

标签: modelschemardfjenareasoner

解决方案


推荐阅读