我正在尝试在描述逻辑中为以下语句建模。
联合教学教员是指任何一名学术人员,并教授至少一门由他人教授的课程
我想到的表述是:CoTeachingFaculty EQUIV Person INTERSECTION AcademicStaff EXISTS teaches.(Course INTERSECTION EXISTS isTaughtBy.TOP)
我有一种感觉,这是一种不正确的表示,因为EXISTS isTaughtBy.TOP
会通过链x--teaches-->c--isTaughtBy-->x
将个人与自己连接起来。因此,即使教师不与其他人共享一门课程,她也将属于CoTeachingFaculty
类。
因此,需要建立其中x和y不同的链CCD_ 5是否有可能在描述逻辑框架中对这种情况进行建模
是的,您的表示不会产生所需的效果,这是非常正确的。
我可以想出两种方法来或多或少地实现你想要的:
(1( 引入一个不可伸缩的coTeachesWith
角色,并将teaches
定义为teaches sqsubseteq coTeachesWith o teaches
。通过这种方式,你可以声明一位讲师与另一位讲师共同授课,并据此推断教授相同的课程。不利的一面是,它会推断出这位讲师教授的所有课程都是由共同授课的讲师教授的——这可能不是你想要的。
(2( 另一种方法是使用SWRL规则。有了它,您可以提供如下规则:
teaches(?x, ?c) ^ teaches(?y, ?c) ^ differentFrom(?x, ?y) ->
CoTeachingFaculty(?x) ^ CoTeachingFaculty(?y)
下面,我为应用这两个选项的本体提供OWL曼彻斯特语法:
前缀::http://www.henrietteharmse.com/turtorial/ontologies/DistinctIndividual#前缀:owl:http://www.w3.org/2002/07/owl#前缀:rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#前缀:rdfs:http://www.w3.org/2000/01/rdf-schema#前缀:xml:http://www.w3.org/XML/1998/namespace前缀:xsd:http://www.w3.org/2001/XMLSchema#
Ontology: <http://www.henrietteharmse.com/turtorial/ontologies/DistinctIndividual>
<http://www.henrietteharmse.com/turtorial/ontologies/DistinctIndividual/0.0.1>
AnnotationProperty: <http://swrl.stanford.edu/ontologies/3.3/swrla.owl#isRuleEnabled>
AnnotationProperty: rdfs:comment
AnnotationProperty: rdfs:label
Datatype: xsd:boolean
Datatype: xsd:string
ObjectProperty: coTeachesWith
Characteristics: Irreflexive
Domain: CoTeachingFaculty
Range: CoTeachingFaculty
ObjectProperty: isTaughtBy
Domain: Course
Range: AcademicStaff
ObjectProperty: teaches
SubPropertyChain: coTeachesWith o teaches
Domain: AcademicStaff
Range: Course
Class: AcademicStaff
SubClassOf: Person,
teaches some Course
Class: CoTaughtCourse
EquivalentTo: isTaughtBy min 2 owl:Thing
SubClassOf: Course
Class: CoTeachingFaculty
SubClassOf: AcademicStaff
Class: Course
DisjointWith: Person
Class: Person
DisjointWith: Course
Class: owl:Thing
Individual: course1
Types: Course
Facts:
isTaughtBy lecturer1,
isTaughtBy lecturer2
DifferentFrom: course2
Individual: course2
Types: Course
DifferentFrom: course1
Individual: course3
Individual: lecturer1
Facts: coTeachesWith lecturer2
DifferentFrom: lecturer2
Individual: lecturer2
Facts:
teaches course1,
teaches course2
DifferentFrom: lecturer1
Individual: lecturer3
Facts: teaches course2
DifferentFrom: lecturer4
Individual: lecturer4
Facts: teaches course2
DifferentFrom: lecturer3
DifferentIndividuals:
course1,course2,course3
Rule:
teaches(?<http://www.henrietteharmse.com/turtorial/ontologies/DistinctIndividual#x>, ?<http://www.henrietteharmse.com/turtorial/ontologies/DistinctIndividual#c>), teaches(?<http://www.henrietteharmse.com/turtorial/ontologies/DistinctIndividual#y>, ?<http://www.henrietteharmse.com/turtorial/ontologies/DistinctIndividual#c>), DifferentFrom (?<http://www.henrietteharmse.com/turtorial/ontologies/DistinctIndividual#x>, ?<http://www.henrietteharmse.com/turtorial/ontologies/DistinctIndividual#y>) -> CoTeachingFaculty(?<http://www.henrietteharmse.com/turtorial/ontologies/DistinctIndividual#x>), CoTeachingFaculty(?<http://www.henrietteharmse.com/turtorial/ontologies/DistinctIndividual#y>)
PS。我没有将teaches
设置为taughtBy
的倒数,因为teaches
不再是一个简单的角色,因此不能在角色链中使用。有关详细信息,请参阅SROIQ的论文。
大多数表达能力强的DL和OWL2语言都包括对角色的"数量限制",例如"至少由两个不同的人教授的课程"。OWL2规范提供了一个使用其"ObjectMinCardinality"功能来实现所需功能的非常清晰的示例。