使用Jena读取限制约束

时间:2012-05-23 06:25:54

标签: java jena owl protege4

我有一些像

这样的对象限制
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'作为约束,但是对于第二种和第三种情况,我得到了一些像垃圾一样的垃圾:

7cbf42c2:137784f42b4:-7d1f7cbf42c2:137784f42b4:-7d29 resp。这些价值观是什么?如何检索模式,以及minLength,1995等值。

1 个答案:

答案 0 :(得分:1)

这些是这些限制中的中间节点的bnode标识符。结果数据中的“东西”比在曼彻斯特语法中序列化时显示的要多得多。您需要查看w3c上的OWL to RDF mappings document,了解更多相关信息。

我不建议您自己进行验证。如果您要在OWL中表示这些内容,您可以使用推理器告诉您何时违反限制。这在很大程度上是有效的,但是在开放世界与封闭世界之间存在一些陷阱,你需要注意才能真正做到这一点。您还可以查看Integrity Constraint Validation as offered by Pellet之类的内容,它允许您在OWL中编写约束并将封闭世界语义应用于它们,从而提供更自然的(特别是如果您来自RDBMS世界)工作方式和他们一起。

但是,如果您必须手动处理这些限制,那么您将需要进一步深入研究限制的基础RDF结构以获取您正在寻找的位,或使用实际设计的API使用OWL,例如OWLAPI