Reputation: 79
I'm a beginner in Protege / OWL and I'm having trouble understanding why max cardinality is working and min cardinality is not. I tried Hermit Pellet and Fact as reasoners. I know about the Open World Assumtion, but this seems not logical to me.
I want to express that there must be at least 2 Persons in a Marriage event.
Class: MarriageEvent
EquivalentTo:
This works:
MarriageEvent and is_event_of max 2 Person
And this not:
MarriageEvent and is_event_of min 2 Person
All individuals are declared as different individuals.
My ontology:
<?xml version="1.0"?>
<Ontology xmlns="http://www.w3.org/2002/07/owl#"
xml:base="http://www.semanticweb.org/anato/ontologies/2017/7/untitled-ontology-184"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
ontologyIRI="http://www.semanticweb.org/anato/ontologies/2017/7/untitled-ontology-184">
<Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/>
<Prefix name="rdf" IRI="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
<Prefix name="xml" IRI="http://www.w3.org/XML/1998/namespace"/>
<Prefix name="xsd" IRI="http://www.w3.org/2001/XMLSchema#"/>
<Prefix name="rdfs" IRI="http://www.w3.org/2000/01/rdf-schema#"/>
<Declaration>
<NamedIndividual IRI="#Peter"/>
</Declaration>
<Declaration>
<NamedIndividual IRI="#Julia"/>
</Declaration>
<Declaration>
<ObjectProperty IRI="#is_event_of"/>
</Declaration>
<Declaration>
<NamedIndividual IRI="#Max"/>
</Declaration>
<Declaration>
<Class IRI="#Person"/>
</Declaration>
<Declaration>
<NamedIndividual IRI="#Event_Marriage"/>
</Declaration>
<Declaration>
<Class IRI="#MarriageEvent"/>
</Declaration>
<EquivalentClasses>
<Class IRI="#MarriageEvent"/>
<ObjectIntersectionOf>
<Class IRI="#MarriageEvent"/>
<ObjectMinCardinality cardinality="2">
<ObjectProperty IRI="#is_event_of"/>
<Class IRI="#Person"/>
</ObjectMinCardinality>
</ObjectIntersectionOf>
</EquivalentClasses>
<EquivalentClasses>
<Class IRI="#MarriageEvent"/>
<ObjectIntersectionOf>
<Class IRI="#MarriageEvent"/>
<ObjectMaxCardinality cardinality="2">
<ObjectProperty IRI="#is_event_of"/>
<Class IRI="#Person"/>
</ObjectMaxCardinality>
</ObjectIntersectionOf>
</EquivalentClasses>
<DisjointClasses>
<Class IRI="#MarriageEvent"/>
<Class IRI="#Person"/>
</DisjointClasses>
<ClassAssertion>
<Class IRI="#MarriageEvent"/>
<NamedIndividual IRI="#Event_Marriage"/>
</ClassAssertion>
<ClassAssertion>
<Class IRI="#Person"/>
<NamedIndividual IRI="#Julia"/>
</ClassAssertion>
<ClassAssertion>
<Class IRI="#Person"/>
<NamedIndividual IRI="#Max"/>
</ClassAssertion>
<ClassAssertion>
<Class IRI="#Person"/>
<NamedIndividual IRI="#Peter"/>
</ClassAssertion>
<DifferentIndividuals>
<NamedIndividual IRI="#Event_Marriage"/>
<NamedIndividual IRI="#Julia"/>
<NamedIndividual IRI="#Max"/>
<NamedIndividual IRI="#Peter"/>
</DifferentIndividuals>
<ObjectPropertyAssertion>
<ObjectProperty IRI="#is_event_of"/>
<NamedIndividual IRI="#Event_Marriage"/>
<NamedIndividual IRI="#Julia"/>
</ObjectPropertyAssertion>
<ObjectPropertyAssertion>
<ObjectProperty IRI="#is_event_of"/>
<NamedIndividual IRI="#Event_Marriage"/>
<NamedIndividual IRI="#Peter"/>
</ObjectPropertyAssertion>
<SubObjectPropertyOf>
<ObjectProperty IRI="#is_event_of"/>
<ObjectProperty abbreviatedIRI="owl:topObjectProperty"/>
</SubObjectPropertyOf>
<IrreflexiveObjectProperty>
<ObjectProperty IRI="#is_event_of"/>
</IrreflexiveObjectProperty>
<ObjectPropertyDomain>
<ObjectProperty IRI="#is_event_of"/>
<Class IRI="#MarriageEvent"/>
</ObjectPropertyDomain>
<ObjectPropertyRange>
<ObjectProperty IRI="#is_event_of"/>
<Class IRI="#Person"/>
</ObjectPropertyRange>
</Ontology>
<!-- Generated by the OWL API (version 4.2.8.20170104-2310) https://github.com/owlcs/owlapi -->
Upvotes: 2
Views: 1788
Reputation: 615
Semantic Web languages such as OWL make the open-world assumption. The absence of a particular statement within the web means, in principle, that the statement has not been made explicitly yet, irrespective of whether it would be true or not, and irrespective of whether we believe that it would be true or not. In essence, from the absence of a statement alone, a deductive reasoner cannot (and must not) infer that the statement is false.
https://en.wikipedia.org/wiki/Open-world_assumption
The absence of a statement about the presence of a 2nd individual does not imply there is not a 2nd individual.
Upvotes: 1
Reputation: 10684
min 2 Person
will not complain about marriages where only one person is known because of the Open World Assumption. Just because the second party to the wedding is not known, does not mean that it's not there.
Upvotes: 3