Java API 用于拆分 RDF 文件
Java API for splitting RDF files
我想使用 Java API 来拆分 java 中的 RDF 文件。 (不是通过 OS 命令)。
有谁知道 Java 库可以做到这一点吗?有经验吗?
我已经google 搜索了很多,但我找不到任何东西。
提前谢谢你。
通过解析拆分
如果您乐于使用 Apache Jena then you can make use of the StreamRDF abstraction. You can implement a custom StreamRDF
instance in combination with using the built in StreamRDFWriter.getWriterStream()
将解析的三元组拆分为单独的输出文件。
如果您更喜欢使用 Sesame you can use their RIO 抽象来实现非常相似的东西。
拆分而不解析
如果使用像 NTriples 或 NQuads 这样的基于行的 RDF 序列化,只有 可以在不解析的情况下进行拆分,否则您将不得不以这种方式解析和拆分文件,因为没有安全性拆分其他序列化的可靠方法。
如果你有 NTriples 或 NQuads,那么你可以天真地使用 *nix split
命令进行拆分,如下所示:
> split -l 50000 input.nq prefix-
其中 -l
指定要放入每个文件的行数,input.nq
是您的输入文件,prefix-
是输出文件名的前缀。这将在当前目录中生成一堆名为 prefix-aa
、prefix-ab
等的文件,具体取决于输入文件中的行数。
拆分和空白节点
如果您的数据包含空白节点,那么您在尝试拆分数据时需要小心。
请注意,所有 RDF 序列化都被定义为数据中的空白节点标识符是文档范围内的,即它们的范围是它们出现在其中的文件。因此,如果将包含空白节点的文件拆分为多个文件,则会改变含义你的数据。这适用于您是否通过
拆分
例如,假设您在整个原始文件中有 _:a
,这将被视为一个空白节点。如果您将文件拆分为 N
个部分,您现在在文件中最多有 N
个不同的 _:a
个部分,每个部分都被视为一个单独的空白节点(由于文档范围界定),因此您的数据的含义已更改,因为单个节点现在可能被解释为 N
个不同的节点。
我想使用 Java API 来拆分 java 中的 RDF 文件。 (不是通过 OS 命令)。
有谁知道 Java 库可以做到这一点吗?有经验吗?
我已经google 搜索了很多,但我找不到任何东西。
提前谢谢你。
通过解析拆分
如果您乐于使用 Apache Jena then you can make use of the StreamRDF abstraction. You can implement a custom StreamRDF
instance in combination with using the built in StreamRDFWriter.getWriterStream()
将解析的三元组拆分为单独的输出文件。
如果您更喜欢使用 Sesame you can use their RIO 抽象来实现非常相似的东西。
拆分而不解析
如果使用像 NTriples 或 NQuads 这样的基于行的 RDF 序列化,只有 可以在不解析的情况下进行拆分,否则您将不得不以这种方式解析和拆分文件,因为没有安全性拆分其他序列化的可靠方法。
如果你有 NTriples 或 NQuads,那么你可以天真地使用 *nix split
命令进行拆分,如下所示:
> split -l 50000 input.nq prefix-
其中 -l
指定要放入每个文件的行数,input.nq
是您的输入文件,prefix-
是输出文件名的前缀。这将在当前目录中生成一堆名为 prefix-aa
、prefix-ab
等的文件,具体取决于输入文件中的行数。
拆分和空白节点
如果您的数据包含空白节点,那么您在尝试拆分数据时需要小心。
请注意,所有 RDF 序列化都被定义为数据中的空白节点标识符是文档范围内的,即它们的范围是它们出现在其中的文件。因此,如果将包含空白节点的文件拆分为多个文件,则会改变含义你的数据。这适用于您是否通过
拆分例如,假设您在整个原始文件中有 _:a
,这将被视为一个空白节点。如果您将文件拆分为 N
个部分,您现在在文件中最多有 N
个不同的 _:a
个部分,每个部分都被视为一个单独的空白节点(由于文档范围界定),因此您的数据的含义已更改,因为单个节点现在可能被解释为 N
个不同的节点。