我有一个具有以下等效性的OWL类(在曼彻斯特表示法中):
A
and not (hasB some
(B
and (hasC some C)
and (hasD some D)
and (hasList some
(OWLList
and (hasContents some
(OWLList
and (hasContents some
(E
and (hasValue some integer[< 200])
and (hasType value "xsd:integer"^^string)))
and (hasNext some EmptyList)))
and (hasNext some EmptyList)))))
我希望对此类强制执行封闭世界推理,以便在not
语句之后不满足条件其余部分的任何个人将成为此类的成员。
为此,我尝试使hasC
,hasD
和hasList
属性起作用,以便OWL知道不可能将这些属性的其他实例附加到此类。
不幸的是,hasB
属性可能不止一次出现,所以不能限制。为了尝试“关闭”该课程的这一部分,我在oneOf
课程中添加了一个B
语句,指定了B
班级可能接受的所有可能的个人。
在我看来,这个功能属性和oneOf
语句的组合应该成功地“关闭”该类。谁能告诉我我做错了什么?
我使用的是http://owl-workshop.man.ac.uk/acceptedLong/submission_12.pdf提出的OWLList类和相关属性。
非常感谢。
答案 0 :(得分:4)
Stardog有一个名为Integrity Constraint Validation的功能,它为OWL添加了一个封闭世界的解释,以便能够将其用作验证语言。您可以在detailed breakdown of the semantics中详细了解如何完成此操作。
我不确定验证部分是否适合您,但如果是这样,您可以立即使用Stardog ICV。如果没有,语义可能会指出你如何能够准确地实现你需要的东西。
答案 1 :(得分:3)
OWL建立在open world assumption之上,你无法真正解决这个问题。在某些情况下,您可以提供一些关于类的其他公理,以减少开放世界允许的可能性。例如,如果你有
{d}⊑⊑hasValue正好为1 {a,b,c}
a≠b
a≠c
b≠c
然后从 hasValue(d,a),你可以推断出这两个:
¬hasValue(d,B)
¬hasValue(d,c)
你要求的声音更像是默认推理,你试图说出
如果使用标准OWL无法证明X,则推断¬X。
这方面的困难在于您可以在OWL中表示正面和负面的陈述,并且当 X X 时,您都会遇到问题标准OWL,因为在这种情况下,你推断两者¬X和¬¬X。
但是,你可以在这里做一些事情。如果您正在生成数据,则可以添加负属性断言以明确声明某些特定关系不成立。这是编码关于域的某个子集的全部知识的一种方法。因此,如果那里有许多已知的B,那么你可以为每一个断言A是否与每个B相关。
另一种选择是使用SPARQL查询数据并检查A是否与符合条件的B相关,如果不符合,则添加一些额外的数据,OWL推理器将绘制您需要的推理。这不是太难,但是如果推断出需要找到你正在寻找的B的任何其他关系,你仍然可能需要在SPARQL查询之前运行一个OWL推理器。