当前位置: 首页 > 知识库问答 >
问题:

用于检索对象属性断言Hermit和OWLApi

岳志义
2023-03-14

我试图从reasoner(Hermit1.3.8.4)和OWLApi(3.4.10)中检索属性断言。在这张图中,我想找回“我是爷爷桑德罗,我是爷爷塞尔吉奥”。

图片-对象属性断言

我尝试在https://stackoverflow.com/a/37497541/3760251中使用Ignazio答案

与Horridge的例子,但OWL API改变了签名,我不知道如何使用它。https://www.javatips.net/api/owl-master/owlapi-master/tools/src/main/java/org/semanticweb/owlapi/util/inferredsubobjectpropertyaxiomgenerator.java

因此,如果您有一个来自InferredObjectPropertyAxiomGenerator的addAxioms方法的示例,我很感激。

InferredObjectPropertyAxiomGenerator生成器=new InferredObjectPropertyAxiomGenerator(){@override protected void addAxioms(OWLEntity实体,OWLReasoner reasoner,OWLDataFactory dataFactory,Set result){}}

谢谢,

共有1个答案

马冯浩
2023-03-14

我在https://github.com/owlcs/owlapi/issues/643中找到了Ignazio的一段很棒的代码

我对您的代码做了一些小改动,并使用OWLAPI 4.3.1-snapshot和HermiT 1.3.8.431-snapshot运行它(这些版本包含问题#646中详细说明的修补程序)

输出文件包含对象属性:

public static void main(String[] args) throws Exception {
    OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
    OWLOntology ontology = manager.loadOntology(
        IRI.create("https://raw.githubusercontent.com/owlcs/pizza-ontology/master/pizza.owl"));
    OWLDataFactory df = manager.getOWLDataFactory();

    Configuration configuration = new Configuration();
    configuration.ignoreUnsupportedDatatypes = true;
    ReasonerFactory rf = new ReasonerFactory();

    OWLReasoner reasoner = rf.createReasoner(ontology, configuration);
    boolean consistencyCheck = reasoner.isConsistent();
    if (consistencyCheck) {
        reasoner.precomputeInferences(InferenceType.CLASS_HIERARCHY,
            InferenceType.CLASS_ASSERTIONS, InferenceType.OBJECT_PROPERTY_HIERARCHY,
            InferenceType.DATA_PROPERTY_HIERARCHY, InferenceType.OBJECT_PROPERTY_ASSERTIONS);

        List<InferredAxiomGenerator<? extends OWLAxiom>> generators = new ArrayList<>();
        generators.add(new InferredSubClassAxiomGenerator());
        generators.add(new InferredClassAssertionAxiomGenerator());
        generators.add(new InferredDataPropertyCharacteristicAxiomGenerator());
        generators.add(new InferredEquivalentClassAxiomGenerator());
        generators.add(new InferredEquivalentDataPropertiesAxiomGenerator());
        generators.add(new InferredEquivalentObjectPropertyAxiomGenerator());
        generators.add(new InferredInverseObjectPropertiesAxiomGenerator());
        generators.add(new InferredObjectPropertyCharacteristicAxiomGenerator());

        // NOTE: InferredPropertyAssertionGenerator significantly slows down
        // inference computation
        generators.add(new org.semanticweb.owlapi.util.InferredPropertyAssertionGenerator());

        generators.add(new InferredSubClassAxiomGenerator());
        generators.add(new InferredSubDataPropertyAxiomGenerator());
        generators.add(new InferredSubObjectPropertyAxiomGenerator());
        List<InferredIndividualAxiomGenerator<? extends OWLIndividualAxiom>> individualAxioms =
            new ArrayList<>();
        generators.addAll(individualAxioms);

        generators.add(new InferredDisjointClassesAxiomGenerator());
        InferredOntologyGenerator iog = new InferredOntologyGenerator(reasoner, generators);
        OWLOntology inferredAxiomsOntology = manager.createOntology();
        iog.fillOntology(df, inferredAxiomsOntology);
        File inferredOntologyFile = new File("output.txt");
        // Now we create a stream since the ontology manager can then write to that stream.
        try (OutputStream outputStream = new FileOutputStream(inferredOntologyFile)) {
            // We use the same format as for the input ontology.
            manager.saveOntology(inferredAxiomsOntology, outputStream);
        }
    } // End if consistencyCheck
    else {
        System.out.println("Inconsistent input Ontology, Please check the OWL File");
    }
}
 类似资料:
  • 假设我有一些本体论创建的蛋白质,有一个类的实例与一些对象属性,和对象属性的列表,已显示在以下图片: 对象属性的层次结构如下所示: 现在,当我打开Reasoner(Hermit)时,我得到了同一个人的以下断言对象属性: 当我点击推断对象属性“dependsUp”客户的解释时,我得到: 我的问题是,我如何使用Java生成它?我已经可以通过以下方法获得某些个人的推断对象属性(abreviety在这里不完

  • 本文向大家介绍JavaScript 从对象检索属性,包括了JavaScript 从对象检索属性的使用技巧和注意事项,需要的朋友参考一下 示例 性能特点: 可以从对象检索的属性可能具有以下特征, 可数 不可数 拥有 在使用创建属性时,我们可以设置其特征(“ own”除外)。在对象的直接级别而非原型级别()可用的属性称为自己的属性。Object.defineProperty(ies)__proto__

  • 我在本体论中工作,我有以下swhl规则: 我想知道负对象属性断言何时发生(当verifiedAssociation不为true时)。 我在Protégé上找到了tab属性断言,但我希望(推理者)能够推断出这一点。我不知道如何创建一个规则来实现这一点。 有人能帮帮我吗?

  • 问题内容: 假设此JSON对象: 可以像这样检索“ set2”属性: 有没有一种方法可以通过索引检索“ set2”属性?它是JSON对象的第二个属性。这是行不通的(当然): 因此,假设我要检索JSON对象的第二个属性,但我不知道它的名称-那么我该怎么做? 更新: 是的,我知道对象是无序属性的集合。但是我不认为浏览器会干扰JSON文字/字符串定义的“原始”顺序。 问题答案: JavaScript中的

  • 我创建了这个本体,它包含两个类:血糖和服务。血糖有两个数据属性:范围为xsd:int的hasValu和范围为xsd:string的hasStatut。对象属性triggerService将血糖作为域,将服务作为范围。 我想用以下规则推断数据属性断言: Blood_Sugar(?x)hasValue(?X,?y)/swlb:比(?Y,126)的大小:小于(?y,500)→hasStatut(?X,高

  • JavaScript 中所有变量都可以当作对象使用,除了两个例外 null 和 undefined。 false.toString(); // 'false' [1, 2, 3].toString(); // '1,2,3' function Foo(){} Foo.bar = 1; Foo.bar; // 1 一个常见的误解是数字的字面值(literal)不能当作对象使用。这是因为 Java