1

我在读一本书时遇到了这条线:

“SPARQL FROM 子句提供了另一种定义自定义联合图的方法。FROM 子句用于标识查询的默认图。最典型的用途是标识单个 RDF 图。但是,如果在查询中指定了多个 FROM 子句然后这些图的内容被合并(通常在内存中)以提供一个联合图,它将形成查询的默认图。因此,SPARQL 的这个特性可以提供另一种方法来组装一个有用的与图无关的数据集视图。 "

这里它说“这些图被合并(通常在内存中)以提供联合图”。

我是 Apache Jena 的新手,所以这让我想到这么大的 GRAPH 联合是否发生在内存中?

所以我使用 TDB 来存储我的图,并使用 SPARQL 查询它们,我想查询“在多个 FROM 子句中给出的 2 个特定图的 GRAPH 联合”或“所有命名图的 GRAPH 联合”:

这些 UNION 会在我使用 ARQ 查询 TDB 的 Java 代码中发生在内存中吗?

由于 Graphs 可能很多,这不会导致 OutOfMemory 错误很多次吗?

这似乎是菜鸟问题,请原谅我在耶拿的初学者经验。

4

1 回答 1

1

我当然只能在这里猜测作者的意图,但他们可能只是说可以通过从每个命名图中检索数据然后作为查询处理的一部分产生多个 FROM 子句的处理来产生联合合并那些作为查询结果。请注意,这并不意味着整个命名图都保存在内存中,只是当查询执行并迭代单个结果(在内存中)时,它将来自两个源的结果组合成一个“联合”结果。

无论如何:任何严肃的 SPARQL 数据库(包括 Jena)都不太可能通过首先将整个数据集加载到内存中来处理具有多个 FROM 子句的查询。

于 2020-04-15T13:21:31.557 回答