RDF / XML - 类的正确语法

时间:2012-07-26 16:01:40

标签: xml rdf

试图让我的头脑围绕RDF语句。给定一些命名空间:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:ex="http://example.org/#"
     xmlns:people="http://example.org/people/#"
>

声明之间是否有任何区别:

<rdf:Description rdf:about="people:James_Brown">
    <rdf:type rdf:resource="ex:person"> 
</rdf:Description>

<ex:person rdf:resource="people:James_Browm" />

2 个答案:

答案 0 :(得分:5)

使用

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:ex="http://example.org/#"
     xmlns:people="http://example.org/people/#"
>
<ex:person rdf:resource="people:James_Browm" />
</rdf:RDF>

W3C validator返回:

Error: {E201} rdf:resource not allowed as attribute here.[Line = 6, Column = 48]

应该是:

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:ex="http://example.org/#"
     xmlns:people="http://example.org/people/#"
>
<ex:person rdf:about="people:James_Browm" />
</rdf:RDF>

RDF是三元组(主语,谓语,对象),而@resource是主语的URI。

答案 1 :(得分:1)

我不知道你试图做出什么样的观点,但我很确定这两种说法完全不同。命名空间通常是附加到<c:name>Bill Gates</c:name>之类的标记的前缀,在这种情况下,命名空间就是c。您试图以某种方式将名称空间组合到实际节点的值中,这不是正确的方法。每当你有像"people:James_Brown"这样的引号时,你会说这个整个语句都是这个节点的值。因此,您内部的任何命名空间引用都是无用的。命名空间更多地用于将一组节点分组在一起,而不是像您一样尝试标记每个数据条目。我建议浏览并寻找一些示例XML文档来查看命名空间/值关系,因为我不认为这里有什么是标准的。然后我又是新人,可能完全错了。