1

我有一个程序可以创建多个 rdf 三元组的文本文件。我需要比较三元组并快速完成,最好的方法是什么?我曾想过将三元组放入一个数组并进行比较,但每个文件可能有数十万个三元组,这将花费很长时间。我需要它尽可能接近实时,因为三元组将在文件中不断进行分类。任何帮助都会很棒。这些文件也在 AllegroGraph 存储库中,如果以某种方式比较它们更容易的话。

一个想法:如果我将三元组存储在 excel 中(每行一个三元组)并且每个存储库一张表,

A:我怎样才能在表格中找到重复项。B:会不会很快。和 C:我怎样才能从 Java 自动化呢?

4

2 回答 2

2

您需要建立一个主索引,该索引将存储每个三元组以及它出现在多少个文件中,以及每个文件中三元组的确切文件名和位置。您可以搜索主索引以实时回答查询。

当您更新、删除或创建新的 rdf 文件时,您需要更新主索引。

您需要存储主索引,以便可以有效地对其进行更新和搜索。

简单的选择可能是使用关系数据库(如 MySql)来存储主索引。它可以回答您的查询,例如使用简单的 select 语句查找常见的三元组select * from rdfindex where triplecount > 2.

编辑:您不能使用 HashMap 或类似的数据结构在内存中存储数十万个三元组。这就是为什么我建议使用数据库,它可以存储数据并有效地响应您的查询。您可以查看像 SQLite 这样的嵌入式数据库来存储数据。

阅读这些主题

如何创建 SQLite 数据库并创建表、访问表等,创建一个简单的表来存储三重、三重计数、文件名。

将所有 Excel 文件转换为 CSV 文件。您可以使用opencsv在 Java 中解析文件(查看 opencsv 附带的示例)。

解析 CSV 文件并将数据加载到 SQLite。如果三元组已经在数据库中,则只需更新计数,如果不插入三元组。

于 2012-06-28T15:05:51.860 回答
0

据我所知,AllegroGraph 中有一个删除重复条目的功能,如果所有三元组都来自那里,这可能是一个选项。

于 2012-06-28T14:59:30.783 回答