【问题标题】:OWLAPI 4.1x + Restrictions + exampleOWLAPI 4.1x + 限制 + 示例
【发布时间】:2015-11-27 19:51:16
【问题描述】:

您好,我正在关注http://owlapi.sourceforge.net/owled2011_tutorial.pdf 以了解并尝试解析 OWL2/RDF 中的本体。我想知道如何获得类中提供的限制,教程中的代码示例以及 github 代码https://github.com/owlcs/owlapi/blob/version4/contract/src/test/java/uk/ac/manchester/owl/owlapi/tutorialowled2011/TutorialSnippetsTestCase.java 中的代码似乎没有显示一个工作示例。 PDF 似乎有较旧的逻辑,并且 github 中的示例似乎已经注释掉了代码。任何想法我都能够获取并打印一个类的属性 - 我将如何为复杂的属性执行此操作,即如果我在类中有以下类型的限制:

<rdfs:subClassOf>
        <owl:Restriction>
            <owl:onProperty rdf:resource="AAA"/>
            <owl:someValuesFrom>
                <owl:Class>
                    <owl:intersectionOf rdf:parseType="Collection">
                        <owl:Restriction>
                            <owl:onProperty rdf:resource="BBB"/>
                            <owl:someValuesFrom rdf:resource="111"/>
                        </owl:Restriction>
                        <owl:Restriction>
                            <owl:onProperty rdf:resource="CCC"/>
                            <owl:hasValue rdf:datatype="xsd;string">SOME VALUE</owl:hasValue>
                        </owl:Restriction>
                    </owl:intersectionOf>
                </owl:Class>
            </owl:someValuesFrom>
        </owl:Restriction>
    </rdfs:subClassOf>

我将如何以编程方式解析它。我正在尝试查看应该查看 API 的哪些方法/类,因为我不熟悉 OWL 和链接数据中的行话。

【问题讨论】:

  • 你的片段应该以一个类开头,比如&lt;owl:Class rdf:resource="startPoint"&gt;&lt;rdfs:subClassOf&gt; ...

标签: java semantic-web owl linked-data


【解决方案1】:

从一个类的 IRI 开始,例如“http://example.com/startpoint”,你会:

  • 获取OWLClass 实例:OWLClass c = owldatafactory.getOWLClass(IRI.create("http://example.com/startpoint"));
  • 从声明的本体中检索该类的所有超类:Collection&lt;OWLSubClassOfAxiom&gt; axioms = ontology.getSubClassAxiomsForSubClass(c);
  • 对于每个公理,访问超类:for(OWLSubClassOfAxiom ax:axioms){ OWLClassExpression levelOne = ax.getSuperClass();

在您的示例中,这就是 someValuesFromAAA 的限制。

为了探索任何深度级别的限制,您需要编写一个OWLClassExpressionVisitor(例如,通过扩展OWLClassExpressionVisitorAdapter 类)。在您链接的示例中,一个这样的类是RestrictionVisitor extends OWLClassExpressionVisitorAdapter

如果我正确理解了您的描述,那么您就是在“类的属性”之后 - 通常的含义是输入类是域的一部分的属性。在此示例中,唯一的此类属性是 AAA,因此您无需更深入地访问即可找到它们。这个定义的复杂之处在于AAA 的范围,它由另外两个类表达式组成。

【讨论】:

  • 谢谢伊格纳齐奥。这有助于我更好地理解。当我的意思是我关注类的属性时,我的意思是我对属性名称和它的值都感兴趣。例如,如果我要解释上面的示例,我是否正确地说实例'startPoint'与 AAA 的实例相关,其中 AAA 具有属性 BBB,实例为 111 作为目标,第二个属性 CCC 的值为'一些价值'
  • 不,AAA是这里的属性; BBB 和 CCC 与 AAA 的填充符有关,即语句 X AAA Y 的对象 (Y)
  • 明白。所以我现在也理解了示例中的代码片段,关于 OWLSubClassOfAxiom 是什么 - 它基本上是我们从中获取的相应类的 标记。因此,我们拥有这些集合,并且在每种情况下都获得了 OWLClassExpressions。但是我们现在如何从这些中获取属性域/范围或任何内容。从记录的示例中,它显示了一个被注释掉的restrictionVisitor.getRestrictedProperties() 调用,并且在4.x 版本的OWLClassExpressionVisitorAdapter 中不存在这样的方法。
  • 对于 AAA,属性范围是您在那里找到的所有 owl 类表达式的交集。对于下一级属性,即对于 BBB 和 CCC,您需要以与访问起点相同的方式访问类表达式。关于受限属性的方法只不过是在访问者已应用到的限制上找到的属性列表 - 它可以通过多次应用访问者并将restriction.getProperty() 的值添加到集合来复制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-26
  • 2019-06-06
  • 2012-08-28
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多