>定义属性的域和范围(例如,:hasId rdfs:domain:Student; rdfs:range:Identification)并使属性起作用.
>定义属性并在学生班级中创建限制:“hasId恰好是1个标识”.
在语义方面,这些意味着同样的事情吗?如果是这样,在惯例或最佳做法方面是否有首选方案?最后,这同样适用于数据类型属性吗?我可以简单地定义域/范围和/或我应该在类中创建限制以将其与属性相关联吗?
解决方法
∃p.C
表示具有类型C的属性p的值的个体类.类似地,您可以使用该限制
∀p.D
这是个人的类,所有的属性值p(虽然可能没有任何值)都是D类型.还有数字限制,因此您可以指定最小数量的值,最大值的数量,或确切数量的值.
≤n p.C
≥n p.C
=n p.C
您还可以使用公理来声明属性的域和范围.例如,如果你有公理
p has domain C
然后任何与p相关的东西都必须是C.同样,如果你有公理
p has range D
然后,与p相关的任何东西都必须是D.有趣的是,范围公理实际上可以重新构造为涉及通用限制的子类公理.你可以写p有范围D as
⊤ ⊑ ∀p.D
这说& top; (或者猫头鹰:事情,即一切)是这样的,它的每个p值都必须是D.通过使用逆属性,你也可以得到域公理. p有域C相当于
⊤ ⊑ ∀p-1.C
所有这些都是您问题答案的背景:
If I want to represent that “A student must have only one
identification”,I think that I Could:
Define the domain and range for the property (for example,:hasId
rdfs:domain :Student; :hasId rdfs:range :Identification) and make the
property functional.Define the property and create a restriction in the student class:
“hasId exactly 1 Identification”.So,in terms of semantics is this the same? If it is the same,is
there a preferred option in terms of conventions or best practices?
首先,这些不一样.选项1将确保您有任何时间
x hasId y x hasId z
你将能够推断x是学生,y和z是标识,y必须与z相同(因为属性是有效的),但你没有能力推断每个学生有身份证明.声明在OWL中起作用的属性表示每个人最多只有一个属性值,即没有值或一个值.它实际上相当于最大基数限制.说hasId功能与说法相同
⊤ ⊑ ≤1 hasId.⊤
你的第二个选择是更好的选择.如果你想说学生只有一个身份证明,那么你可以明确并断言
Student ⊑ =1 hasId.Identification
但是,如果你已经声明hasId的域和范围分别是Student和Identification,那么这里有一些冗余信息,因为你已经知道hasId断言的对象的每一个东西都是一个Identification,你可以等同地说
Student ⊑ =1 hasId.⊤
我认为这里最好的选择是对你的域和范围更加宽容,对你的子类公理更加明确.毕竟,非学生通常可以具有身份证明(例如,驾驶执照),并且学生实际上可以具有多于一个身份证明(例如,学生证和驾驶执照).鉴于此,您可能会做这样的事情,然后:
类
>人
>学生{& sqsubseteq; = 1 hasId.StudentIdentification}
>鉴定
>学生识别
> hasId {domain:Person,range:Identification}
(即使这有一些问题,因为学生可能是多所学校的学生,但这是一个单独的问题.)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。