新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     >>W3CHINA.ORG讨论区<<     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> RSS(RDF Site Summary), DC(Dublin Core), FOAF, PRISM, GO(Gene Ontology), P3P,XPackage,CIM/XML,CC/PP
    [返回] W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWLW3CHINA.ORG讨论区 - Web新技术讨论『 RSS/FOAF/Dublin Core/CIM/PRISM/Gene Ontology 』 → [转帖]有效地使用 RDF/XML 中的 rdf:about 和 rdf:ID 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 20051 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: [转帖]有效地使用 RDF/XML 中的 rdf:about 和 rdf:ID 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     admin 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      头衔:W3China站长
      等级:计算机硕士学位(管理员)
      文章:5255
      积分:18404
      门派:W3CHINA.ORG
      注册:2003/10/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给admin发送一个短消息 把admin加入好友 查看admin的个人资料 搜索admin在『 RSS/FOAF/Dublin Core/CIM/PRISM/Gene Ontology 』的所有贴子 点击这里发送电邮给admin  访问admin的主页 引用回复这个贴子 回复这个贴子 查看admin的博客楼主
    发贴心情 [转帖]有效地使用 RDF/XML 中的 rdf:about 和 rdf:ID

    技巧:有效地使用 RDF/XML 中的 rdf:about 和 rdf:ID    

    Uche Ogbuji(uche.ogbuji@fourthought.com)
    首席顾问,Fourthought,Inc.
    2003 年 7 月

    RDF 和 XML 的结合导致指定资源存在几种不同的方法,但有时用于解释语法的规则让人头疼。在本技巧文章中,Uche Ogbujirate 用一些示例来说明 rdf:ID 和 rdf:about 属性的各种行为,并展示了如何使用 XML Base 来控制这些行为。
    本技巧文章涉及到了 2003 年 1 月 23 日的 RDF/XML 语法规范。如果您不熟悉最近的 RDF 规范,那么您可能要回顾一下最新的 W3C RDF Primer(请参阅参考资料)。在 RDF/XML 中,语句的主语被组织成节点元素,这些元素使用如 rdf:about 和 rdf:ID 这样的属性来设置有关该主语的一组语句的主语。一些规则控制从这些属性构造实际的 RDF 主语 URI 的方式,但如果您不小心的话,在不同环境解析结果时,存在很多让人不解之处,甚至是不稳定性。本技巧文章提供一些实践,这些实践可以有助于将这些错误和混乱降至最少。

    指定基

    人们常常按清单 1 所示方式来使用 rdf:ID。

    清单 1. rdf:ID 的简单用法(listing1.rdf)


    <?xml version="1.0" encoding="UTF-8"?>
    <rdf:RDF
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
    >
    <rdf:Description rdf:ID="local-record">
      <dc:title>Local Record</dc:title>
    </rdf:Description>
    </rdf:RDF>

    在该示例中,RDF/XML 规定了语句的主语是井号和随后的标识名称(#local-resource),然后会将这个主语附加到作用域内的基 URI。后者会使人迷惑。在清单 1 中,没有显式地说明这个作用域内的基 URI。解析器通常根据被解析文件的位置来提供这个 URI。例如,如果清单 1 位于 URI http://rdfhost/listing1.rdf,则实际的主语 URI 可能是 http://rdfhost/listing1.rdf#local-resource。如果这个清单位于本地文件系统路径 /code/rdf/listing1.rdf,则解析的 URI 可能是 file:///code/rdf/listing1.rdf#local-resource。解析器也可以用其它较复杂的方式来执行解析。RDF/XML 不对被解析 RDF 文档规定任何基 URI 决定过程。

    只要解析器的行为合理,根据被解析文件位置的不同,可以按您想的变化主语 URI。您想让文件断言的 RDF 语句可能取决于文件本身的上下文。然而,在许多情况下,您只记得文件中所描述的资源的绝对 URI,所以这一变化会产生问题。

    一种解决方案是总是使用 rdf:about 和绝对 URI — 我将在稍后讨论这一方法。另一种解决方案是使用 XML Base,这是一种规范,它使我们可以断言一个附加到 XML 文件中某一元素的基 URI。通过将 xml:base 属性放在 XML 文件正确的位置上,您可以控制使用哪个基 URI 来解析 rdf:ID。清单 2 提供了这样一个示例。

    清单 2. 使用带 XML Base 的 rdf:ID(listing2.rdf)


    <?xml version="1.0" encoding="UTF-8"?>
    <rdf:RDF
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      xml:base="http://spam.com/eggs/listing.rdf"
    >
    <rdf:Description rdf:ID="local-record">
      <dc:title>Local Record</dc:title>
    </rdf:Description>
    </rdf:RDF>

    请注意添加的 xml:base 属性。我将它添加到顶层元素,您通常希望用这种方式控制整个文件的基 URI,因为通常元素会继承其父元素的基 URI。不管清单 2 是位于 URI(譬如 http://rdfhost/listing.rdf)所指定的地方,还是位于本地文件系统,解析器必须在 rdf:Description 处生成主语 http://spam.com/eggs/listing.rdf#local-resource。

    rdf:about 如何适应这种情况

    使用 rdf:about 而不使用 rdf:ID 的 RDF 节点元素有另一种解析机制。这种机制最简单,如果属性值是绝对 URI,则逐字将这个 URI 作为主语。所以,从所表达的 RDF 模型这个角度来看,清单 3 和清单 2 等价。

    清单 3. 使用带绝对 URI 的 rdf:about(listing3.rdf)


    <?xml version="1.0" encoding="UTF-8"?>
    <rdf:RDF
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
    >
    <rdf:Description
        rdf:about="http://spam.com/eggs/listing.rdf#local-record">
      <dc:title>Local Record</dc:title>
    </rdf:Description>
    </rdf:RDF>

    然而,您可以在 rdf:about 中使用相对 URI,这时,会根据基 URI 进行解析。这意味着,您可以再次看到 xml:base 的方便之处:可以不管上下文是什么而确保得到用于主语的准确的 URI。从所表达的 RDF 模型这个角度来看,清单 4 与清单 2 等价。

    清单 4. 使用带相对 URI 的 rdf:about(listing4.rdf)


    <?xml version="1.0" encoding="UTF-8"?>
    <rdf:RDF
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      xml:base="http://spam.com/eggs/"
    >
    <rdf:Description rdf:about="listing.rdf#local-record">
      <dc:title>Local Record</dc:title>
    </rdf:Description>
    </rdf:RDF>

    结束语

    在相对 URI 方面,rdf:about 的行为也可以应用到类似的属性(譬如 rdf:resource)。rdf:ID 的行为与 rdf:bagID 等属性的行为类似。在整个 RDF/XML 文件中,您应该充分了解任何有效的基 URI,这样可以确保您理解了生成 RDF 模型的过程。

    至于在 rdf:ID 和 rdf:about 两者之间的权衡,如果您正在描述的资源在描述该资源的 RDF 文件之外实际没有意义的位置,则您很可能希望用前者。也许它是一条局部或便利的记录,或者甚至是一个抽象或现实世界物体的代理(虽然我建议您,在用 RDF 描述这样的事物时要极其小心,因为它会导致各种莫名其妙的混乱;我曾经只用 RDF 描述对计算机有意义的记录)。当您正在引用其标识和位置都广为人知的资源时,通常使用 rdf:about。

    参考资料


    关于 RDF 简略介绍,请参阅“An introduction to RDF”(developerWorks,2000 年 12 月)和“The Languages of the Semantic Web”。


    W3C RDFCore 工作组(W3C RDFCore working group)最近一直很忙。如果您不熟悉当前的规范,请回顾 RDF Primer,另一方面,如果您想了解这令人振奋的 RDF/XML 的所有细节,请浏览 RDF/XML 语法规范。


    请参阅 XML Base,以了解 XML 节点中基 URI 和 xml:base 属性的细节。


    请阅读我的 Thinking XML 专栏,其中深入讨论了 RDF 和其它技术。


    我用 4Suite 平台的 RDF 组件测试了本技巧文章中的所有示例。


    在 developerWorks XML 专区查找更多 XML 参考资料。


    IBM WebSphere Studio 提供了一套使 XML 开发(用 Java 和其它语言进行开发)自动化的工具。它与 WebSphere Application Server 紧密集成,但它也可以与其它 J2EE 服务器一起使用。


    了解如何成为一名 XML 及其相关技术的 IBM 认证开发人员。

    关于作者

    Uche Ogbuji 是 Fourthought Inc. 的顾问和共同创始人,该公司是专为企业知识管理提供 XML 解决方案的软件供应商和咨询公司。Fourthought 开发了 4Suite,它是 XML、RDF 和知识管理应用程序的开放源码平台。Ogbuji

    [此贴子已经被作者于2005-1-8 21:46:16编辑过]

       收藏   分享  
    顶(0)
      




    ----------------------------------------------

    -----------------------------------------------

    第十二章第一节《用ROR创建面向资源的服务》
    第十二章第二节《用Restlet创建面向资源的服务》
    第三章《REST式服务有什么不同》
    InfoQ SOA首席编辑胡键评《RESTful Web Services中文版》
    [InfoQ文章]解答有关REST的十点疑惑

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/9/16 21:06:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 RSS/FOAF/Dublin Core/CIM/PRISM/Gene Ontology 』的所有贴子 点击这里发送电邮给Google AdSense  访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2021/2/28 18:57:28

    本主题贴数4,分页: [1]

     *树形目录 (最近20个回帖) 顶端 
    主题:  [转帖]有效地使用 RDF/XML 中的 rdf:about&nbs..(6010字) - admin,2004年9月16日
        回复:  还有 rdf:nodeID ……(20字) - hax,2005年1月16日
        回复:  好,我想问一下,在这种情况下是不是rdf:id和rdf:about与rdf:resource一样呢..(134字) - gengkeming,2004年11月7日
            回复:  [quote][b]以下是引用[i]gengkeming在2004-11-7 19:43:34[/..(462字) - admin,2004年11月7日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    39.063ms