質問は非常に不明確なので、一般的な答えが得られます:)すべてのOWLプロパティは、データ型またはオブジェクト型のいずれかである必要があります。
- オブジェクトタイプのプロパティは、グラフの2つのノードを接続します。つまり、サブジェクトだけでなく、トリプルのオブジェクトも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に制限されていない場合、上記のすべての行はエラーなしでコンパイルされます。しかし、私の個人的な意見では、エラーや誤解を防ぐことができるので、より具体的にすることができれば、より具体的にすることができます。