URI 限定名称的数据类型

问题描述

在 RDF 中不鼓励使用 xsd:QName,因为像 "svg:circle"^^xsd:QName 这样的文字在没有解析 svg:名称空间绑定的情况下是不完整的,而且 http://www.w3.org/2000/svg 不是唯一的这种前缀的可能解析。在技​​术术语中,值空间是成对的(URI、名称),但没有来自词法空间的通用映射。

XQuery 正式定义了一个 URIQualifiedName,它可以解决这个问题:"Q{http://www.w3.org/2000/svg}circle" 将明确地引用限定名称的正确值。但是,这并没有定义为正式的数据类型,而只是语法的一部分。

我正在寻找一种标准化或常用的数据类型,用于以这种或类似格式存储限定名称。我知道将限定名称减少为单个 URI 的常用方法是通过 # 加入,生成 <http://www.w3.org/2000/svg#circle>,这对链接很有用,但并不总是有效 - 带有 # 的命名空间inside 无法以这种方式转换,而且我不知道有任何标准对此进行了规定(另一方面,RDF/XML 打破了这个约定,因为它只是简单地连接了 URI 和本地名称)。我觉得 URI 和本地名称间的紧密耦合证明将 XML 元素或属性名称存储在单个文字中是合理的。

我的一个选择是简单地将 QName 视为 EQName 并存储 "Q{http://www.w3.org/2000/svg}circle"^^xsd:QName。然而,这可能会混淆寻找 QName 的工具(例如,用于序列化 XML 的首选方式),并且根据 XML 模式中定义的数据类型,它只是无效的。

XSL 转换还定义了 EQNames,因此我可以坚持使用 "Q{http://www.w3.org/2000/svg}circle"^^<http://www.w3.org/1999/XSL/Transform#EQName>。这样做的缺点是数据类型仅在非规范模式中定义,并且从命名空间 URI 中获取定义并非易事。

还有其他选择吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)