jena中org.apache.jena.sparql.core.GraphView的用途是什么

jena中org.apache.jena.sparql.core.GraphView的用途是什么,jena,Jena,正如标题所示,我试图理解jena架构中org.apache.jena.sparql.core.GraphView的目的。我目前正在研究SPI 医生说: 实现一个图形作为DatasetGraph的视图。它将图形操作映射为四元操作。GraphUnionRead提供了一个并集图,它不采用四边形,而是在图上循环 我想知道更多的是在哪种情况下使用它,比如在高层次上,这个类的内在目的是什么 问候, Maat它是数据库意义上的“视图” DatasetGraph是一组图、一个默认图和零个或多个命名图。它具有访

正如标题所示,我试图理解jena架构中
org.apache.jena.sparql.core.GraphView
的目的。我目前正在研究SPI

医生说:

实现一个图形作为DatasetGraph的视图。它将图形操作映射为四元操作。GraphUnionRead提供了一个并集图,它不采用四边形,而是在图上循环

我想知道更多的是在哪种情况下使用它,比如在高层次上,这个类的内在目的是什么

问候,

Maat

它是数据库意义上的“视图”

DatasetGraph
是一组图、一个默认图和零个或多个命名图。它具有访问默认
getDefaultGraph
和任何命名图形
getGraph
的操作。然后,这些图可以与
模型
API一起使用

一些(事实上,大多数)
DatasetGraph
将数据存储为一组三元组和一组四元组
GraphView
显示
GraphAPI
使存储器保持原位。通过
GraphView
进行的更改会更新基础的
DatasetGraph
,将三重添加/删除定向到DatasetGraph的右侧部分,对于命名图视图,会转换为四重添加/删除。
GraphView上的事务
DatasetGraph上的事务

,我想换一种说法。本质上,为什么我们首先需要将datasetGraph视为一个图,这可能会帮助我更好地理解。从DatasetGraphFactory开始,2类DatasetGraph使用GraphView:
DatasetGraphTDB
DatasetGraphInMemory
。它们的共同点是它们的后端,如果我可以说的话,它们都基于三元组和四元组。当请求图形时,数据集会被扭曲到视图中,例如
GraphNonTxnTDB
GraphInMemory
,它们是图形视图,与分别使用
DatasetGraphFactory.graphmakerem
DatasetGraphMapLink的
DatasetGraphMapLink
相对
graphMakerNamedGraphMem
,例如它们的默认图形。如果我们跟随调用,最终调用
Factory.createGraphMem()
其中GraphMem实际上是一个以内存中的tripleStore
GraphTripleStoreMem
为后盾的图形,当DatasetGraph类型是一个以“真实存储结构”(内存或持久性)为后盾的类型时,该结构最终包含数据集的“图形”(尽管以存储语言表示),要访问这些图并使用它们,GraphView使用适当的URI包装整个数据集,让我们知道要使用哪个底层图(例如所有的并集)。这似乎是一个(图)视图,或者更准确地说是一组位于DatasetGraph后端的图视图,也就是说,允许使用数据集后端的东西,当该后端不是“jena图”时,即根据底层结构表示的图。