1

我有一些对象限制,例如

hasVendor some Vendor
hasYear some integer[minLength 2, maxLength 4, >=1995, <=2012]
hasPrice only string[pattern "/^[0-9]+(\.[0-9]{2})?$/"]

其中供应商是一个类。我按照此链接的说明:https ://stackoverflow.com/a/7805455/1138148阅读了限制。我需要使用 Jena 从每个这些限制中获取约束值。在第一种情况下,我能够获得'Vendor'约束,但是对于第 2 和第 3 种情况,我得到了一些类似垃圾的值,例如:

7cbf42c2:137784f42b4:-7d1f7cbf42c2:137784f42b4:-7d29相应的。这些价值观是什么?如何检索模式本身以及值 minLength、1995 等。

4

1 回答 1

1

这些是这些限制中中间节点的 bnode 标识符。结果数据中的“东西”比以曼彻斯特语法序列化时显示的要多得多。您需要查看 w3c 上的OWL 到 RDF 映射文档,以了解更多关于它是如何发生的。

我不建议自己进行验证。如果你打算在 OWL 中表示这些东西,你可以使用推理器来告诉你什么时候违反了限制。这在大多数情况下都会起作用,但是在开放世界与封闭世界之间存在一些陷阱,您需要注意这些陷阱才能真正做到这一点。您还可以查看Pellet 提供的诸如 Integrity Constraint Validation 之类的东西,它可以让您在 OWL 中编写约束并将封闭世界语义应用于它们,从而提供更自然(尤其是如果您来自 RDBMS 世界)的工作方式他们。

但是,如果您必须手动处理这些限制,您将需要更深入地研究限制的底层 RDF 结构以获取您正在寻找的位,或者使用实际设计用于使用 OWL 的 API ,例如OWLAPI

于 2012-05-23T19:59:34.787 回答