Есть ли в ROWLEX способ удалить «rdf:datatype» из сериализованного объекта?

StackOverflow https://stackoverflow.com/questions/1127370

  •  13-09-2019
  •  | 
  •  

Вопрос

Можно ли в 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, то все приведенные выше строки компилируются без ошибок.Однако мое личное мнение таково: если вы можете быть более конкретным, будьте более конкретными, потому что вы можете предотвратить ошибки и недопонимание.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top