繁体   English   中英

SPARQL查询与Person相关的所有类的列表

[英]SPARQL Query for list of ALL Classes related to Person

我想创建一个SPARQL查询,它返回与Person相关的所有Ontology类/属性的列表。 例如,像Person的子类(派生自)

<rdfs:subClassOf rdf:resource="http://dbpedia.org/ontology/Person"/>

或拥有域/范围的Person

<rdfs:domain rdf:resource="http://dbpedia.org/ontology/Person"/>

例如,查询应返回"http://dbpedia.org/ontology/OfficeHolder""http://dbpedia.org/ontology/Astronaut"等结果,因为第一个结果有rdfs:domain Person第二个是rdfs:subClassOf Person。

这是我写的查询:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>

select distinct ?s
where {
    {
        ?s rdfs:domain dbo:Person .
    }
union
    {
        ?s rdfs:range dbo:Person .
    }
union
    {
        ?s rdfs:subClassOf dbo:Person .
    }
}

现在,此查询返回在其属性中明确提及Person的所有类的列表,但是错过了像Singer这样的类,它是MusicalArtist的子类,位于Person的域中。

我想要一个查询列出所有这些类/属性,直接或通过“继承”列出与Person相关的类。 有什么建议么?

看来,你把类与属性混淆了......仔细阅读RDFS 1.1 ,它很简短。

如果要检索“与” dbo:Person相关的类和属性dbo:Person ,请使用属性路径

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>

SELECT DISTINCT ?p ?s WHERE
{
    {
    ?s (rdfs:subPropertyOf|owl:equivalentProperty|^owl:equivalentProperty)*/
        rdfs:domain/
       (rdfs:subClassOf|owl:equivalentClass|^owl:equivalentClass)*
    dbo:Person .
    BIND (rdfs:domain AS ?p)
    }
    UNION
    {
    ?s (rdfs:subPropertyOf|owl:equivalentProperty|^owl:equivalentProperty)*/
        rdfs:range/
       (rdfs:subClassOf|owl:equivalentClass|^owl:equivalentClass)*
    dbo:Person .
    BIND (rdfs:range AS ?p)
    }
    UNION
    {
    ?s (rdfs:subClassOf|owl:equivalentClass|^owl:equivalentClass)*
    dbo:Person .
    BIND (rdfs:subClassOf AS ?p)
    }
  # FILTER (STRSTARTS(STR(?s), "http://dbpedia.org/"))
}

暂无
暂无

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

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