gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:35:50 24 4
gpt4 key购买 nike

我尝试使用 protege 5 处理基于线的数据并绘制曲线的类似“区域”。
所以我有一条曲线,它在我的本体中被解构为长度相等的部分(类部分,实例 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)
我还设法创建了定义的类,存储具有相同半径的部分。
所以这是我的问题:我想对相邻且共享相同曲线半径的部分(区域)集进行推理。然后,应该创建类 Set 的 i 个实例,对于 i 个不同半径和非相邻集,个体(region1,...,regioni)。
这是我要处理的示例数据: data I want to process
换句话说:如果一个半径在给定的线上出现两次,并且这个半径的部分不相邻,它们不应该是同一区域的一部分。此外,在添加不同半径的部分时应自动创建区域。我唯一的想法是,以某种方式在 isNext 三元组上循环遍历一组部分,我猜这需要一些编码,但我在这里找不到任何类似的东西......
我希望,我的问题很清楚,如果有人对此有想法,我很高兴阅读。
先感谢您
朱利安

最佳答案

从 owl-api 标签,我推断您正在寻找使用 OWL API 来实现您的目标的代码(您没有提到您在 Protege 中使用的推理器 - 您需要在您的代码来获取诸如 hasNext 关系推断之类的东西)。
在 OWL API 中,我会执行以下操作:

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


  • 在 OWLAPI 实现方面,一旦您将本体加载到 OWLOntology 中。对象,您将创建一个 OWLReasonerOWLReasonerFactory可用于您选择的推理器的实现(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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com