【问题标题】:How to encode a RDF/XML of simple interest如何编码一个简单感兴趣的 RDF/XML
【发布时间】:2012-08-15 01:39:43
【问题描述】:

我是一个编写 RDF 模式的初学者,我想知道我应该如何充分利用 URI 概念并创建一个简单感兴趣的 RDF 文档。我正在尝试创建以下语句的 RDF-

Jeffy is a Graduate student
Jeffy likes yoga
Jeffy is seeking Tennis.

我应该如何根据这三个句子编写 RDF。 对此的任何启示都会非常有帮助。

【问题讨论】:

    标签: rdf owl rdfs foaf


    【解决方案1】:

    我可以建议您不要使用 RDF/XML 吗?学习手写是一种相当复杂的语法格式。你最好使用类似Turtle 的语法来编写你的RDF,在这种情况下你的例子应该是这样的:

    @prefix my: <http://example.org/mynamespace/> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    
    my:jeffy rdf:type my:GraduateStudent ;
             my:likes my:yoga ;
             my:isSeeking my:Tennis .
    

    如果您出于某种原因必须拥有 RDF/XML,请考虑使用任何 RDF 解析器工具包(OpenRDF Sesame、Apache Jena、dotNetRDF 等)将一种语法转换为另一种语法。

    【讨论】:

      【解决方案2】:

      您可以使用 OWL 代替 RDF,因为:

      1) 它是 RDF 的超集

      2) 更强大

      例如:

      <?xml version="1.0"?>
      
      <!DOCTYPE rdf:RDF [
        <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
        <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
        <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
        <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
        <!ENTITY base "http://www.example.com/example/" >
        ]>
      
      <rdf:RDF
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
         xmlns:owl="http://www.w3.org/2002/07/owl#"
         xmlns:base="http://www.example.com/example/"
         >
      
        <owl:Class rdf:about="#GraduateStudent" />
      
        <owl:DatatypeProperty rdf:about="&base;Likes">
          <rdfs:domain rdf:resource="&base;GraduateStudent" />
          <rdfs:range rdf:resource="string" />
        </owl:DatatypeProperty>
      
        <owl:DatatypeProperty rdf:about="&base;IsSeeking">
          <rdfs:domain rdf:resource="&base;GraduateStudent" />
          <rdfs:range rdf:resource="string" />
        </owl:DatatypeProperty>
      
        <base:GraduateStudent rdf:about="&base;GraduateStudent/001">
          <base:Likes>yoga</base:Likes>
          <base:IsSeeking>Tennis</base:IsSeeking>
        </base:GraduateStudent>
      
      </rdf:RDF>
      

      您可以注意到,模型和数据在同一个文件中。

      3 个重要功能:

      1) 类:声明一个类

      2) DatatypeProperty:声明一个文字属性

      3)ObjectProperty(不在此处):声明到语义图另一个节点的链接

      在您的情况下,您可以创建一个“运动”类,通过 ObjectProperty 更改 DatatypeProperty, 更新范围并创建 2 项运动的实例。

      【讨论】:

      • 谢谢 Galaad,如果我可以使用函数之友(FOAF),请您澄清一下吗?
      • 虽然您当然正确地认为 OWL 比 RDFS 更具表现力,但我只想指出,在您给出的实际示例中,没有任何东西实际上需要 OWL 的表现力(唯一你不能在 RDFS 中真正表达的是 DatatypeProperty 和 ObjectProperty 之间的区别,但这种区别是否有必要值得怀疑)。
      【解决方案3】:

      FOAF

      您可以使用 foaf:Person 表示“Jeffy”(您可以使用 foaf:namefoaf:givenNamefoaf:nick 命名)。

      您可以使用foaf:interest 来表示对瑜伽的兴趣(不过,您必须使用代表“瑜伽”的foaf:Document;请参阅foaf:isPrimaryTopicOf)。 或者你可以使用foaf:topic_interest(范围是owl:Thing)。

      作为一名研究生可以(也许!)以foaf:Group 为模型。


      查看example in Wikipedia,它在 Turtle 序列化中。

      【讨论】:

      • @unor- 谢谢,您能否通过给出或展示任何示例来详细说明,我是使用 FOAF 功能的新手。它真的会帮助我了解更多。提前致谢!
      • @Nevzz03:我添加了一个指向 Turtle 语法示例的链接。
      猜你喜欢
      • 2011-08-10
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 2013-07-11
      相关资源
      最近更新 更多