问题
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