我想在OWL中表达来自XSD的xs:choice
元素:
XML Schema choice元素只允许声明中包含的一个元素出现在包含元素中。
我想也许我应该首先在OWL中定义一个属性组,然后指定只允许该组中的一个属性存在。有什么帮助吗?
答案 0 :(得分:0)
我想也许我应该首先在OWL中定义一个属性组,然后 指定只允许组中的一个属性存在。任何 帮助
OWL中没有“属性组”的概念,但使用子属性和不相交的属性可以获得类似的效果。例如,您可以拥有如下属性层次结构:
然后,您可以声明 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))