当前位置: 首页 > 知识库问答 >
问题:

猫头鹰DL:我可以有一个班级和一个个人有相同的IRI吗?

甘明朗
2023-03-14

我有一个本体,其中类可以与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本体进行推理。对我来说,使用sameIndiversity构造是有意义的,因为我认为该UUID只是类的另一个名称。

我所做的显然是元建模,因为我把一个实体看作是一个类和一个个体,但我并不期望实际进行任何推理来利用元建模。我很难从规范中分辨出这是一个有效的OWL DL文档,一个名为a:C的类和一个名为a:C的个体是完全独立处理的,或者我只是被禁止拥有一个同名的类和一个个体。

我知道我可以使用equivalentclasses,但出于用户体验的原因,我希望避免使用它。我有一种感觉,从长远来看,我们将对OWL完整文档进行操作,这样这个问题就变得没有意义了,但我希望能够说,在我们必须跳转之前,我们正在生成有效的OWL DL本体。

共有1个答案

广亮
2023-03-14

是的,在OWL 2 DL中允许有一个类和一个同名的个体。OWL2新特性的文档称之为“双关语”。这样做的结果是,存在两个独立的术语,因此对其中一个的推理不会影响对另一个的推理。例如,以下内容是一致的(我用我更熟悉的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 . 
 类似资料:
  • 下面是fiddle http://jsfiddle.net/sgtrx/中的代码(应该在早些时候完成,对不起) 好的,我的导航栏在Div包装器内,在标题下,在内容区域(主体)的顶部。 我是个新手,所以请原谅我可能犯的任何错误。 当我添加边框来分隔每个块(按钮或文本)时,它很好地分隔了按钮,然而,它在导航栏的末尾(右侧)留下了一个小空格。 包装器Div是1000px,我有5个按钮,每个200px,因

  • 假设我在一个ArrayList中有一个属性为name(String)和age(int)的类Pet,我想在不使用Collections框架的情况下对它们进行排序,所以我使用一个TreeSet来解析ArrayList。我的问题是,有没有方法在TreeSet的构造函数中初始化一个新的比较器(与ArrayList一起),或者我必须在Pet类中实现一个新的比较器/比较器? 我已经通过在Pet类中实现一个可比

  • 问题内容: 原始问题的提要: 使用具有AOP代理的标准Spring事务,不可能从同一类中的非@Transactional标记方法中调用@Transactional标记的方法,并且不能在事务内进行(特别是由于上述原因)代理)。据说在AspectJ模式下使用Spring Transactions可以做到这一点,但是如何完成呢? 编辑: 使用 Load-Time Weaving 在AspectJ模式下进

  • 我正在从事一个基于Laravel5.7的项目,在这个项目中,Elount被用作ORM。 我需要在我的数据库上执行一个原始SQL语句。但是,我的查询在多个地方使用相同的参数。 这里有一个查询示例“这不是我真正的查询,更多的是为了解释问题。我的实际查询非常复杂,多次重用相同的参数” 我期待着下面的工作 但这给了我以下错误 SQLSTATE[HY093]:参数编号无效 如何在同一查询中使用Eloquen

  • 我从一位同事的代码中读到了这几行: 我认为这将为Bean classA和classB创建2个数据源。为了注入数据源,我们需要如下内容: 但是Spring只创建了一个数据源,this.mysqlDataSource()每次都返回相同的数据源。它是怎么发生的?如果我确实需要另一个数据源,我需要立即创建它?