how to define a 'co-participate' property in OWL or RDFS?

两盒软妹~` 提交于 2019-12-13 04:52:19

问题


I'd like to know how to express the concept that: if 2 agents are participants in one event, they should be linked with a symmetric property 'co-participate'.

I feel I could make some restrictions but don't know how.

The event ontology is defined here: http://motools.sourceforge.net/event/event.html


回答1:


if 2 agents are participants in one event, they should be linked with a symmetric property 'co-participate'.

You can do this in OWL2 by using a sub-property chain axiom. Since the data looks like:

we can see that there is a chain from X to Y with the form

    participatesIn • participatesIn-1

So, you can assert that:

    (participatesIn • participatesIn-1) ⊑ coParticipatesWith

and then you'll be able to infer that

    X coParticipatesWith Y
    Y coParticipatesWith X

In Protege it looks like this:

Here's an OWL ontology that contains the axiom:

@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>


来源:https://stackoverflow.com/questions/29238387/how-to-define-a-co-participate-property-in-owl-or-rdfs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!