XSD 导入以在 XSL 架构中使用 foaf

发布于 2024-11-26 16:16:47 字数 1759 浏览 2 评论 0原文

使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

棒棒糖 2024-12-03 16:16:47

我不会去那里。 XML Schema 并不是处理 RDF 数据的真正好工具。许多人在查看 RDF 的 XML 序列化时会想:“哦,这就像 XML 中添加了一些额外的 rdf:this 和 rdf:that 属性。”但这是骗人的。

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 模式,请使用 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:

<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>

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文