В ROWLEX есть способ удалить «rdf: datatype» из сериализованного объекта? - PullRequest
0 голосов
/ 14 июля 2009

В 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>

1 Ответ

2 голосов
/ 15 июля 2009

Вопрос довольно неясен, поэтому вы получите общий ответ :) Каждое свойство OWL должно быть либо типом данных, либо типом объекта.

  • Свойства типа объекта связывают два узла графа, а именно не только субъект, но и объект тройного объекта, который также является URI (или пустым узлом).
  • Свойство типа данных: объект тройки является конкретным значением, которое может быть строкой, целым числом, датой и т. Д. Эти конкретные значения называются «буквальными» -s. Базовым типом литералов является «Литерал», из них подклассы являются конкретными типами (string, integer, datetime ...).

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

...