简体   繁体   English

为什么rdf:type不能用于父类?

[英]why rdf:type doesn't work with father classes?

In my protege, I state explicitly that the class Symphony is subclass of class Recommendable , as illustrated here: Classes Hierarchy 在我的保护中,我明确声明Symphony类是可推荐类的子类,如下所示: 类层次结构

I've also added some instances to the class Symphony, when I query the Symphony instances, I get results. 我还在Symphony类中添加了一些实例,当我查询Symphony实例时,我得到了结果。 However, when I query the Recommendable instances, I get nothing. 但是,当我查询推荐的实例时,我什么也得不到。

This is the query for Symphony class: 这是Symphony类的查询:

SELECT DISTINCT  ?subject   WHERE {
  ?subject rdf:type owbes:Symphony
}

And here is the result: Symphony instances query result 结果如下: Symphony实例查询结果

This is the query for Recommendable class. 这是推荐类的查询。

SELECT DISTINCT  ?subject   WHERE {
  ?subject rdf:type owbes:Recommendable
}

This result is empty, as you see here [Recommendable instances query result][3] 这个结果是空的,正如你在这里看到的[推荐实例查询结果] [3]

Both from the same prefix. 两者都来自相同的前缀。 What wrong did I do? 我做错了什么?

This is what's being generated in the owl file: 这是在owl文件中生成的内容:

<owl:Class rdf:about="bla bla bla/recommendation-systems#Symphony">
    <rdfs:subClassOf rdf:resource="bla bla bla/recommendation-systems#Recommendable"/>
</owl:Class>

As you see, I've correctly made Symphony a subclass of Recommendable 如您所见,我已经正确地将Symphony作为推荐的子类

I found the solution: Making this query solves the problem 我找到了解决方案:使此查询解决了问题

SELECT   ?subject   WHERE {
  ?subject rdf:type ?type.
  ?type rdfs:subClassOf owbes:Recommendable
}

Yet, I don't know why rdf:type doesn't work 但是,我不知道为什么rdf:type不起作用

<?xml version="1.0"?>
<rdf:RDF xmlns="http://www.semanticweb.org/welovethesemanticweb#"
     xml:base="http://www.semanticweb.org/welovethesemanticweb"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:owl="http://www.w3.org/2002/07/owl#"
     xmlns:xml="http://www.w3.org/XML/1998/namespace"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     xmlns:recommendation-systems="http://www.welovethesemanticweb.com/recommendation-systems#">
    <owl:Ontology rdf:about="http://www.semanticweb.org/welovethesemanticweb"/>



    <!-- 
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Annotation properties
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->




    <!-- http://www.welovethesemanticweb.com/recommendation-systems#hasSimilarityValue -->

    <owl:AnnotationProperty rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#hasSimilarityValue"/>



    <!-- 
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Object Properties
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->




    <!-- http://www.welovethesemanticweb.com/recommendation-systems#composedBy -->

    <owl:ObjectProperty rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#composedBy">
        <rdfs:subPropertyOf rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#hasArtist"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#AsymmetricProperty"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#IrreflexiveProperty"/>
        <rdfs:domain rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Symphony"/>
        <rdfs:range rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Composer"/>
        <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Composed By</rdfs:label>
    </owl:ObjectProperty>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#fromEra -->

    <owl:ObjectProperty rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#fromEra">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#AsymmetricProperty"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#IrreflexiveProperty"/>
        <rdfs:domain rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Artist"/>
        <rdfs:range rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#MusicalEra"/>
        <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Describes the musical era that music is from</rdfs:label>
        <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">From Era</rdfs:label>
        <recommendation-systems:hasSimilarityValue rdf:datatype="http://www.w3.org/2001/XMLSchema#double">0.1</recommendation-systems:hasSimilarityValue>
    </owl:ObjectProperty>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#hasArtist -->

    <owl:ObjectProperty rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#hasArtist">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#AsymmetricProperty"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#IrreflexiveProperty"/>
        <rdfs:domain rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Recommendable"/>
        <rdfs:range rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Artist"/>
        <rdfs:comment>Describes the arties of the music</rdfs:comment>
        <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Has Artist</rdfs:label>
        <recommendation-systems:hasSimilarityValue rdf:datatype="http://www.w3.org/2001/XMLSchema#double">0.4</recommendation-systems:hasSimilarityValue>
    </owl:ObjectProperty>



    <!-- 
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Data properties
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->




    <!-- http://www.welovethesemanticweb.com/recommendation-systems#contributeToSimilarities -->

    <owl:DatatypeProperty rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#contributeToSimilarities">
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#double"/>
    </owl:DatatypeProperty>



    <!-- 
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Classes
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->




    <!-- http://www.welovethesemanticweb.com/recommendation-systems#Artist -->

    <owl:Class rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#Artist">
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#MusicalEra"/>
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Recommendable"/>
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Song"/>
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Symphony"/>
    </owl:Class>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#Composer -->

    <owl:Class rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#Composer">
        <rdfs:subClassOf rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Artist"/>
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#MusicalEra"/>
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Recommendable"/>
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Song"/>
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Symphony"/>
    </owl:Class>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#MusicalEra -->

    <owl:Class rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#MusicalEra">
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Recommendable"/>
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Singer"/>
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Song"/>
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Symphony"/>
    </owl:Class>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#Recommendable -->

    <owl:Class rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#Recommendable">
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Singer"/>
    </owl:Class>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#Singer -->

    <owl:Class rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#Singer">
        <rdfs:subClassOf rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Artist"/>
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Song"/>
        <owl:disjointWith rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Symphony"/>
    </owl:Class>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#Song -->

    <owl:Class rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#Song">
        <rdfs:subClassOf rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Recommendable"/>
    </owl:Class>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#Symphony -->

    <owl:Class rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#Symphony">
        <rdfs:subClassOf rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Recommendable"/>
    </owl:Class>



    <!-- 
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // Individuals
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->




    <!-- http://www.welovethesemanticweb.com/recommendation-systems#Adele -->

    <owl:NamedIndividual rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#Adele">
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Artist"/>
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Singer"/>
        <recommendation-systems:fromEra rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#current"/>
    </owl:NamedIndividual>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#Beethoven -->

    <owl:NamedIndividual rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#Beethoven">
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Artist"/>
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Composer"/>
        <recommendation-systems:fromEra rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#classical"/>
    </owl:NamedIndividual>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#Dies_Irae -->

    <owl:NamedIndividual rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#Dies_Irae">
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Recommendable"/>
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Symphony"/>
        <recommendation-systems:composedBy rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Mozart"/>
        <recommendation-systems:hasArtist rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Mozart"/>
        <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Dies Irae</rdfs:label>
    </owl:NamedIndividual>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#Le_nozze_di_Figaro -->

    <owl:NamedIndividual rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#Le_nozze_di_Figaro">
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Recommendable"/>
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Symphony"/>
        <recommendation-systems:composedBy rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Mozart"/>
        <recommendation-systems:hasArtist rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Mozart"/>
        <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Le Nozze Di Digaro</rdfs:label>
    </owl:NamedIndividual>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#Mozart -->

    <owl:NamedIndividual rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#Mozart">
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Artist"/>
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Composer"/>
        <recommendation-systems:fromEra rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#classical"/>
    </owl:NamedIndividual>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#baroque -->

    <owl:NamedIndividual rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#baroque">
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#MusicalEra"/>
    </owl:NamedIndividual>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#classical -->

    <owl:NamedIndividual rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#classical">
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#MusicalEra"/>
    </owl:NamedIndividual>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#current -->

    <owl:NamedIndividual rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#current">
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#MusicalEra"/>
    </owl:NamedIndividual>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#romantic -->

    <owl:NamedIndividual rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#romantic">
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#MusicalEra"/>
    </owl:NamedIndividual>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#5th_Symphony -->

    <owl:NamedIndividual rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#5th_Symphony">
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Recommendable"/>
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Symphony"/>
        <recommendation-systems:composedBy rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Beethoven"/>
        <recommendation-systems:hasArtist rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Beethoven"/>
        <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">5th Symphony</rdfs:label>
    </owl:NamedIndividual>



    <!-- http://www.welovethesemanticweb.com/recommendation-systems#Requiem:_Sequentia -->

    <owl:NamedIndividual rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#Requiem:_Sequentia">
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Recommendable"/>
        <rdf:type rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Symphony"/>
        <recommendation-systems:composedBy rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Mozart"/>
        <recommendation-systems:hasArtist rdf:resource="http://www.welovethesemanticweb.com/recommendation-systems#Mozart"/>
        <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Requiem Sequentia</rdfs:label>
    </owl:NamedIndividual>



    <!-- 
    ///////////////////////////////////////////////////////////////////////////////////////
    //
    // General axioms
    //
    ///////////////////////////////////////////////////////////////////////////////////////
     -->

    <rdf:Description>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#AllDifferent"/>
        <owl:distinctMembers rdf:parseType="Collection">
            <rdf:Description rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#baroque"/>
            <rdf:Description rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#classical"/>
            <rdf:Description rdf:about="http://www.welovethesemanticweb.com/recommendation-systems#romantic"/>
        </owl:distinctMembers>
    </rdf:Description>
</rdf:RDF>



<!-- Generated by the OWL API (version 4.1.3.20151118-2017) https://github.com/owlcs/owlapi -->

When a class C is declared as a subclass of class D, you can infer that an instance of C is also an instance of D. However, that process of inference is something that you need a reasoner for. 当C类被声明为d类的子类,你可以推断出 C的实例也是D的一个实例。然而,推论的这个过程是你需要的东西推理 If you're not using a reasoner, you won't automatically get that result. 如果您没有使用推理器,则不会自动获得该结果。 In short, you're asking for a triple of the form 简而言之,你要求三倍的形式

?subject rdf:type owbes:Recommendable

but that's not in the data. 但这不在数据中。 What's in the data is two triples: 数据中有两个三元组:

?subject rdf:type owbes:Symphony  
owbes:Symphony rdfs:subClassOf owbes:Recommendable

In this case, you can actually get by using a SPARQL query with property paths; 在这种情况下,您实际上可以使用带有属性路径的SPARQL查询; you don't need a full reasoner. 你不需要一个完整的推理器。 You can use a query like this: 您可以使用如下查询:

select ?subject where {
    ?subject rdf:type/rdfs:subClassOf* owbes:Recommendable
}

This says to find subjects that have a type that's linked to owbes:Recommendable by a chain (possibly of length zero) of rdfs:subClassOf properties. 这表示找到具有链接到owbes的类型的主题:可以通过rdfs:subClassOf属性的链(可能长度为零)推荐。 In practice, that means to find ?subjects that are owbes:Recommendable or one of its subclasses. 在实践中,这意味着要找到属于owbes的主题:推荐或其子类之一。

For some more information, see: 有关更多信息,请参阅:

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM