【发布时间】:2014-02-19 00:42:31
【问题描述】:
我正在构建一个 C# 程序来读取 Google Freebase data dump 中的 RDF 数据。首先,我编写了一个简单的循环来简单地读取文件并获取三元组的计数。然而,我的程序并没有像文档页面(上面提到的)中所说的那样获得 19 亿个计数,而是只计算了大约 1150 万个然后退出。源代码的相关部分如下(运行大约需要 30 秒)。
我在这里错过了什么?
// Simple reading through the gz file
try
{
using (FileStream fileToDecompress = File.Open(@"C:\Users\Krishna\Downloads\freebase-rdf-2014-02-16-00-00.gz", FileMode.Open))
{
int tupleCount = 0;
string readLine = "";
using (GZipStream decompressionStream = new GZipStream(fileToDecompress, CompressionMode.Decompress))
{
StreamReader sr = new StreamReader(decompressionStream, detectEncodingFromByteOrderMarks: true);
while (true)
{
readLine = sr.ReadLine();
if (readLine != null)
{
tupleCount++;
if (tupleCount % 1000000 == 0)
{ Console.WriteLine(DateTime.Now.ToShortTimeString() + ": " + tupleCount.ToString()); }
}
else
{ break; }
}
Console.WriteLine("Tuples: " + tupleCount.ToString());
}
}
}
catch (Exception ex)
{ Console.WriteLine(ex.Message); }
(我尝试在dotNetRdf 中使用GZippedNTriplesParser 通过在this recommendation 上构建来读取数据,但这似乎在一开始就在RdfParseException 上令人窒息(制表符分隔符?UTF-8??) . 所以,目前,尝试推出我自己的)。
【问题讨论】:
-
向 dotNetRDF 邮件列表或问题跟踪器提交错误报告,使解析器阻塞 Freebase 输出,我们将不胜感激