如何对多个 RDF 文件执行 SPARQL 查询?
How to execute SPARQL query for multiple RDF files?
我有 44 .ttl
个文件,总内存为 117 GB。我很好奇实时对所有 .ttl
文件执行 SPARQL 查询的有效方法。我尝试将它们组合起来,但加载模型需要花费大量时间 Apache Jena
以及组合。那么,最有效的方法应该是什么?
将它们一次加载到三重存储中,例如 Jena 的 TDB。您可以根据需要将它做成一个大图或单独的命名图。
这可以节省您执行查询时的所有数据解析时间。
我没用过耶拿;但如果我使用芝麻,这就是我要做的。
- 如果这将成为企业应用程序,请避免依赖 DBpedia 端点。公开可用的 SPARQL 端点有时会因维护而停机。发生这种情况时,您将无法执行查询。
- 您可以将 .ttl 文件加载到您的三元存储中,或者使用带有 SERVICE 子句的 SPARQL 1.1 的 INSERT 或 INSERT DATA 功能直接从 DBpedia 将数据上传到您的三元存储中。
- 如果可能,将所有数据存储在一个图表中。 运行 联合查询的计算成本更高,并且考虑到大型数据集,这可能会成为一个问题。
- 为了区分来源,您可以为每个数据集定义 'context'(图表名称)。芝麻称之为上下文,耶拿可能有类似的东西。
- 查询时,尽量避免计算量大的查询(例如运行查询结果数量大,然后应用过滤器)。通常,请尝试想象您的结果的图形模式是什么样子,并尝试在查询中复制它。
我有 44 .ttl
个文件,总内存为 117 GB。我很好奇实时对所有 .ttl
文件执行 SPARQL 查询的有效方法。我尝试将它们组合起来,但加载模型需要花费大量时间 Apache Jena
以及组合。那么,最有效的方法应该是什么?
将它们一次加载到三重存储中,例如 Jena 的 TDB。您可以根据需要将它做成一个大图或单独的命名图。
这可以节省您执行查询时的所有数据解析时间。
我没用过耶拿;但如果我使用芝麻,这就是我要做的。
- 如果这将成为企业应用程序,请避免依赖 DBpedia 端点。公开可用的 SPARQL 端点有时会因维护而停机。发生这种情况时,您将无法执行查询。
- 您可以将 .ttl 文件加载到您的三元存储中,或者使用带有 SERVICE 子句的 SPARQL 1.1 的 INSERT 或 INSERT DATA 功能直接从 DBpedia 将数据上传到您的三元存储中。
- 如果可能,将所有数据存储在一个图表中。 运行 联合查询的计算成本更高,并且考虑到大型数据集,这可能会成为一个问题。
- 为了区分来源,您可以为每个数据集定义 'context'(图表名称)。芝麻称之为上下文,耶拿可能有类似的东西。
- 查询时,尽量避免计算量大的查询(例如运行查询结果数量大,然后应用过滤器)。通常,请尝试想象您的结果的图形模式是什么样子,并尝试在查询中复制它。