XSD 导入以在 XSL 架构中使用 foaf
使用 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:属性“名称”必须出现在元素中 '复杂类型'。 - s4s-att-not-allowed:属性“ref”不能出现在元素中 'complexType'。”
我如何在新模式的定义中使用其他 RDF 本体中的类型?
extending an rdf-vocabulary like FOAF is possible using XML-Schema but how can I use classes from such a vocabulary inside the definition? Basically I want to add new elements to the foaf:person and I want to make sure, that having those elements means that this object is a foaf:Person and nothing else.
<?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>
the Complex Type is supposed t be the foaf:Person, but this arangement results in an errror:
"Multiple annotations found at this line:
- s4s-att-must-appear: Attribute 'name' must appear in element
'complexType'.
- s4s-att-not-allowed: Attribute 'ref' cannot appear in element
'complexType'."
How can I use Types from other RDF-Ontologies in the definition of my new Schema?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不会去那里。 XML Schema 并不是处理 RDF 数据的真正好工具。许多人在查看 RDF 的 XML 序列化时会想:“哦,这就像 XML 中添加了一些额外的 rdf:this 和 rdf:that 属性。”但这是骗人的。
RDF 是主谓宾三元组的集合。有多种语法可将这些三元组写入文件。 RDF/XML 就是其中之一; Turtle、N-Triples 和 RDFa 是其他的。
RDF/XML 的问题在于,有许多不同的方法可以在 RDF/XML 文件中写下同一组三元组。例如,以下两个片段完全等效:
总之:我的建议是不要使用XML 工具来处理RDF 数据。使用 RDF 工具。要扩展像 FOAF 这样的 RDF 模式,请使用 RDF 模式。
I would not go there. XML Schema isn't really a good tool for dealing with RDF data. Many people look at RDF's XML serialization and think, “oh so it's just like XML with some extra rdf:this and rdf:that attributes thrown in.” But that's deceptive.
RDF is a set of subject-predicate-object triples. There are multiple syntaxes for writing these triples down into files. RDF/XML is one of them; Turtle and N-Triples and RDFa are others.
The problem with RDF/XML is that there are many different ways of writing down the same set of triples in an RDF/XML file. For example, the following two snippets are exactly equivalent:
In summary: My recommendation is not to use XML tools to process RDF data. Use RDF tools. To extend an RDF Schema like FOAF, use RDF Schema.