【问题标题】:how to define a 'co-participate' property in OWL or RDFS?如何在 OWL 或 RDFS 中定义“共同参与”属性?
【发布时间】:2015-03-24 16:47:59
【问题描述】:

我想知道如何表达这样一个概念:如果 2 个代理是一个事件的参与者,他们应该与一个对称属性“共同参与”相关联。

我觉得我可以做一些限制,但不知道怎么做。

事件本体定义在这里:http://motools.sourceforge.net/event/event.html

【问题讨论】:

  • 您可以添加您想要/可以使用的 OWL 版本和/或 OWL2 配置文件吗?请注意,您可以使用 SWRL 来解决您的问题。
  • @dhke,谢谢。我正在使用w3.org/2002/07/owl#。很高兴知道 SWRL。但是有没有更原始的方法呢?我想这是相当普遍的需求。
  • OWL 和 OWL2 的 XML 命名空间是相同的,因此不会告诉您任何信息。
  • @dhke 您不需要 SWRL 来执行此操作;这可以使用 OWL2 的属性链来完成。
  • @dhke 即使没有可以触发 SWRL 规则的命名个人,它也会起作用。例如,如果我们说 {a} subClassOf (sponsored some (Event and (inverse(participatesIn) value x) and (inverse(participatesIn) value y))),(即 A 赞助了 x 和 y 参与的某个事件),我们仍然可以推断 x 和 y 相互参与,即使事件个人没有被命名。在我看来,这是 SWRL 规则的一大缺点。

标签: rdf semantic-web owl ontology


【解决方案1】:

如果有 2 个代理参与一个事件,他们应该与 一个对称属性“共同参与”。

您可以在 OWL2 中通过使用子属性链公理来做到这一点。由于数据看起来像:

我们可以看到有一条从 X 到 Y 的链,形式为

    参与 •参与-1

所以,你可以断言:

    (participatesIn •participatesIn-1) ⊑共同参与

然后你就可以推断出来了

    X 与 Y 共同参与
Y 与 X 共同参与

在 Protege 中是这样的:

这是一个包含公理的 OWL 本体:

@prefix :      <http://stackoverflow.com/q/29238387/1281433/> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

:       a       owl:Ontology .

:participatesIn  a  owl:ObjectProperty .

:coParticipatesWith  a          owl:ObjectProperty ;
        owl:propertyChainAxiom  ( :participatesIn _:b0 ) .
_:b0    owl:inverseOf  :participatesIn .
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns="http://stackoverflow.com/q/29238387/1281433/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <owl:Ontology rdf:about="http://stackoverflow.com/q/29238387/1281433/"/>
  <owl:ObjectProperty rdf:about="http://stackoverflow.com/q/29238387/1281433/participatesIn"/>
  <owl:ObjectProperty rdf:about="http://stackoverflow.com/q/29238387/1281433/coParticipatesWith">
    <owl:propertyChainAxiom rdf:parseType="Collection">
      <owl:ObjectProperty rdf:about="http://stackoverflow.com/q/29238387/1281433/participatesIn"/>
      <rdf:Description>
        <owl:inverseOf rdf:resource="http://stackoverflow.com/q/29238387/1281433/participatesIn"/>
      </rdf:Description>
    </owl:propertyChainAxiom>
  </owl:ObjectProperty>
</rdf:RDF>

【讨论】:

  • 很高兴知道我可以实现它并且仍然留在 OWL 中。谢谢@Joshua,我很感动也很感激。
猜你喜欢
  • 2016-02-01
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
  • 2014-08-03
  • 1970-01-01
  • 2011-01-15
相关资源
最近更新 更多