用于拆分 RDF 文件的 Java API

标签 java api split bigdata rdf

<分区>

我想使用 Java API 在 java 中拆分 RDF 文件。 (不是通过操作系统命令)。

有没有人知道任何 Java 库可以做到这一点?有经验吗?

我已经用谷歌搜索了很多,但我找不到任何东西。

提前谢谢你。

最佳答案

通过解析拆分

如果您乐于使用Apache Jena那么你可以使用 StreamRDF抽象。您可以结合使用内置的 StreamRDFWriter.getWriterStream() 来实现自定义 StreamRDF 实例将解析的三元组拆分为单独的输出文件。

如果您更喜欢使用 Sesame你可以使用他们的 RIO抽象来实现非常相似的东西。

不解析的拆分

如果使用基于行的 RDF 序列化(如 NTriples 或 NQuads),则可以不进行解析的拆分,否则您将不得不以这种方式解析和拆分文件,因为没有安全可靠的方法来拆分其他文件连载。

如果您有 NTriples 或 NQuads,那么您可以像这样使用 *nix split 命令天真地拆分:

> split -l 50000 input.nq prefix-

其中 -l 指定要放入每个文件的行数,input.nq 是您的输入文件,prefix- 是输出文件名的前缀。这将在当前目录中生成一堆名为 prefix-aaprefix-ab 等的文件,具体取决于输入文件中的行数。

split 和空白节点

如果您的数据包含空白节点,那么在尝试拆分数据时需要小心。

请注意,所有 RDF 序列化都被定义为数据中的空白节点标识符在文档范围内,即它们在它们出现的文件范围内。因此,如果您将包含空白节点的文件拆分为多个文件,您会更改您的含义数据。这适用于您是否通过

拆分

例如,假设您在整个原始文件中都有 _:a,这将被视为单个空白节点。如果将文件拆分为 N 部分,那么文件中最多有 N 个不同的 _:a,每个部分都被视为一个单独的部分空白节点(由于文档范围界定),因此您的数据的含义已更改,因为单个节点现在可能被解释为 N 个不同的节点。

关于用于拆分 RDF 文件的 Java API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34284935/

相关文章:

java - AsyncCallback 的 GWT 使用;代码管理

java - 将两个数组合并为一个按升序排列的数组无法正常工作。 java

ruby - 通过 split() 将空字符串转换为 nil

java界面设计: how to handle stateful processing

java - 设置队列 key

javascript - 如何在 node.js 中使用回调作为参数发出 api 请求?

json - 如何计算主节点的投资返回率

api - flutter : unhandled exception: invalid argument

arrays - 算法将数组拆分为子数组,其中所有子数组之间的最大总和尽可能低

c# - 拆分文件名