代码之家  ›  专栏  ›  技术社区  ›  Macarse

RDF避免rdfs:subClassOf

  •  0
  • Macarse  · 技术社区  · 14 年前

    我有以下RDF:

    <?xml version="1.0" encoding="UTF-8"?>
    <rdf:RDF
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
       xmlns:ppl="http://www.blah.com/people#">
    
        <rdfs:Class rdf:ID="Person">
            <ppl:Name/>
            <ppl:LastName/>
        </rdfs:Class>
    
        <rdfs:Class rdf:ID="John">
            <rdfs:subClassOf rdf:resource="#Person"/>
            <ppl:name>John</ppl:name>
            <ppl:LastName>Smith</ppl:LastName>
        </rdfs:Class>
    </rdf:RDF>
    

    例如,这不应该起作用:

    <?xml version="1.0" encoding="UTF-8"?>
    <rdf:RDF
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
       xmlns:ppl="http://www.blah.com/people2#">
    
        <rdfs:Class rdf:ID="Person">
            <ppl:Name/>
            <ppl:LastName/>
        </rdfs:Class>
    
        <rdfs:Class rdf:ID="John">
            <rdfs:subClassOf rdf:resource="#Person"/>
            <ppl:name>John</ppl:name>
            <ppl:LastName>Smith</ppl:LastName>
        </rdfs:Class>
    
        <rdfs:Class rdf:ID="Peter">
            <rdfs:subClassOf rdf:resource="#John"/>
            <ppl:name>Peter</ppl:name>
            <ppl:LastName>Smith</ppl:LastName>
        </rdfs:Class>
    </rdf:RDF>
    

    我怎样才能增加这个限制?

    编辑:

    之后 cygri's answer 我尝试了另一种方法:

    <rdf:Description ID="John">
        <rdf:type rdf:resource="#Person"/>
        <ppl:name>John</ppl:name>
        <ppl:LastName>Smith</ppl:LastName>
    </rdf:Description>
    
    <rdf:Description ID="Peter">
        <rdf:type rdf:resource="#John"/>
        <ppl:name>Peter</ppl:name>
        <ppl:LastName>Smith</ppl:LastName>
    </rdf:Description>
    

    2 回复  |  直到 7 年前
        1
  •  3
  •   cygri    14 年前

    更新时间: RDF本身并不能阻止你说一些荒谬的事情。因此,您仍然可以解析、序列化和查询数据,即使这些数据毫无意义。但是您可以使用OWL一致性检查器来验证您的本体。在这种特殊情况下,您必须检查本体是否在owldl中(owldl是OWL的变体,它引入了一个限制,即个人不能有子类。在owlfull中,这是允许的,除非您添加 Class Person 班级。

        2
  •  3
  •   Toby Inkster    14 年前

    <rdf:RDF
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
       xmlns:ppl="http://www.blah.com/people#">
    
        <rdfs:Class rdf:ID="Person" />
    
        <rdf:Description rdf:ID="John">
            <rdf:type rdf:resource="#Person"/>
            <ppl:name>John</ppl:name>
            <ppl:LastName>Smith</ppl:LastName>
        </rdf:Description>
    
    </rdf:RDF>
    

    rdfs:subClassOf and rdf:type are 不同类型的关系。

    rdf:type is 用于说明,比如说,约翰是一个人(约翰是哺乳动物和动物)。