描述需要对两个个体的相同性或离散性进行建模的逻辑表示

  • 本文关键字:表示 建模 描述 两个 description-logic
  • 更新时间 :
  • 英文 :


我正在尝试在描述逻辑中为以下语句建模。

联合教学教员是指任何一名学术人员,并教授至少一门由他人教授的课程

我想到的表述是: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"功能来实现所需功能的非常清晰的示例。

最新更新