【发布时间】:2018-01-18 12:00:46
【问题描述】:
我是 Protege / OWL 的初学者,我无法理解为什么最大基数有效而最小基数无效。 我尝试过 Hermit Pellet 和 Fact 作为推理者。我知道开放世界假设,但这对我来说似乎不合逻辑。
我想表达的是,一场婚姻活动中必须至少有 2 个人。
类:MarriageEvent
等效于:
这行得通:
MarriageEvent and is_event_of max 2 Person
这不是:
MarriageEvent and is_event_of min 2 Person
所有个体都被声明为不同的个体。
我的本体:
<?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 -->
【问题讨论】:
-
嗯,“这行得通”和“这不行”是什么意思?
-
我的意思是,如果我有 3 个人,推理者会抱怨,但如果我在 is_event_of 房地产中只有 1 个人,则不会抱怨。好像没有应用最小基数限制。
-
假设
MarriageEventis_event_of Max,声明Person等价于{Max, Julia, Peter},并创建两个否定属性断言。 -
好吧,这行得通,但不是很方便。因为我每次都必须为每个婚姻和每个人声明这一点。我计划再增加至少 16 个人……还有其他可能的方法吗?或者,如果不说所有其他人都不属于这种关系,就不能在 OWA 中表达 2 个人必须与 doman 婚姻事件发生在 is_event_of 中?
-
制作递归类等价公理的想法是什么?你说
A EquivalentTo A and (p min 3 C)。这在逻辑上是多余的
标签: owl protege cardinality