0

我编写了一个接口,例如给出了 Pizza 本体,它可以区分断言和推断的公理。例如,假设Class: Food SubClassOf: Thing它会告诉你它是推断出来的。我的问题是,如果我有一个无法满足的类 TomatoTopping,并且我想知道Class: TomatoTopping SubClassOf: Nothing是断言、推断还是没有,我会得到公理不存在的响应。虽然我可以在层次结构中的 Nothing 下看到 TomatoTopping。问题是什么?我不能查询这样的公理还是我的逻辑有缺陷?

这是识别Class: Food SubClassOf: Thing但不识别的代码Class: TomatoTopping SubClassOf: Nothing

    // parsing input
    Set<OntologyAxiomPair> frame = parsingProcess(tool, input);
    Iterator<OntologyAxiomPair> frameit = frame.iterator();

    while (frameit.hasNext()) {
        OntologyAxiomPair newPair = frameit.next();
        OWLAxiom tempAx = newPair.getAxiom();

        // the axiom type must be anything but declaration
        if (!tempAx.isOfType(AxiomType.DECLARATION)) {
            // get asseted and inferred axioms
            Set<OWLAxiom> asserted = getOntology().getAxioms();

            if (asserted.contains(tempAx)) {
                Result = "System: this axiom is an asserted axiom.";
                displayUserMessage(Result, asetBlue);
                break;
            }

            // Use an inferred axiom generators
            else 
            {
                // Calling TrOWL
                RELReasoner reasoner = relfactory.createReasoner(getOntology());
                if(reasoner.isEntailed( tempAx)){
                    Result = "System: this axiom is an inferred axiom.";
                    displayUserMessage(Result, asetMagenta);
                    break;
                }
            }
        }
    }

我想我发现了问题所在。曼彻斯特语法解析器需要一个数据工厂。

    OWLOntologyManager manager = inputOntology.getOWLOntologyManager();
    this.dataFactory = manager.getOWLDataFactory();

由于经理没有被推理机分类,OWL:Nothing 不会出现。您知道一种对经理进行分类然后提取数据工厂的方法吗?

4

0 回答 0