【问题标题】:Changing axioms in JENA API在 JENA API 中更改公理
【发布时间】:2014-05-13 05:30:45
【问题描述】:

我已经构建了一个使用 Jena API 的应用程序,让您可以为产品创建本体,并拥有不同类型的产品,如运动、电子产品等。现在我要做的是更改某些规则。就像一条规则是subClassOf,它为您提供特定的类及其父类。进行更改以使其成为subClassOf 会给我该类的任何属性,或者除了给我父类之外,它还会返回我该类的子类。基本目标是使用耶拿 API 的公理。

谢谢

【问题讨论】:

    标签: jena ontology axiom


    【解决方案1】:

    subClassOf 中定义的规则,例如 etc/owl-fb-mini.rules 在基础图中创建(或允许查询)新三元组,现在将某些个体与其祖先类(通过subClassOf)相关联,而不是其直接父类.这些规则试图实现 rdfs 和 owl inference。

    例如,如果您的图表包含:

    <urn:ex:instance> <rdf:type> <urn:ex:ClassA>
    <urn:ex:ClassA>   <rdfs:subClassOf> <urn:ex:ClassB>
    

    然后,通过基本的类推理,图表应该表现得好像它包含以下三元组一样:

    <urn:ex:instance> <rdf:type> <urn:ex:ClassA>
    <urn:ex:ClassA>   <rdfs:subClassOf> <urn:ex:ClassB>
    <urn:ex:instance> <rdf:type> <urn:ex:ClassB>
    

    如果您想更改以 RDF 表示的 OWL 或 RDFS 公理的解释,即您可以通过图形访问哪些三元组,那么您需要制作自己的 rdfs 和/或 owl 规则文件版本.如果您希望这样做,您需要研究Reasoners and Rule Engines 文档以及jena-core 中的现有规则文件。

    实施您的示例只需向现有 RDFS 或 OWL 规则集添加附加规则:

    [andPropertiesToo: (?child rdfs:subClassOf ?parent), 
                       (?parent ?p ?o) -> 
                       (?child ?p ?o)
    ]
    

    例如,您可以检索用于 RDFS 的规则集,然后也添加此新规则,然后创建一个 GenericRuleReasoner,其 List&lt;Rule&gt; 包含所有规则:

    final String customRule =
        "[andPropertiesToo: (?child rdfs:subClassOf ?parent),\n"+ 
        "(?parent ?p ?o) ->\n"+ 
        "(?child ?p ?o)\n"+
        "]";
    
    final List<Rule> customRules = new ArrayList<Rule>(){{
        this.addAll(RDFSRuleReasoner.loadRulesLevel(RDFSRuleReasoner.SIMPLE_RULES));
        try( final BufferedReader src = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(customRule.getBytes()))) ) {
            this.addAll(Rule.parseRules(Rule.rulesParserFromReader(src)));
        }
    }};
    
    final RuleReasoner reasoner = (RuleReasoner)GenericRuleReasonerFactory.theInstance().create(null);
    reasoner.setRules(customRules);
    
    final InfModel model = ModelFactory.createInfModel(reasoner, ModelFactory.createDefaultModel());
    model.prepare();
    

    【讨论】:

      猜你喜欢
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多