OWL EntitySearcher方法的渐近运行时间是什么(例如,EntitySearcher.getAnnotations(c,o,factory.getRDFSLabel()))

问题描述 投票:1回答:1

我正在编写一个应用程序,它使用本体/ owlapi和sqlite数据库,其中某些字段的值是来自本体的IRI。

我想知道是否(渐近)更快地检索rdfs:Label和rdfs:来自SQL DB的注释注释(假设它们预先存储在那里)而不是每次都从OWLAPI中检索这些值。

一般来说,EntitySearcher中的主要操作(渐近或其他)的时间/空间密集程度如何?

假设对于此示例,rdfs:label是属于类c的唯一注释属性,因此我们不必显式迭代注释属性列表。

owl ontology asymptotic-complexity protege owl-api
1个回答
2
投票

我这里没有对相关代码进行过完整的分析,但粗略地说,涉及的操作是:

  • 给定本体和实体
  • 得到实体的注释公理
  • 迭代寻找匹配的注释属性
  • 得到字面值

公理按类型索引,因此获得注释公理是O(1)。选择与实体相关的公理也会利用索引,因此再次为O(1)。迭代并寻找匹配属性是O(N),其中N是注释的数量 - 在您的示例中为1,因此再次为O(1)。比较本身在属性IRI的字符串比较中解析。 rdfs:label本身就是一个单身人士,因为它被大量使用,所以这种比较在表现上是微不足道的。提取文字值是一个简单的访问,因此整个过程应该是O(1)。

与数据库相比,O顺序是相同的;但默认的OWLAPI实现是内存中的ConcurrentHashMaps。假设不需要打开新连接,通过网络访问远程数据库仍然可能主导实际时间测量。

© www.soinside.com 2019 - 2024. All rights reserved.