猫头鹰 DL : Can I have a class and an individual with the same IRI?

标签 owl

我有一个本体,其中类可能与 UUID 相关联,但我想在大部分工作中使用人类可读的名称。我想要类似的东西

Declaration( Class( a:C ) )
Declaration( NamedIndividual( a:C ) )
Declaration( NamedIndividual( urn::uuid:00112233-4455-6677-8899-aabbccddeeff ) )
Declaration( NamedIndividual( a:someObject) )

ClassAssertion( a:C a:someObject )
SameIndividual( a:C urn::uuid:00112233-4455-6677-8899-aabbccddeeff )

目的是有一个专门的处理步骤,将 UUID 转换为类,然后从那里对 OWL DL 本体进行推理。对我来说,使用 SameIndividual 结构是有意义的,因为我认为 UUID 只是该类的另一个名称。

我正在做的显然是元建模,因为我将一个实体同时视为一个类和一个个体,但我不希望实际进行任何利用该元建模的推理。我无法从规范中判断这是否是一个有效的 OWL DL 文档,一个名为 a:C 的类和一个名为 a:C 的个体被完全处理独立地,或者如果我只是被禁止拥有同名的类(class)和个人。

我知道我可以使用 EquivalentClasses,但出于用户体验的原因我想避免使用它。我有一种感觉,从长远来看,我们将在 OWL 完整文档上运行,这个问题变得没有实际意义,但我想能够说我们正在生成有效的 OWL DL 本体,直到我们必须进行跳跃。

最佳答案

是的,在 OWL 2 DL 中允许有同名的类(class)和个人。 document for OWL 2 New Features称之为“punning”。这样做的结果是有两个独立的术语,所以对一个的推理不会影响对另一个的推理。例如,下面是一致的(我用我比较熟悉的Turtle语法写的):

ont:  a  owl:Ontology .
ont:C a  owl:Class, ont:C .
ont:D a  owl:Thing, owl:Class;
      owl:sameAs  ont:C;
      owl:disjointFrom  ont:C . 

关于猫头鹰 DL : Can I have a class and an individual with the same IRI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50520415/

相关文章:

rdf - 在 apache jena SPARQL 中使用 GROUP BY、COUNT 和 SAMPLE

java - 在 Java 中使用 owlapi 3 将曼彻斯特语法中的字符串转换为 OWLAxiom 对象

owl - 猫头鹰:oneof and onto:oneof support in owlim?有什么区别

java - 猫头鹰 API : Good substitution for isSubclassOf method

java - 从 SPARQL 结果集中检索数据

semantics - owl:someValuesFrom 与 owl:minCardinalilty

semantic-web - Protege 菜单中未启用启动推理器

java - 使用 Java 和 xPath 在 OWL/XML 文件中提取节点后命名空间前缀未声明错误

java - JENA:在不同本体类的两个个体之间创建对象属性断言

java - 通过 OWL-API 获取所有 OWLAnonymousClassExpressions