Есть ли в ROWLEX способ удалить «rdf:datatype» из сериализованного объекта?
Вопрос
Можно ли в ROWLEX удалить атрибут «rdf: datatype» каждого свойства и/или вместо этого использовать общую схему RDF?
Пример:
<MyOntology:Channel>
<MyOntology:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">My news</MyOntology:title>
<MyOntology:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">My desc</MyOntology:description>
</MyOntology:Channel>
Решение
Вопрос совершенно неясен, поэтому вы получите общий ответ :) Каждое свойство OWL должно быть либо типом данных, либо типом объекта.
- Свойства типа объекта соединяют два узла графа, а именно не только субъект, но и объект тройки является URI (или пустым узлом).
- Свойство типа данных:объект тройки — это конкретное значение, которое может быть строкой, целым числом, датой и временем и т. д.Эти конкретные значения называются «буквальными».Базовым типом литералов является «Литерал», от него выделяются конкретные типы (строка, целое число, дата-время...).
Когда вы определяете свою онтологию, от вас не требуется ограничивать свойства типа данных определенным литеральным типом.Вы можете оставить его универсальным, принимая любые типы литералов.ROWLEX поддерживает это.Существует общий класс RdfLiteral и множество конкретных классов литералов, таких как RdfLiteralString, RdfLiteralDateTime и т. д.Каждый конкретный класс литералов содержит явные и неявные реализации приведения типов для преобразования типов .NET в литералы и обратно.Поэтому в ROWLEX вы можете написать:
RdfDocument rdfDoc = new RdfDocument();
// Assuming that Person class and DateOfBirth data type property
// are autogenerated from your person-ontology, AND
// your DateOfBirth data type property is restricted to DateTime
Person p = new Person("joe", rdfDoc);
// Implicit casting from DateTime to RdfLiteralDateTime
p.DateOfBirth = new Sytem.DateTime(1946, 12, 31); // Compiles OK
p.DateOfBirth = 26; // Compiler error
p.DateOfBirth = "Hello World"; // Compiler error
Если ваше свойство типа данных DateOfBirth в вашей онтологии не ограничено DateTime, то все приведенные выше строки компилируются без ошибок.Однако мое личное мнение таково: если вы можете быть более конкретным, будьте более конкретными, потому что вы можете предотвратить ошибки и недопонимание.