什么是.net的优秀RDF库?

时间:2008-10-27 18:11:26

标签: c# .net rdf semantic-web owl

我正在寻找一个可以处理RDF和OWL数据的库。

到目前为止,我找到了:

  • semweb(对我所知道的一切都没有猫头鹰的支持)
  • rowlex(更多是“浏览器”应用程序)

您的建议:

5 个答案:

答案 0 :(得分:9)

ROWLEX实际上非常酷(在内部使用SemWeb)。它不仅仅是一个浏览器应用程序,而是一个用C#编写的SDK。如果你使用ROWLEX,你不再直接与RDF的tripples交互(尽管你可以),但是给出了面向对象的外观和感觉。有两种主要的使用场景:

  1. 商务舱优先:您拥有.NET业务类。您可以声明性地向类添加属性,就像使用XML序列化属性一样。在此之后,ROWLEX可以提取与您的业务类相对应的本体和/或可以将业务对象序列化为RDF。
  2. 本体优先:您拥有自己的本体,ROWLEX为您生成可用于构建/浏览RDF文档的.NET类。最棒的是这些自动生成的类比代码生成器的典型结果要好得多。通过提供隐式和显式转换运算符来覆盖整个继承图,它们使用起来很舒服并且模仿OWL的多重继承特性。
  3. 典型用法是Ontology第一种方法。例如,假设您的本体描述了以下多重继承方案:

      

    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。

答案 1 :(得分:9)

BrightstarDB是一个原生的.NET NoSQL RDF三重存储,支持SPARQL,一个支持LINQ和OData的.NET实体框架。它对于开发人员和开源项目是免费的,并且用于商业用途的运行时成本很低。

BrightstarDB提供三个级别的API。

  1. SPARQL查询和简单事务API。
  2. 将三元组集合分组为数据对象的通用对象api
  3. Visual Studio集成,它接受接口定义并生成强类型.NET域模型,该模型将其数据作为RDF存储在BrightstarDB实例中。 .NET模型具有LINQ支持,也可以作为OData服务公开。
  4. 所有BrightstarDB文档都在线,该软件可供下载,无http://www.brightstardb.com

    注册

答案 2 :(得分:7)

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

答案 3 :(得分:2)

几个月前我研究过这个问题。其中一个比较有趣 我能找到的项目是: http://www.hookedonlinq.com/linqtordf.ashx

答案 4 :(得分:2)

在Codeplex尝试RDFSharp。看似年轻但很有希望。