【问题标题】:SemWeb Library RDF parser for c#C# 的 SemWeb 库 RDF 解析器
【发布时间】:2010-06-21 09:54:49
【问题描述】:

我正在尝试为 c# 使用一个名为 SemWebRDF 库 但我无法读取我的 rdf 文件,最大 570 MB,因为我似乎无法实现他们提供的任何示例,而且文档有点差。

有人使用这个库或其他库来解析 RDF 文件吗?

我迫切需要它,因为我正在做一份需要 RDF 解析器的大学工作。

谢谢

【问题讨论】:

  • 这有点模糊。请向我们展示您到目前为止所做的尝试以及您遇到的编译器/运行时错误。
  • 一旦你解析了RDF,知道你想用它做什么也很有用。

标签: c# rdf


【解决方案1】:

使用 SemWeb 读取文件非常简单,只需使用以下内容即可:

MemoryStore mem = new MemoryStore();
mem.Import(new N3Reader("file.ttl"));

//Iterate over and print statements
foreach (Statement stmt in mem)
{
    Console.WriteLine(stmt.ToString());
}

如果您的文件是 RDF/XML,那么您将改用 RdfXmlReader 类。

您也可以使用我的库 dotNetRDF 来读取您的文件:

Graph g = new Graph();
FileLoader.Load(g, "file.ttl");

//Iterate over and print Triples
foreach (Triple t in g.Triples)
{
    Console.WriteLine(t.ToString());
}

唯一的问题是,如果您的文件是 RDF/XML,那么我的库中的解析器目前不会处理该大小的文件。如果您的文件是 NTriples/Turtle/N3,那么您应该没有问题,但准备等待几分钟(例如,柏林 SPARQL 基准测试的 ~90MB 100 万三元组数据集需要 ~4 分钟来解析,但有点依赖你的机器)

这实际上可能是一个普遍的问题,我不确定 SemWeb 中的 RDF/XML 解析器是如何实现的,因此对于非常大的文件,它可能与我自己的问题类似。

注意

这是否是读取文件的最佳方法可能取决于您打算如何处理解析后的数据。在 SemWeb 和 dotNetRDF 中可能有更有效的方式来读入/处理您的数据,具体取决于您打算如何处理这些数据。

【讨论】:

  • 您好,感谢您的帮助,我将尝试使用 dotNetRDF,但使用 SemWeb 我不明白什么是语句,并且使用 memorystore 不会尝试将我的所有文件加载到内存中?
  • Statement 只是 Triple 的另一个名称,它是 SemWeb 用于 Triples 的类名。 MemoryStore 是数据的内存存储,相当于 dotNetRDF 中的 Graph 类,无论哪种方式,您都将所有数据加载到内存中
  • 嗨,我正在尝试了解 dotNetRDF 的使用,但我有疑问。如果我不想解析“文本”文件但想将其放入关系数据库中,我该怎么办?我在您的网站上看到您使用 Virtuoso 服务器,但我从未使用过它,我可以使用 sql server 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
相关资源
最近更新 更多