sparql - Protégé 5 中具有相同数据属性的相邻线部分的区域

标签 sparql owl protege owl-api

我尝试使用 protege 5 处理基于线的数据并绘制曲线的类似“区域”。

所以我有一条曲线,它在我的本体中被解构为等长度的部分(类Portion,实例p_1,...,p_n)。这些部分由其起点和终点 (point_1, ... ,point_n+1) 定义,此外,曲线的半径作为实例的数据属性存储在本体中 (>p_1,...,p_n)。我设法推理出不同部分之间的邻接关系

hasStartPoint(p_2,point_2) o isEndpointOf(point_2,p_1) => isNextOf(p_2, p_1)
hasEndPoint(p_1,point_2) o isStartpointOf(point_2,p_2) => hasNext(p_1, p_2)

我还设法创建定义的类,存储具有相同半径的部分。

所以这是我的问题:我想推理部分集(区域),它们相邻并且共享相同的曲线半径>。然后,应该为 i 个不同半径和非相邻集合、个体(region1, ... ,regioni)创建 i 个类 Set 的实例。

这是我要处理的示例数据:data I want to process

换句话说:如果一个半径在给定线上出现两次,并且该半径的部分不相邻,则它们不应该属于同一区域。此外,在添加不同半径的部分时应自动创建区域。我唯一的想法是,以某种方式在 isNext 三元组上循环遍历这组部分,我猜这需要一些编码,但我在这里找不到类似的东西......

我希望我的问题很清楚,如果有人对此有想法,我很乐意阅读。

提前谢谢

朱利安

最佳答案

从 owl-api 标签,我推断您正在寻找编写使用 OWL API 的代码来实现您的目标(您没有提到您在 Protege 中使用哪个推理器 - 您需要使用在代码中使用相同的推理器来推断诸如 hasNext 关系之类的东西)。

在 OWL API 中,我会执行以下操作:

  • 推断 hasNext 三元组(如果它们尚未存储在本体文件中)
  • 对于每个定义的以相同半径分隔实例的类
    • 检索该类别的所有个体
    • 使用 hasNext 检索所有属性断言
    • 将这些实例聚合到区域中 - 例如,为每个属性断言播种一个区域,然后如果两个区域的实例都属于同一定义的类并且一个区域中的端点是另一个区域中的起点,则合并两个区域。重复这一过程,直到定义的类只剩下一个区域(我相信,根据您的问题描述,该区域不能跨越具有相同半径的实例之外),或者直到不再发生合并。

就 OWLAPI 实现而言,一旦将本体加载到 OWLOntology 对象中,您就可以使用 OWLReasonerFactory 创建一个 OWLReasoner可供您选择的推理机使用的实现(OWLAPI wiki 中存在这样的示例),那么有许多方法可以派上用场: (此处引用 OWLAPI 4,因为这是 Protege 使用的)

  • 获取类的所有个体:OWLOntology::getClassAssertionAxioms(OWLClassExpression) 给出声明个体属于某个类的所有公理,对于检索已定义类的实例很有用。通过 OWLReasoner,您可以使用 OWLReasoner::getInstances(OWLClass)
  • 获取个体的所有对象属性断言:OWLOntology::getObjectPropertyAssertionAxioms(OWLIndividual)。对于获取 hasNext 值很有用。通过推理器,这将是 OWLReasoner::getObjectPropertyValues(OWLNamedIndividual, OWLObjectPropertyExpression)

我相信算法的其余部分可以在没有 OWLAPI 特定代码的情况下实现。

关于sparql - Protégé 5 中具有相同数据属性的相邻线部分的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62594564/

相关文章:

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

rdf - 如何使用 Protege 创建 RDF 容器,如列表、包或序列

tree - 用于折叠树分支的 SPARQL 查询(汇总拓扑)

sparql - 维基数据 SPARQL 查询限定符值

relational-database - 三重存储与关系数据库

java - OWLIM-lite 不推断任何陈述

curl - 使用 cURL 更新 openrdf-sesame 端点中的三元组

sparql - dbpedia 以英语以外的语言获取实体

Sparql 查询具有特定标签的每个个体

java - 使用 OWL-API 和 Hermit 打印披萨本体的父类(super class)