栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Jena / ARQ:模型,图形和数据集之间的区别

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jena / ARQ:模型,图形和数据集之间的区别

Jena分为面向应用程序开发人员的API和面向系统开发人员的SPI,例如开发存储引擎,推理程序的人员等。

DataSet
Model
Statement
Resource
Literal
是API接口,并提供应用程序开发者带来很多便利。

DataSetGraph
Graph
Triple
Node
是SPI接口。它们相当简单,易于实现(如您所愿,您必须实现这些东西)。

各种各样的API操作都可以解决SPI调用。举一个例子,

Model
接口有四种不同的
contains
方法。在内部,每个结果都会导致一个呼叫:

Graph#contains(Node, Node, Node)

graph.contains(nodeS, nodeP, nodeO); // model.contains(s, p, o) or model.contains(statement)graph.contains(nodeS, nodeP, Node.ANY); // model.contains(s, p)

关于你失去信息,与问题

Model
Graph
你不(据我记得)。更有趣的例子是
Resource
Node
Resources
知道它们属于哪个模型,因此您可以(在api中)编写最终
resource.addProperty(...)
成为哪个模型
Graph#add
Node
没有这样的便利,并且与特定的无关
Graph
。因此
Resource#asNode
是有损的。

最后:

当我想保存单个三元组而又将它们查询为一大束(联合)时,我应该使用哪些数据结构(以及为什么)?

您显然是普通用户,因此需要API。您想存储三元组,所以使用

Model
。现在,您希望将模型作为一个联合查询:您可以:

  • Model#union()
    一切,将所有三元组复制到新模型中。
  • ModelFactory.createUnion()
    一切,这将创建一个动态的联合(即不进行复制)。
  • 将模型作为命名模型存储在TDB或SDB数据集存储中,然后使用该
    unionDefaultGraph
    选项。

这些中的最后一个最适合大量模型和大型模型,但是要涉及更多的设置工作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516485.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号