使一个财产的每个价值低于另一个财产的每个价值?

时间:2014-05-15 06:46:09

标签: semantic-web owl ontology protege description-logic

我刚开始使用Protégé4.3学习OWL,现在我遇到了一个难题。我已经定义了一个带有一些限制超类的A类,它确保每个A都具有P1和P2的属性值,并且每个P1和P2都有一个双倍的值:

  

A⊑⊑hasProperty。(P1⊓   ∃hasValue.xsd:双)
  A⊑⊑hasProperty。(P2   ⊓⊓hasValue.xsd:double)

如何断言A的P1值都小于所有P2值?

1 个答案:

答案 0 :(得分:1)

你不能用OWL Axioms

来做这件事

这是一个有趣的问题,但不幸的是,你可以使用纯OWL公理来解决这个问题。一般来说,通过使用限制超类很容易说出类的个体所具有的价值,但很难或不可能对属性值之间的关系说些什么。例如,您不能说某个人的姓氏属性必须与姓氏属性的值相同。

清理一些术语非常重要,首先,尤其是限制这一术语:

  

我想定义一个限制,对于A的所有个体,p1的值是   总是小于p2的值

限制。例如,限制likes some Person是个人的,每个人都喜欢某个人。我们经常使用限制作为其他类的超类来确保某些约束成立。例如,我们说的时候

  

Person subClassOf hasName some xsd:string

我们说每个人都有属性hasName的值xsd:string。

您可以使用SWRL

执行此操作

你可以断言,如果某个东西是A的成员并且有p1和p2值,那么p1必须小于p2。这看起来像是:

  

A(?a)∧
  hasProperty(?a,?p1)∧P1(?p1)∧withValue(?p1,?v1)∧
  hasProperty(?a,?p2)∧P2(?p2)∧withValue(?p2,?v2)
  →
  swrlb:每种不超过

(V1,V2?)

这将确保A上的每个P1值都小于A上的每个P2值。如果您声明某些违反此值的数据,则会出现不一致。