借助RDF增强WSDL--管理结构化的Web服务元数据 来源: 时间:2002-08-21 11:16 作者:AMTeam.org 借助RDF增强WSDL Uche Ogbuji “资源描述框架”是万维网联盟用于定义 XML 对象的元数据的正式格式。从概念上讲,它与“Web 服务描述语言”很相似,后者是有关基于 XML 的服务的元数据集合。本文集中讨论在这两种规范之间架设一座桥梁。 本文首先用一个示例说明用 RDF 文件表示的 Web 服务描述可能具有什么样的形式,接着讨论如何 利用 RDF 可视化工具生成 WSDL 数据的图形。最后,本文给出了 WSDL 的一种可能的 RDF Schema 的一部分。 Web 服务描述语言 (WSDL)(请参阅“参考资源”)规范提供了一个基于 XML 的简单语汇表,用来描述可通过网络提供的基于 XML 的 Web 服务。这些服务本身使用简单对象访问协议 (SOAP)、HTTP、SMTP 或通过其他方式进行通信;而 WSDL 为用户提供设置这些通信所需的元数据。WSDL 本身不规定如何发布或公布这种服务描述,而是将这项任务留给其他规范。“通用描述、发现和集成 (UDDI)”是用来创建 Web 服务目录的一个倡议,它定义了对 WSDL 描述进行编目和调度的一个框架,但是它刚刚出现而且相当复杂。 UDDI 是对在线合同的一个巨大促进,理应很快在分布式服务领域占据一席之地。不过,因为最初的 WSDL 部署很可能在严格封闭的系统中,而不是在开放的 Web 上,所以可能会有一种更好的替代方案。有一种较早的更自然的方法用于以资源描述框架 (RDF) 形式进行 WSDL 编目和发现。RDF 是由万维网联盟 (W3C) 开发的一种机制,用来对 Web 元数据进行编码和管理(请参阅“参考资源”)。它提供一些简单的方法来集成多个域中的大量元数据。 为了有助于理解本文,您可能需要阅读我的前一篇文章,"Using WSDL with SOAP Applications"(请参阅“参考资源”),在那篇文章中我通过一个具体的示例分析了 WSDL 规范的功能,那个示例说明测雪板专家为他们行业的厂商提供认可的一项服务。本文讨论借助 RDF 的简单性和强大功能增强 WSDL 的描述能力。为了熟悉 RDF、RDF Schema 以及 RDF 的基本 XML 表示(这对于理解本文后面的部分非常重要),请回顾“参考资源”部分有关 RDF 信息的链接。 RDF 和 WSDL 本可能会是... 例如,我已经使用上面讨论的一个 WSDL 规范修改了测雪板示例,以便使用 RDF 序列化格式,如清单 1 所示。 清单 1:测雪板认可搜索的 WSDL 描述在用有效的 RDF 语法表示时的形式。
这些更改基本上是抽取描述的一部分并将其编码为 RDF 序列化。正如 RDF Model and Syntax 1.0 Recommendation (RDF M&S)(请参阅参考资源)所要求的那样, 这个部分包括在 rdf:RDF 元素中。如果将它输入 RDF 处理器,您将获得大量信息,这些信息勾划出组成 WSDL 说明的限制条件和关系。 我使用可用的每个 RDF 序列化技巧将对原始 XML 结构的更改减到最少。 它很好地说明了 RDF 工作组必须对 RDF M&S 进行多么艰苦的处理,才能使现有的 XML 格式归结 到有效的 RDF 形式中。请注意,这一点也是引起极大争议的原因,因为有许多可用的技巧使得从各种语法和所生成的 RDF 抽象模型的转换具有一定的脆弱性。 我未将 types 元素包括在 RDF 部分。主要问题是这部分内容实际上完全超出了 WSDL 的范围。W3C 或其他 Web 标准组织可能提出一个将 XML 方案映射到 RDF 的标准,并且其他数据分类方法可能完成相同的工作,但它实际上属于完全不同的另一范畴的工作。 types 描述可能仍然可通过指定 parseType="Literal" 属性完全插入 RDF 模型中,但我们同时必须面对随 parseType="Literal" 而来的所有问题: 尤其是,RDF M&S 明确禁止包含标记的文字之间的等价定义(例如,它可能这样规定,如果带有标记的两段文字约简到正规 XML 以后完全相同,则它们等价)。这意味着我们永远无法对以 RDF 模型存储的数据与任何其他数据进行可靠的比较。在实际应用中,这使得 parseType="Literal" 毫无用处,所以我也就没管它。 在被转换为 RDF 的部分中,最显著的更改是在核心 WSDL 元素中添加了 rdf:ID 属性。 这是 RDF 对 WSDL 作者对属性中的限定名执行的操作的处理方式:建立抽象实体之间的关系。通过使用 rdf:resource 属性就可以看到在何处生成对这些已标识资源的引用。 您会注意到的另一个更改是,所有以前无前缀的属性现在都添加了一个前缀。RDF 缩写允许将 namespace-resolved 属性当作特性名对待。属性值则成为语句的文字值。 在清单 1 中我大量使用了此缩写。RDF 并不严格要求特性名的名称空间,但极力建议将它作为消除这些名称的歧义的方法。如果您准备将此 WSDL 元数据放入包含其他信息的模型中,则常用的标签(如 "name")很有可能与另一个特性表示(比如说,人名或组织名)发生冲突。因为 XML Namespaces 1.0 不允许应用程序将缺省名称空间用作属性,所以我们必须明确地指定前缀来消除歧义。 在某些情况下(如消息部分),我使用匿名资源。请注意,message/part 元素有 property 属性,但没有 rdf:ID 或 rdf:about 属性。我选择这样做是因为在我看来,很少需要引用消息上下文之外的消息部分,而且只有此操作才需要让它为非匿名。否则,我就不得不构造一个唯一的 ID(不像顶级资源那样自然),并在 rdf:about 属性中使用 XPointer,或某个其他技巧。我只是跟着最自然的感觉走。 最后几点注意事项。您可以看到,我在 service 元素中使用 rdf:about 添加了一条语句,这条语句涉及我以前作为其主题说明的那个端口。这是利用 RDF 语法的灵活性将对原始 WSDL 的更改减至最少的另一个示例。此外,您可以看到 RDF 描述的任意嵌套是多么有用,它允许我们的 binding 元素版本保留它原始的结构。 WSDL 的详细图形表示,多亏 RDF WSDL 的 RDF 模型的一大优点是它直接导致 WSDL 模型所指定内容的方便可视化。通过将元数据映射到
RDF,我已将它套进一种形式化中,RDF M&S 为此形式化提出了一种有用的表示作为定向图。如要看实际操作,请转到 Dan Brickley 的卓越的
RDF 可视化工具(请参阅“参考资源”),并在 URL 文本框中输入下面的 URL: 请快速浏览一下生成的图形。如果使用可视化工具的 GIF 输出,看它需要费点劲,所以如果您有诸如 Adobe SVG
Plug-in(请参阅参考资源)之类的查看器,我建议使用 SVG 输出。此外,您也可以从这个观测器站点生成 2 维虚拟现实标记语言
(VRML)。请注意,已为匿名资源分配了一个生成的统一资源标识符 (URI),这个标记符对于 RDF 工具很有用,尽管它与 RDF M&S
中给出的图形样例有所不同,在 RDF M&S 中匿名资源用空椭圆表示。例如,分配到的 URI 包含在第一个 message
元素中的匿名端口资源是: XML 的多个方面 这意味着我,一个自称懒惰的程序员,可以很快熟悉一个新的服务描述语言,WSDL,并快速将它揉合为 RDF 中的一种形式。在某些情况下(如 RSS),这一点已经实现了。通过使用现成的工具,我可以创建原来所描述的抽象的一种全面可视化。 针对 RDF 和 W3C 对它的声明存在一些争论,但我们对 WSDL 的剖析应该能够表明,不管您对 RDF 及其众所周知的不足有什么看法,它是可用于使元数据会谈正确开始的一个大型圆桌会议。使 XML 团体第一次变得非常重要的一件事情似乎是对跨企业的可扩展性的承诺,这使得这种协作变得更现实。好了,我们现在闲言少叙,言归正传。 用于 WSDL 的 RDF Schema? 应注意的第一点是,大小写与 RDF Schemas Candidate Recommendation (RDF Schemas) 中使用的约定不一致。这是为了避免改变 WSDL 所用的元素类型名。除此之外,它还是循环的方案。只要 WSDL 对描述元素之间的内部关系有相应的限制,我就使用 domain- 和 range- 约束。因此,举例来说,因为 WSDL 输入元素中的消息属性的值必须是消息名,所以 RDF Schema 使用清单 3 中代码段的等价范围约束。 清单 3. RDF Schema 的范围约束 上面的范围约束确保输入特性只能在操作元素中使用,这也是 WSDL 的一个约定。 但是,请注意,其中许多约束并不是它们所能达到的最强约束。例如,元素属性指明消息部分使用的类型部分中的特定元素。该特性的值实际上应该是一个有效的 qname。例如,我们不能将字符串 "!!42xyz??" 设置为该特性的值,因为它甚至不是一个有效的 XML 元素类型名,但是因为我们将 rdfs:Literal 用作该特性的范围,所以 RDF 处理器将会容忍这种错误。不幸的是,RDF Schema 几乎没有提供对数据分类的支持,这个任务留给了以后的版本,那个版本将能够利用 XML Schema 小组的工作。 出于策略方面的考虑,为了保持简单,我选择我的子集不包括 SOAP 操作。为了使特定于 SOAP 的语句处在它们自己的名称空间中,看来很可能必须有另一个 RDF Schema 文件用于这些类和特性,而且必须借助发布这些方案的 WSDL 作者的一些帮助。但是,再强调一次,RDF Schema 的任何使用,包括我在本文中设置的框架,都需要拥有基准 "http://schemas.xmlsoap.org/wsdl" URL(请参阅参考资源)的 WSDL 作者的某些帮助。大多数 RDF 处理器,包括我在本文中使用的 4RDF,可以帮助开发人员避开这个问题,它允许开发人员映射和覆盖基准 URI。其他 RDF 处理器或许也可以完成这一工作。 掌握 XSLT... 文本可望使您对如何借助可用于 RDF 的现有工具来体验 WSDL 有所领悟。我们看过了用 WSDL 编码的元数据关系的内部结构,RDF 转换使这一点更加清晰。我们也了解了从非 RDF 的 XML 语汇表导出 RDF Schema 和实例的一般过程。 在下一篇文章中,我们将会看到 W3C 的另一项核心技术(即 XSLT)能为 WSDL 开发人员和用户做哪些工作。 参考资源 我的前一篇文章, Using WSDL with SOAP Applications,说明了 WSDL 的工作方式以及它如何应用到基于 SOAP 的应用程序编程 回顾 Web 服务描述语言 (WSDL) 规范。 W3C 维护着一个 RDF 信息网页,您可以从该网页获得进一步的信息。 要进一步提高您的 RDF 水平,请试一试这篇教程。 我使用 Dan Brickley 的令人惊奇的 RDF visualizer 生成了我们刚讨论过的 WSDL 描述的图像,格式为 GIF (141 KB) 和 SVG (27 KB)(要查看该文件请下载 Adobe SVG plug-in。安装插件程序后,在插件程序或 Web 浏览器中打开任一个 RDF 文件来以图形方式查看它)。RDF 源代码是本文中的清单 1,我也提供了它的一个副本。 您可能也对将 RDF 方案可视化工具用于清单 2 感兴趣。 W3C 的 SVG 网页上有许多 SVG 资源。 我使用 4RDF 处理并测试本文的 RDF 文件和方案,图形生成除外。 关于作者 |
关键词:
|
相关文章 |