我有一个程序可以创建rdf三元组的多个文本文件。我需要比较三元组并快速完成,最好的方法是什么?我想把三元组放到一个数组中并比较它们,但每个文件可能有数十万个三元组,这将需要很长时间。我需要它尽可能接近实时,因为三元组将不断在文件中流派。任何帮助都会很棒。这些文件也在AllegroGraph存储库中,如果
以某种方式比较它们更容易的话。一个想法:如果我将三元组存储在 excel 中(每行一个三元组)并且每个存储库一个工作表,
答:我怎么能在床单上找到重复项。乙:会不会快。C:我怎样才能从Java中自动化它?
您需要构建一个主索引,该索引将存储每个三元组及其显示的文件数以及每个文件中三元组的确切文件名和位置。您可以搜索主索引以实时回答查询。
更新、删除或创建新的 rdf 文件时,需要更新主索引。
您需要存储主索引,以便可以有效地更新和搜索它。
简单的选择可能是使用关系数据库(如MySql)来存储主索引。它可以回答您的查询,例如使用简单的选择语句查找常见的三元组select * from rdfindex where triplecount > 2.
编辑:您不能使用HashMap或类似的数据结构在内存中存储数十万个三元组。这就是为什么我建议使用数据库,它可以存储数据并有效地响应您的查询。您可以查看像SQLite这样的嵌入式数据库来存储数据。
阅读这些主题
如何创建SQLite数据库并创建表,访问表等,创建一个简单的表来存储三倍,三倍计数,文件名。
将所有 Excel 文件转换为 CSV 文件。您可以使用 opencsv 在 Java 中解析文件(查看 opencsv 附带的示例)。
解析 CSV 文件并将数据加载到 SQLite 中。如果三元组已经在数据库中,则只需更新计数,如果不插入三元组。
据我所知,有一个功能可以删除 AllegroGraph 中的重复条目,如果所有三元组都来自那里,这可能是一个选项。