Ответ 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.