<分区>
我想使用 Java API 在 java 中拆分 RDF 文件。 (不是通过操作系统命令)。
有没有人知道任何 Java 库可以做到这一点?有经验吗?
我已经用谷歌搜索了很多,但我找不到任何东西。
提前谢谢你。
<分区>
我想使用 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-aa
、prefix-ab
等的文件,具体取决于输入文件中的行数。
如果您的数据包含空白节点,那么在尝试拆分数据时需要小心。
请注意,所有 RDF 序列化都被定义为数据中的空白节点标识符在文档范围内,即它们在它们出现的文件范围内。因此,如果您将包含空白节点的文件拆分为多个文件,您会更改您的含义数据。这适用于您是否通过
拆分例如,假设您在整个原始文件中都有 _:a
,这将被视为单个空白节点。如果将文件拆分为 N
部分,那么文件中最多有 N
个不同的 _:a
,每个部分都被视为一个单独的部分空白节点(由于文档范围界定),因此您的数据的含义已更改,因为单个节点现在可能被解释为 N
个不同的节点。
关于用于拆分 RDF 文件的 Java API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34284935/