C# 什么是适用于.net的好RDF库?

C# 什么是适用于.net的好RDF库?,c#,.net,rdf,semantic-web,owl,C#,.net,Rdf,Semantic Web,Owl,我正在寻找一个可以处理RDF和OWL数据的库 到目前为止,我发现: (据我所知,没有猫头鹰支持) (更多“浏览器”应用程序) 你的建议: (非常有趣,谢谢马克!) 我几个月前刚刚研究过这个问题。其中一个更有趣 我能找到的项目是: 实际上非常酷(在内部使用)。它不仅仅是一个浏览器应用程序,而是一个用C#编写的SDK。如果使用ROWLEX,就不再直接与RDF的Triples交互(尽管可以),而是提供了一种面向对象的外观。有两种主要的使用场景: 商务舱优先:您有您的.NET商务舱。以声明方式向类

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

到目前为止,我发现:

  • (据我所知,没有猫头鹰支持)
  • (更多“浏览器”应用程序)
你的建议:

  • (非常有趣,谢谢马克!)

我几个月前刚刚研究过这个问题。其中一个更有趣 我能找到的项目是: 实际上非常酷(在内部使用)。它不仅仅是一个浏览器应用程序,而是一个用C#编写的SDK。如果使用ROWLEX,就不再直接与RDF的Triples交互(尽管可以),而是提供了一种面向对象的外观。有两种主要的使用场景:

  • 商务舱优先:您有您的.NET商务舱。以声明方式向类添加属性,与XML序列化属性类似。在此之后,ROWLEX可以提取与业务类对应的本体,和/或将业务对象序列化为RDF
  • 本体论优先:您拥有本体论并为您生成.NET类,可用于构建/浏览RDF文档。最棒的是,这些自动生成的类比CodeGenerator的典型结果要好得多。通过提供隐式和显式cast操作符来覆盖整个继承图,它们可以轻松地使用和模拟OWL的多重继承特性
  • 典型的用法是本体论优先的方法。例如,假设您的本体描述了以下多继承场景:

    汽车分类

    汽车发行公司分类数据集

    使用ROWLEX,您将获得Car、Vehicle和CompanySet的.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#视图,每个视图的类型完全不同。当您与这些视图交互时,实际上是在修改RDF文档。

    我生成了一个开源库-OWL支持目前有点有限,尽管对您的使用可能并不理想

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

    BrightstarDB提供三个级别的API

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

  • 所有BrightstarDB文档都是在线的,该软件可在Codeplex下载,无需注册。看起来很年轻但很有前途。

    现在听起来确实很有趣,谢谢!正确的链接是,最好检查一下。它是付费的,但支持RSS、RDF和ATOM等多种格式。易于集成并使用asp.net 4.0编写。尽管brightstarDB很好,但mvvm模式存在许多缺陷。或者至少,我的公司在与BrightStarDB结合的mvvm框架中遇到了许多缺陷,在磁盘空间的使用方面非常、非常、非常低效。。。我做了几次测试后就放弃了。。。试试dotNetRdf