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

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

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

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

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

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

5 ответов

Решение

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

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

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

Автомобиль - подкласс автомобиля

Автомобиль - подкласс компании Asset

Используя ROWLEX, вы получите классы.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

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

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

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

  1. SPARQL-запрос и простой API транзакций.
  2. Универсальный объектный API, который группирует коллекции троек в объекты данных.
  3. Интеграция Visual Studio, которая принимает определения интерфейса и генерирует строго типизированную модель домена.NET, которая хранит свои данные в виде RDF в экземпляре BrightstarDB. Модель.NET имеет поддержку LINQ, а также может быть представлена ​​как служба OData.

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

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

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

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

Другие вопросы по тегам