我正在定义一个整数范围为
:hasIndex rdf:type owl:DatatypeProperty ;
rdfs:range xsd:integer .
我的理解是,它应该只接受整数作为对象,其他任何东西都应该被认为是不一致的并抛出错误。但是,当我在 GraphDb 中创建字符串作为对象的实例时,如下所示,这两个条目都成功加载到数据库中(作为"asd"^^xsd:string(,没有任何错误:
:nodea :hasIndex "asd" .
:nodeb :hasIndex "asd"^^xsd:string .
OWL 规范不要求任何加载不一致的本体或知识库的尝试都会触发错误。事实上,这实际上是愚蠢的,因为检查OWL 2 DL中的一致性(例如(是一个N2EXPTIME完整的问题。因此,所有实用的语义Web数据管理系统都会加载任何语法有效的数据,并且仅根据需要尝试一致性检查。
此外,您正在使用GraphDb。它没有实现OWL的全部内容,它根据OWL方言工作,部分覆盖了基于OWL2 RDF的语义。GraphDB中OWL的合规性在专用网页上进行了描述。该页面说:
GraphDB 不提供对类型化文字的扩展支持 (...(
默认情况下没有不一致规则