使用XML-Schema扩展像FOAF这样的rdf词汇表但是如何在定义中使用这样的词汇表中的类呢?基本上我想在foaf中添加新元素:person和我想确保,拥有这些元素意味着这个对象是一个foaf:Person而不是其他。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/NewXMLSchema" xmlns:foaf="http://xmlns.com/foaf/0.1/" elementFormDefault="qualified">
<xs:import foaf:namespace="http://xmlns.com/foaf/0.1/" foaf:schemaLocation="http://xmlns.com/foaf/spec/index.rdf"/>
<xs:complexType ref="foaf:Person">
<xs:sequence>
<xs:element name="owns">
<xs:complexType>
<xs:sequence>
<xs:element name="device">
<xs:complexType>
<xs:sequence>
<xs:element name="HereBeSomething"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="datapoints">
<xs:complexType>
<xs:sequence>
<xs:element name="point" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
复杂类型应该是foaf:Person,但这种安排会导致错误:
“在此行找到多个注释: - s4s-att-must-appear:属性'name'必须出现在元素中 “复杂类型”。 - s4s-att-not-allowed:属性'ref'不能出现在元素中 '的complexType'。“
如何在我的新架构的定义中使用其他RDF-Ontologies中的类型?
答案 0 :(得分:2)
我不会去那里。 XML Schema实际上不是处理RDF数据的好工具。许多人都在研究RDF的XML序列化,并认为,“哦,就像XML一样,带有一些额外的rdf:this和rdf:抛出的属性。”但那是欺骗性的。
RDF是一组主谓词 - 对象三元组。有多种语法可以将这些三元组写入文件中。 RDF / XML就是其中之一; Turtle和N-Triples以及RDFa是其他人。
RDF / XML的问题在于,在RDF / XML文件中写下同一组三元组有许多不同的方法。例如,以下两个片段完全等同于:
<foaf:Person rdf:about="#cygri">
<foaf:nick>cygri</foaf:nick>
</foaf:Person>
<rdf:Description rdf:ID="cygri">
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person">
<foaf:nick>cygri</foaf:nick>
</foaf:Person>
总结:我的建议是不使用XML工具来处理RDF数据。使用RDF工具。要扩展像FOAF这样的RDF Schema,请使用RDF Schema。