“资源描述框架(RDF):概念和抽象语法”文档Section 6.4指出:“RDF图中的URI引用(RDF URI引用)...将产生有效的URI字符序列(根据RFC2396,第2.1节)代表带有可选片段标识符 ...的绝对URI ...“
RFC 2396,第2.1节仅讨论各个字符的编码。它并没有说明RDF允许使用标准URI的哪些部分。
在我见过的一些RDF文档中,“绝对URI”一词似乎仅指URI的domain.tld/path/name#optionalFragment形式,但没有提及查询字符串是否为(?key1 = value1&key2 = value2) (有时称为CGI数据)是允许还是不允许的。与相对URI(/just/a/path)相比,其他RDF文档仅使用术语“绝对URI”。
搜索“RDF URI查询字符串”时,诸如SPARQL之类的错误命中率很高。
因此,我的问题是:在RDF或RDFa中使用的URI是否允许使用标准HTML查询字符串?
如果没有,为什么不呢?我了解URI并非URL,也不一定会用于从服务器检索网页。但是,RDF处理器读取这些URI,我认为它们可以通过这些“查询”字符串传递的其他元数据的形式提供帮助。
[2012年2月9日更新]这是我的问题要点:我正在寻找一种指示连接“强度”的方法。例如,并不是每个人都热衷于:平等地认识每个人。我们可能在一次 session 上见了几分钟。或者我可能已经和某人生活了多年。 FAOF都是一样的。但是,如果我能够编写foaf:knows?strength = + 50,则不知道如何处理强度键的处理器可以忽略它,而那些“强度意识”的处理器将具有有值(value)的附加元数据。我可以创建一个包含“agreesWith”一词的词汇表,然后使强度=关键值的范围从0到100(表示一致百分比)。然后,我将用一个词汇涵盖整个协议(protocol)范围。 {注意:我曾考虑过允许范围从-100到+100,以涵盖一定范围的分歧。但是,为了向后兼容,我们将需要一个术语“disagreeWith”,以便不具有“强度意识”的处理器仍将知道“agreeWith”和disagreeWith之间的区别。”}
从目前的情况来看,RDF推理者似乎无法了解“绝遇”和“比他了解自己更了解他”之间的区别。决定将键值对中具有不同值的每个不同谓词URI视为完全独立且完全不相关的谓词,似乎是在抛出关于连接的几乎所有最有值(value)的信息,所有这些都是为了简单起见代码编写和快速处理。
除了创建完全独立的主题,谓词或宾语之外,查询字符串中的键值对可能还有其他有值(value)的用途:它们可用于指示谁将特定实体添加到联合编辑的.RDF文件中。就目前而言,RDF推理者所知道的只是在某个地方存在一个三元组?它没有其他依据可作为推理依据。加密的密码短语可用于验证源的可靠性,而不是简单地决定信任还是不信任整个域。
最佳答案
是的。
(什么,您还想要什么?)
RDF使用俗称“URL”的东西来指代事物。如果您想提高准确性,可以使用IRI(本质上是一种在URL中包含多个ascii的方式,这就是为什么您可以在浏览器栏中使用外来字符的原因)。最准确的答案太繁琐而无法联系,因此假设使用IRI。
RDF使用绝对引用。它的语法可以使用相对引用(例如foo/bar
),但是它们相对于文档库进行解析以变得绝对。实际上就像html链接一样。
除了语法之外,RDF并不关心这些引用的内部。您只是逐个字符地比较它们。作为结果:
http://example.com/foo/bar == http://example.com/foo/bar
http://example.com/foo/bar?query=x == http://example.com/foo/bar?query=x
http://example.com/foo/bar != http://example.com/foo/bar?query=x
http://example.com/foo/bar#x == http://example.com/foo/bar#x
http://example.com/foo/bar != http://example.com/foo/bar#x
http://example.com/%66oo/bar != http://example.com/foo/bar
请注意,您甚至都没有标准化。
特别是RDF认为查询部分没有什么特别的地方。
关于uri - RDF中使用的URI是否允许 "query string"?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9171416/