2009-07-14 35 views
0

在ROWLEX中是否可以删除每个属性的“rdf:datatype”属性和/或使用通用的RDF Schema?在ROWLEX中是否有一种方法可以从序列化对象中删除“rdf:datatype”?

例子:

<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

请提供更多细节。任何没有遵循你的问题的人都不知道你想要什么。 – 2009-07-14 19:13:38

回答

2

问题是还不是很清楚,所以你得到一个通用的答案:)每个OWL属性必须是数据类型或对象类型。

  • 对象类型属性连接图的两个节点,即不仅是主题,而且三元组的对象也是一个URI(或空白节点)。
  • 数据类型属性:三元组的对象是一个可以是字符串,整数,日期时间等的具体值。这些具体值被称为“文字”-s。基本类型的文字是“文字”,从这些是具体类型(字符串,整数,日期时间...)分类。

当您定义您的本体时,并不要求您将数据类型属性限制为特定的文字类型。你可以保持它的通用性,接受任何类型的文字。 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 

如果在你的本体您的出生日期数据类型属性并不限于日期时间,那么所有上述行编译没有错误。不过,我个人的观点是,如果你可以更具体,更具体,因为你可以防止错误和沟通不畅。

相关问题