In ROWLEX c'è un modo per rimuovere “rdf: tipo di dati” da oggetto serializzato?
Domanda
In ROWLEX è possibile rimuovere "rdf: tipo di dati"? Attributo di ogni proprietà e / o utilizzare comune RDF Schema invece
Esempio:
<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>
Soluzione
La domanda è abbastanza chiaro, in modo da ottenere una risposta generica :) Ogni proprietà OWL deve essere o tipo di dati o un tipo di oggetto.
- proprietà del tipo di oggetto collegano due nodi del grafo, cioè non solo il soggetto ma l'oggetto della tripla è un URI (o nodo vuoto), anche.
- Tipo di dati di proprietà: l'oggetto della tripla è un valore concreto che può essere stringa, intero, data e ora, ecc Questi valori concreti sono chiamati -s "letterale". Il tipo di base di letterali è "letterale", da questi sono i tipi di cemento (stringa, intero datetime ...) sottoclasse.
Quando si definisce la vostra ontologia, non è richiesto da voi per limitare le proprietà del tipo di dati a un particolare tipo letterale. Si può tenerlo generica, accettando qualsiasi tipo di letterali. ROWLEX supporta questo. C'è una classe RdfLiteral generica e un host di classi letterali specifici come RdfLiteralString, RdfLiteralDateTime ecc Ogni classe letterale specifica contiene implementazioni del cast espliciti ed impliciti per convertire tipi .NET per letterali e ritorno. Pertanto in ROWLEX, è possibile scrivere:
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 la vostra proprietà tipo di dati DateOfBirth in un'ontologia non è limitato a DateTime poi tutte le linee sopra compilare senza errori. Tuttavia, la mia opinione personale è che se si può essere più specifico, essere più specifico, perché è possibile evitare errori e problemi di comunicazione.