【问题标题】:How to add Jena rule to OntModel如何将 Jena 规则添加到 OntModel
【发布时间】:2015-01-02 11:39:22
【问题描述】:

我正在尝试将作为字符串提交的 Jena 规则添加到以下方法。但是没有添加规则,因为我可以验证写入 E://1_1_1 的本体没有新的变化 有人可以帮助我如何做到这一点。 其他可能相关的 SO 问题是26292160349652;两者都与我的情况相似。

public String ValidateAndConfigureRule(String string) {     

    try{
        GenericRuleReasoner reasoner = new GenericRuleReasoner(Rule.parseRules(string));
        Model oModel = m.getOntology();

        reasoner.setDerivationLogging(true);            
        reasoner.setOWLTranslation(true);
        reasoner.setTraceOn(true);
        reasoner.setTransitiveClosureCaching(true);

        InfModel inf = ModelFactory.createInfModel(reasoner, oModel);

        inf.write(new FileWriter("E://1_1_1"));

        Model baseModel = ModelFactory.createDefaultModel();            
        baseModel.add(inf);

        final OntModel model  = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF, baseModel);          

        ValidityReport validity = model.validate();
    }
}

规则本身的格式为 [ r1: (?x :objProp1 :ind_x) -> (?x :objProp2 :ind_y) ] 其中objProp 是对象属性,ind_xind_y 是个体以及规则字符串中“:”的必要前缀。

【问题讨论】:

    标签: java rdf jena semantic-web jena-rules


    【解决方案1】:

    Andy's answer 抓住了这里最重要的部分:当你定义一个基于规则的推理模型时,模型的内容是断言和推理的三元组;规则没有写入模型。规则是 reasoner 的一部分,而不是 data

    这实际上与 SWRL 规则相反,后者定义了序列化格式,以便 SWRL 规则可以与 OWL 数据一起编写。您可以考虑使用 SWRL 规则和支持它们的推理器(例如 Pellet、HermiT)而不是 Jena 规则,因为这些规则可以与数据一起编写。

    作为一种解决方法,您还可以将 Jena 规则的文本作为注释属性的值存储在 OWL 本体上,并在加载本体时再次读取它们。也就是说,您最终可能会得到以下结果:

    @prefix : <http://example.org/my-ontology/>
    
    <http://example.org/my-ontology>
            a                owl:Ontology ;
            rdfs:comment     "My ontology with some Jena rules"@en ;
            :hasJenaRules    "...rule content here..." .
    

    然后,当你加载本体时,你可以检查是否存在具有 :hasJenaRules 属性的三元组,如果有,你可以取它们的对象,将它们解析为 Jena 规则,然后用规则创建一个推理器。我认为这将是使用 Jena 将规则与数据一起存储的最简单方法。

    【讨论】:

      【解决方案2】:

      当您编写 InfModel 时,它会写入基本数据 - 并没有改变。不写规则。

      【讨论】:

      • 那么,由于 m.getOntology 提供了我需要将规则添加到的本体模型,我如何将 jena 规则添加到本体模型中
      猜你喜欢
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      相关资源
      最近更新 更多