当前位置: 首页 > 面试题库 >

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

桓兴腾
2023-03-14
问题内容

我开始使用Jena Engine,我想我已经了解了什么是语义。但是我很难理解在Jena和ARQ中代表一堆三元组的不同方式:

  • 您在启动时偶然发现的第一件事是Model文档说明了RDF图的Jenas名称。
  • 但是,Graph当我要查询模型的并集时,似乎也有必要的工具,但是它似乎并没有与共享一个公共的接口Model,尽管一个人可以摆脱Graph困境。Model
  • 然后是DataSetARQ,它似乎也是某种三元组的集合。

当然,在API中环顾四周后,我发现了以某种方式从一种转换为另一种的方法。但是我怀疑同一件事有3个以上的不同接口。

因此,问题是:这三个之间的主要设计区别是什么?我什么时候应该使用哪个?尤其是:当我想持有三串的单个束而将它们作为一个大束(联合)进行查询时,我应该使用这些数据结构中的哪一个(以及为什么)?另外,当从一个“转换”到另一个时,我是否“松散”了任何东西(例如,model.getGraph()包含的信息少于model)?


问题答案:

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

DataSetModelStatementResourceLiteral是API接口,并提供应用程序开发者带来很多便利。

DataSetGraphGraphTripleNode是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)

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

最后:

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

您显然是普通用户,因此需要API。您想存储三元组,所以使用Model。现在,您希望将模型作为一个联合查询:您可以:

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

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



 类似资料:
  • 本文向大家介绍数据类型和数据结构之间的区别,包括了数据类型和数据结构之间的区别的使用技巧和注意事项,需要的朋友参考一下 众所周知,编程完全围绕数据展开。数据是实现所有业务逻辑的基础,而数据流则是构成应用程序或项目功能的数据。因此,组织和存储数据以使其最优化使用并使用良好的数据模型进行有效编程就变得非常重要。 通常,数据类型和数据结构似乎都与处理数据的性质和组织相同,但是其中两个描述了数据的类型和性

  • 问题内容: 我是 AngularJs的 新手。谁能说出ng-model和data-ng-model之间的区别? 与ng-model 使用data-ng-model 问题答案: 最佳实践:建议使用破折号分隔格式(例如ng-bind用于ngBind)。 如果要使用HTML验证工具,则可以改用数据前缀版本(例如ngBind的data-ng-bind)。 出于遗留原因,可以接受上面显示的其他表格,但是我们

  • 本文向大家介绍瀑布模型和RAD模型之间的区别,包括了瀑布模型和RAD模型之间的区别的使用技巧和注意事项,需要的朋友参考一下 瀑布模型 瀑布模型是经典的软件开发模型,其中软件开发的每个阶段都以线性方式完成。一旦一个阶段结束,则下一阶段开始,最后标记为软件开发完成。瀑布模型适用于较小的项目,并且只有一个开发周期。以下是这些阶段: RAD模型 RAD模型或快速开发模型也称为软件开发的增量模型。它允许在任

  • 本文向大家介绍V模型和瀑布模型之间的区别,包括了V模型和瀑布模型之间的区别的使用技巧和注意事项,需要的朋友参考一下 瀑布模型和V模型都是软件行业中最广泛实践的开发方法类型。这两种模型都是更好跟踪的实践,并且以系统的方式进行应用程序开发。 根据两个模型之间步骤或阶段的类型,我们可以区分V模型和WaterFall模型,如下所示- 序号 键 V型 瀑布模型 1 定义 V-模型是一种开发模型,其中,整个模

  • 我正在使用Oracle Jena适配器。我的问题是关于SPARQL查询的属性路径。当我试图询问 从ModelOracleSem中,它给了我一个解析器错误。但是,如果我尝试使用Jena in-memory模型,它的工作原理如下: 我还尝试了ARQ的列表函数作为.它不会从ModelOracleSem返回任何结果。但是当我从耶拿内存模型中尝试它时,它又完美地工作了。 有人能帮我解决这个问题吗? 编辑:您

  • 本文向大家介绍螺旋模型和瀑布模型之间的区别,包括了螺旋模型和瀑布模型之间的区别的使用技巧和注意事项,需要的朋友参考一下 螺旋模型和瀑布模型都是软件行业中最广泛实践的开发方法类型。这两种模型都是更好跟踪的实践,并且以系统的方式进行应用程序开发。 根据两个模型之间的步骤或阶段类型,我们可以区分螺旋模型和瀑布模型,如下所示: 序号 键 螺旋模型 瀑布模型 1 定义 螺旋模型是将整个模型分为多个子开发阶段