在 ROWLEX 中,有一种方法可以删除“rdf:datatype” 来自序列化对象?

发布于 2024-07-27 16:45:29 字数 397 浏览 3 评论 0原文

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

In ROWLEX is it possible to remove "rdf:datatype" attribute of each property and/or use common RDF Schema instead?

Example:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九歌凝 2024-08-03 16:45:29

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

  • 对象类型属性连接图的两个节点,即三元组的主体和客体都是 URI(或空白节点)。
  • 数据类型属性:三元组的对象是一个具体值,可以是字符串、整数、日期时间等。这些具体值称为“literal”-s。 文字的基本类型是“Literal”,它们是具体类型(字符串、整数、日期时间...)的子类。

当您定义本体时,并不要求您将数据类型属性限制为特定的文字类型。 您可以保持它的通用性,接受任何类型的文字。 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,则以上所有行都可以正确编译。 然而,我个人的观点是,如果你能更具体,就更具体,因为这样可以防止错误和沟通不畅。

The question is quite unclear, so you get a generic answer :) Every OWL property must be either data type or an object type.

  • Object type properties connect two nodes of the graph, namely not only the subject but the object of the triple is an URI (or blank node), too.
  • Data type property: the object of the triple is a concrete value that can be string, integer, date time etc. These concrete values are called "literal"-s. The base type of literals is "Literal", from these are the concrete types (string, integer, datetime...) subclassed.

When you define your ontology, it is not demanded from you to restrict your data type properties to a particular literal type. You may keep it generic, accepting any kinds of literals. ROWLEX does support this. There is a generic RdfLiteral class and a hosts of specific literal classes like RdfLiteralString, RdfLiteralDateTime etc. Every specific literal class contains explicit and implicit cast implementations to convert .NET types to literals and back. Therefore in ROWLEX, you may write:

    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

If your DateOfBirth data type property in your ontology is not restricted to DateTime then all the above lines compile without errors. However, my personal opinion is that if you can be more specific, be more specific, because you can prevent errors and miscommunication.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文