No Rowlex, existe uma maneira de remover "RDF: Datatype" do objeto serializado?
Pergunta
No Rowlex, é possível remover o atributo "rdf: datatype" de cada propriedade e/ou usar o esquema RDF comum?
Exemplo:
<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>
Solução
A pergunta não é clara, então você obtém uma resposta genérica :) Cada propriedade OWL deve ser o tipo de dados ou um tipo de objeto.
- As propriedades do tipo de objeto conectam dois nós do gráfico, como não apenas o assunto, mas o objeto do triplo é um URI (ou nó em branco) também.
- Propriedade do tipo de dados: o objeto do triplo é um valor concreto que pode ser corda, número inteiro, hora de data etc. Esses valores concretos são chamados de "literal". O tipo de base de literais é "literal", a partir desses tipos de concreto (string, número inteiro, tempo de dados ...) subclassem.
Quando você define sua ontologia, ela não é exigida de você para restringir suas propriedades de tipo de dados a um tipo literal específico. Você pode mantê -lo genérico, aceitando qualquer tipo de literais. Rowlex suporta isso. Existe uma classe RDfliteral genérica e um hosts de classes literais específicas como rdfliteralstring, rdfliteraldateTime etc. Toda classe literal específica contém implementações de elenco explícitas e implícitas para converter tipos .NET em literais e voltar. Portanto, no Rowlex, você pode escrever:
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
Se a sua propriedade DateOfBirth Data Type em sua ontologia não estiver restrita ao tempo de dados, todas as linhas acima compilam sem erros. No entanto, minha opinião pessoal é que, se você pode ser mais específico, seja mais específico, porque pode evitar erros e falhas de comunicação.