Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SPARQL查询与Person相关的所有类的列表_Sparql_Semantic Web_Ontology_Dbpedia_Rdfs - Fatal编程技术网

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

SPARQL查询与Person相关的所有类的列表,sparql,semantic-web,ontology,dbpedia,rdfs,Sparql,Semantic Web,Ontology,Dbpedia,Rdfs,我想做一个SPARQL查询,它返回与Person相关的所有本体类/属性的列表。例如,像Person 或者拥有Person 例如,结果如“http://dbpedia.org/ontology/OfficeHolder“&”http://dbpedia.org/ontology/Astronaut“应该由查询返回,因为第一个是rdfs:domainPerson,而第二个是rdfs:subassofPerson 以下是我写的问题: PREFIX rdf: <http://www.w3.or

我想做一个SPARQL查询,它返回与
Person
相关的所有本体类/属性的列表。例如,像
Person

或者拥有
Person

例如,结果如
“http://dbpedia.org/ontology/OfficeHolder“
&
”http://dbpedia.org/ontology/Astronaut“
应该由查询返回,因为第一个是
rdfs:domain
Person,而第二个是
rdfs:subassof
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 .
    }
}
前缀rdf:
前缀owl:
前缀rdfs:
前缀dbo:
选择不同的
在哪里{
{
?s rdfs:域dbo:个人。
}
联盟
{
?s rdfs:范围dbo:人。
}
联盟
{
?s rdfs:dbo子类:人员。
}
}
现在,这个查询返回一个所有类的列表,这些类在其属性中显式地提到了
Person
,但遗漏了类,如
Singer
,它是Person域中的
MusicalArtist
的子类


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

看起来,你把类和属性搞混了。。。仔细阅读,它很短

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

前缀rdf:
前缀owl:
前缀rdfs:
前缀dbo:
选择不同的p?s位置
{
{
?s(rdfs:subpertyof | owl:equalityProperty | ^owl:equalityProperty)*/
rdfs:域/
(rdfs:子类| owl:等效类| ^owl:等效类)*
dbo:个人。
绑定(rdfs:域为?p)
}
联合
{
?s(rdfs:subpertyof | owl:equalityProperty | ^owl:equalityProperty)*/
rdfs:范围/
(rdfs:子类| owl:等效类| ^owl:等效类)*
dbo:个人。
绑定(rdfs:范围为?p)
}
联合
{
?s(rdfs:子类| owl:等效类| ^owl:等效类)*
dbo:个人。
绑定(rdfs:AS?p子类)
}
#过滤器(STRSTARTS(STR(?s),”http://dbpedia.org/"))
}

dbo:OfficeHolder
不是一个属性,它没有
rdfs:domain
。谢谢,这正是我要找的!!:):)@StanislavKrlain:为了获得更完整的解决方案,还必须对
owl:equivalentProperty
owl:equivalentClass
使用逆运算符
^
,因为它们是对称的,但通常KB中只包含一个方向。即
(rdfs:subassof |(owl:equivalentClass | ^owl:equivalentClass))*