OWL:许多属性中只有一个属性存在

时间:2016-04-03 13:41:37

标签: xsd owl

我想在OWL中表达来自XSD的xs:choice元素:

  

XML Schema choice元素只允许声明中包含的一个元素出现在包含元素中。

我想也许我应该首先在OWL中定义一个属性组,然后指定只允许该组中的一个属性存在。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

  

我想也许我应该首先在OWL中定义一个属性组,然后   指定只允许组中的一个属性存在。任何   帮助

OWL中没有“属性组”的概念,但使用子属性和不相交的属性可以获得类似的效果。例如,您可以拥有如下属性层次结构:

  • hasVehicleChoice
    • hasCar
    • hasTruck

然后,您可以声明 hasCar hasTruck 是不相交的。这意味着个人不能拥有两个属性的相同值。这意味着你不能说:

x hasCar vechicle72
x hasTruck vechicle72

但这还不足以说他们不能拥有不同的价值观。你还可以

x hasCar vechicle72
x hasTruck vechicle75

为避免这种情况,您可以将 hasVehicleChoice 设为功能属性(意味着每个人都有0或1个值,但不能更多),或使用带限制的子类公理,如< / p>

Person subClassOf(hasVehicleChoice正好为1)

然后,每个人都会有一个车辆选择,并且由于 hasCar hasTruck 是不相交的,因此该人不能同时拥有这两者。

所有这一切,这不是OWL本体中的常见模式,并且没有一种特别方便的编码方式。如果您不经常需要它,那么直接使用子类公理和属性限制可能会更好。例如,

Person subClassOf((hasCar正好为1)和(hasTruck正好为0))或((hasCar正好为0)和(hasTruck正好为1))