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