什么是适用于.NET的好的RDF库?

14

我正在寻找一款能够处理RDF和OWL数据的库。

目前我找到了以下这些:

  • semweb(据我所知没有owl支持)
  • rowlex(更像是一个“浏览器”应用程序)

你有什么推荐吗:

5个回答

12

ROWLEX非常酷(内部使用SemWeb)。它不仅是一个浏览器应用程序,而且是用C#编写的SDK。如果您使用ROWLEX,则不再直接与RDF三元组交互(尽管您可以这样做),而是给出了面向对象的外观和感觉。有两个主要的使用场景:

  1. 先有业务类: 您有您的.NET业务类。您以声明方式向类添加属性,类似于使用XML序列化属性。之后,ROWLEX可以提取与您的业务类对应的本体,并/或者将您的业务对象序列化为RDF。
  2. 先有本体:您有您的本体并且ROWLEX会为您生成.NET类,您可以使用这些类来构建/浏览RDF文档。伟大的事情是这些自动生成的类比代码生成器的典型结果要好得多。它们易于使用,并通过提供隐式和显式转换操作符来模仿OWL的多重继承功能,从而覆盖整个继承图。

典型用法是先有本体的方法。例如,假设您的本体描述了以下多重继承情况:

Car isSubClassOf Vehicle

Car isSubClassOf CompanyAsset

使用ROWLEX,您将获得关于Car、Vehicle和CompanyAsset的.NET类。以下C#代码将不会出现任何问题:

    RdfDocument rdfDoc = new RdfDocument();
    Car car = new Car("myCarUri", rdfDoc);
    Vehicle vehicle = car; // implicit casting
    CompanyAsset companyAsset = car; // implicit casting 
    vehicle.WheelCount = 4;
    companyAsset.MonetaryValue = 15000;
    Console.WriteLine(rdfDoc.ToN3());

这将会打印:

myCarUri typeOf Car 
myCarUri WheelCount 4 
myCarUri MonetaryValue 15000

“car”业务对象在RdfDocument中表示为三元组。 自动生成的C# / VB类行为类似于视图。 您可以在同一个业务对象上具有几个完全不同类型的C#视图。 当您与这些视图交互时,实际上是在修改RdfDocument。


10

BrightstarDB是一种本地的、基于.NET的NoSQL RDF三元组存储,支持SPARQL查询,并提供带有LINQ和OData支持的.NET实体框架。它对开发人员和开源项目免费,商业使用需要支付少量运行时成本。

BrightstarDB提供三个级别的API:

  1. SPARQL查询和简单事务API。
  2. 通用对象API,将三元组集合分组为数据对象。
  3. Visual Studio集成,接受接口定义并生成强类型的.NET领域模型,将其数据存储为RDF在BrightstarDB实例中。.NET模型具有LINQ支持,并且还可以作为OData服务公开。

BrightstarDB所有文档都在线上提供,软件可在http://www.brightstardb.com下载,无需注册。


最好检查 http://codecanyon.net/item/feed-reader-for-rssatom-and-rdf-using-aspnet/16181586 。它是付费的,但支持多种格式,如RSS、RDF和ATOM。易于集成,使用asp.net 4.0编写。 - sambit.albus
BrightstarDB虽然很好,但在MVVM模式下存在许多错误。或者至少,我的公司在使用MVVM框架与BrightstarDB时遇到了许多错误。 - yan yankelevich
Brightstardb在磁盘空间利用方面非常、非常、非常低效...我在进行了几次测试后就放弃了...建议尝试使用dotNetRdf。 - Ignotus

8
我制作了一个开源库dotNetRDF,但目前OWL支持有些受限,可能不太适合你的用途。

2

现在听起来确实很有趣,谢谢! - kitsune
正确的链接是http://code.google.com/p/linqtordf - Andrew Matthews

2
在 Codeplex 上尝试使用 RDFSharp。看起来很年轻,但很有前途。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接