Что такое хорошая библиотека RDF для .net?

Я ищу библиотеку, которая может обрабатывать данные RDF и OWL.

До сих пор я нашел:

  • semweb (поддержка сова для всех, что я знаю)
  • rowlex (больше из приложения "браузер" )

Ваши рекомендации:

  • LinqToRdf (очень интересно, спасибо!)

Ответ 1

ROWLEX на самом деле очень круто (использует SemWeb внутренне). Это не просто приложение для браузера, а SDK, написанное на С#. Если вы используете ROWLEX, вы больше не взаимодействуете с тройками RDF (хотя можете), но при этом получаете объектно-ориентированный вид и ощущения. Существуют два основных сценария использования:

  • Бизнес-класс: У вас есть бизнес-классы .NET. Вы декларативно добавляете атрибуты к своим классам так же, как и с атрибутами сериализации XML. После этого ROWLEX может извлечь онтологию, соответствующую вашим бизнес-классам, и/или может сериализовать ваши бизнес-объекты в RDF.
  • Сначала онтология: У вас есть онтология и ROWLEX генерирует классы .NET для вас, которые вы можете использовать для создания/просмотра документов RDF. Самое замечательное в том, что эти автогенерируемые классы намного лучше типичных результатов когенераторов. Они удобны в использовании и имитируют функцию множественного наследования OWL, предоставляя неявные и явные операторы приведения для покрытия всего графика наследования.

Типичное использование - это первый подход Онтологии. Например, скажем, что ваша онтология описывает следующий сценарий множественного наследования:

Автомобиль isSubClassOf Vehicle

Автомобиль isSubClassOf CompanyAsset

Используя ROWLEX, вы получите классы .NET для Car, Vehicle и CompanyAsset. Следующий код С# будет скомпилирован без проблем:

    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

Бизнес-объект "автомобиль" представлен внутри RdfDocument как тройки. Автогенерированные классы С#/VB ведут себя как виды. Вы можете иметь несколько видов С# - каждый из совершенно другого типа - на одном бизнес-объекте. Когда вы взаимодействуете с этими представлениями, вы фактически изменяете RdfDocument.

Ответ 2

BrightstarDB - это родной, трёхмерный магазин .NET NoSQL RDF с поддержкой SPARQL, инфраструктурой .NET.NET с поддержкой LINQ и OData. Это бесплатно для разработчиков и проектов с открытым исходным кодом и имеет небольшую стоимость исполнения для коммерческого использования.

BrightstarDB предоставляет три уровня API.

  • Запрос SPARQL и простой API транзакций.
  • Общий объект api, который группирует коллекции троек в объекты данных
  • Интеграция Visual Studio, которая принимает определения интерфейсов и генерирует сильно типизированную модель домена .NET, которая хранит свои данные как RDF в экземпляре BrightstarDB. Модель .NET поддерживает LINQ, а также может быть показана как служба OData.

Вся документация BrightstarDB находится в режиме онлайн, и программное обеспечение доступно для загрузки без регистрации в http://www.brightstardb.com

Ответ 3

Я создаю библиотеку с открытым исходным кодом dotNetRDF - поддержка OWL в настоящее время несколько ограничена, хотя, возможно, не идеальна для ваших нужд

Ответ 4

Я исследовал это несколько месяцев назад. Один из наиболее интересных проектов, которые я мог бы найти: http://www.hookedonlinq.com/linqtordf.ashx

Ответ 5

Попробуйте RDFSharp в Codeplex. Кажется молодым, но многообещающим.