在类层次结构中查找公共超类和路径长度

2024-01-09

我有两个来自 DBpedia 的课程,A 和 B。如何计算每个类到公共超类 C 的距离(边数),以及如何找到这个公共超类?


您可以这样做,但首先应注意以下几点:

  1. 两个类可能有很多共同的超类,不一定只有一个。这意味着可能不存在唯一的最专业的公共超类。
  2. 如果某个类 C 是 A 和 B 的超类,则 C 的每个超类都是alsoA 和 B 的超类。
  3. D 类可能是 C 的多个路径的超类,如果您尝试计算长度,这可能会导致一些困难。例如。,

    Computer Hardware
      Monitors
        Flatscreen Monitors
          Dell Flatscreen Monitors  *
      Dell Hardware
        Dell Flatscreen Monitors    *
    

    在此层次结构中,戴尔平板显示器是计算机硬件的子类,路径长度为 2 (DFM → DH → CH) 和路径长度为 3 (DFM → FM → M →CH)。这很好,但如果您要计算从 DFM 到 CH 的另一个子类的长度,您应该使用哪一个?

  4. 数据中可能没有任何公共超类。这也是完全合法的情况。现在,in OWL,每个类都是一个子类owl:Thing,但这并不适用于一般的 RDF,并且您甚至可能无法从 DBpedia 获得该结果,因为没有附加 OWL 推理器。

假设您可以找出解决这些问题所需的详细信息,那么这并不太难。在我看来,逐步构建此查询是最简单的。首先,使用这样的查询,您可以获得一个类的超类,以及每个超类的路径长度。这确实假设从子类到超类存在唯一的路径。如果有多个路径,我认为报告的长度将是不同路径的总和。我不确定你如何解决这个问题。

select ?sub ?super (count(?mid) as ?length) where {
  values ?sub { dbpedia-owl:Person } 
  ?sub rdfs:subClassOf* ?mid .
  ?mid rdfs:subClassOf+ ?super .
}
group by ?sub ?super
sub                                super                               length
http://dbpedia.org/ontology/Person http://dbpedia.org/ontology/Agent   1
http://dbpedia.org/ontology/Person http://www.w3.org/2002/07/owl#Thing 2

现在的技巧是对两个子类使用这种方法,然后根据它们共有的超类连接结果,使用如下查询:

select * 
{
  values (?a ?b) { (dbpedia-owl:Person dbpedia-owl:SportsTeam) }

  { select ?a ?super (count(?mid) as ?aLength) { 
      ?a rdfs:subClassOf* ?mid .
      ?mid rdfs:subClassOf+ ?super .
    }
    group by ?a ?super
  }
  { select ?b ?super (count(?mid) as ?bLength) { 
      ?b rdfs:subClassOf* ?mid .
      ?mid rdfs:subClassOf+ ?super .
    }
    group by ?b ?super
  }
}

该查询仍然找到路径长度all常见的超类,而不仅仅是最具体的超类,并且它仍然没有添加来自?a to ?super和长度从?b to ?super以获得完整的路径长度。但这只是一点算术。您可以按长度对这些结果进行排序,然后限制为仅一个结果,以便获得最短的结果。正如我所指出的,可能不存在唯一的最具体的常见子类,但长度最短的结果将是one最具体的常见子类。

select ?a ?b ?super (?aLength + ?bLength as ?length)
{
  values (?a ?b) { (dbpedia-owl:Person dbpedia-owl:SportsTeam) }

  { select ?a ?super (count(?mid) as ?aLength) { 
      ?a rdfs:subClassOf* ?mid .
      ?mid rdfs:subClassOf+ ?super .
    }
    group by ?a ?super
  }
  { select ?b ?super (count(?mid) as ?bLength) { 
      ?b rdfs:subClassOf* ?mid .
      ?mid rdfs:subClassOf+ ?super .
    }
    group by ?b ?super
  }
}
order by ?length
limit 1
a      b          super length
Person SportsTeam Agent 3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在类层次结构中查找公共超类和路径长度 的相关文章

随机推荐

  • 如何将自定义属性添加到 DynamicMethod 生成的方法?

    我正在玩DynamicMethod http msdn microsoft com en us library system reflection emit dynamicmethod aspx and 表达式树 http msdn mic
  • 使用 Thread 用 TStringList 中的项目填充 TComboBox

    我正在使用一个ComboBox显示许多项目的列表 不用担心 项目之间的差异允许通过AutoComplete 该列表是在创建表单 OnCreate事件 但为了使表单在填写时不会冻结 我添加了一个TThread执行填充TStringList然后
  • iOS 上的 PhoneGap 是否硬编码以加载 www/index.html?

    在 Android 上的 PhoneGap 上 您可以修改 App java 类来加载任何 url 我找不到任何地方可以更改 iOS 版本的入口点 测试时我更喜欢有一些具有不同设置的 www 目录 目前我需要重命名目录 这有点麻烦 从 Ph
  • Safari 更改选择高度

    我无法改变select height 所有浏览器都工作正常 但 Safari 不行 哪里可能有问题 我也尝试上课 style select 但不工作 select width 170px height 25px 尝试添加这个 webkit
  • 清除 Visual Studio Code 的workspaceStorage 文件夹有什么影响?

    我在 Windows 10 上使用 Visual Studio Code 进行大量 C 开发 我的开发计算机的硬盘容量有限 并且Low disk space警告很频繁 经过分析与优秀WinDirStat公用事业 APPDATA Code U
  • 如何从 D3 svg 转换为 topojson/geojson?

    D3 允许转换点坐标的 geojson topojson 数组 x y x y x y aka a geojson arc 并且 通过投影 进入 svg 路径
  • ASP.NET 和会话 - 新浏览器实例与新浏览器窗口

    我希望有人能为我澄清这种行为 并解释 ASP NET 如何决定何时处理新会话等内容 A 在 Internet Explorer 中 我加载了相关的 ASP NET 站点 它开始一个新的会话 B 如果我进入菜单 文件 新窗口 它会保留在同一个
  • 如何让 Firefox 打印背景颜色样式?

    我有一些简单的CSS someElement background color black color white 它在浏览器中看起来不错 但是当我在 Firefox 中打印它时 它显示为白色背景上的黑色文本 我想这是某种节省墨水的功能 但
  • 将对象作为innerHTML添加到javascript/jquery中动态创建的div中很困难

    我的项目中有以下代码 HTML
  • 如何编写某些 CSS 形状的代码?

    我正在尝试用 CSS 制作下面的形状 有什么想法如何做到这一点 或者知道可以提供帮助的教程网站 我说的是黄色的标签之类的形状 其次 有谁知道如何用css制作一个形状 即正方形 矩形 底部有两个圆角 顶部有直角 Thanks James 来回
  • RabbitMQ 消费者作为 Windows 服务

    我有一个在 net中实现 发布 订阅模式 的rabbitmq消费者应用程序 它作为控制台应用程序完美运行 但是当我将其部署为Windows服务时 它似乎没有将数据保存到mongodb中 protected override void OnS
  • 当 iframe 中的表单具有焦点时,Chrome 在 Tab 键上滚动

    我有一个 iFrame 它托管一个包含表单的外部站点 如果我按某些表单文本框上的选项卡键 整个浏览器选项卡将向下滚动页面 奇怪的是 这并没有在所有表单字段上执行 这似乎只发生在 Chrome 中 我已经在 Firefox 和 IE11 中尝
  • 计算递推关系 T(n)=T(n-1)+logn

    我们要通过重复替换来解决递推关系 T n T n 1 logn 我开始替换并得到以下结果 T n T n 2 log n log n 1 根据对数乘积法则 log mn logm logn T n T n 2 log n n 1 继续这个
  • Refname“master”不明确

    我已经查看了所有其他不明确的引用名称问题 但似乎没有一个有帮助 为什么我会收到此警告 git checkout master warning refname master is ambiguous git show ref master e
  • Spring Data JpaRepository方法中的Pageable和@Param问题

    我有一个以下存储库 public interface MilestoneRepository extends JpaRepository
  • 关于 .then 和 .catch 的问题

    是否可以触发 then AND catch 这是我的脚本 passport use new BasicStrategy username password callback gt User findOne where username us
  • Angular 2 import 语句通配符语法

    我在一个文件中定义了几个类 如下所示 我的类 ts export class Class1 export class Class2 export class Class3 现在我想像这样使用通配符导入它们 import from my cl
  • Laravel 5:检查事件日期范围是否尚未使用

    我正在为几天的事件创建日历 并且事件不能重叠 但是事件可以在另一个事件开始 结束时开始 结束 在 Laravel 中 在我的事件模型表中 我存储事件的开始和结束日期 在存储新事件数据库之前如何检查它是否有效 不与现有事件重叠 不包括保证金
  • IndexedDB 插入时速度慢

    我在第三代 iPad 上安装了 iOS 8 并在 Safari 中尝试了 IndexedDB 我的示例代码只是将 1000 个对象添加到对象存储中 它可以工作 但与具有类似或较弱硬件的其他设备相比 它非常慢 See this snippet
  • 在类层次结构中查找公共超类和路径长度

    我有两个来自 DBpedia 的课程 A 和 B 如何计算每个类到公共超类 C 的距离 边数 以及如何找到这个公共超类 您可以这样做 但首先应注意以下几点 两个类可能有很多共同的超类 不一定只有一个 这意味着可能不存在唯一的最专业的公共超类