SPARQL查询与Person相关的所有类的列表
我想做一个SPARQL查询,它返回与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
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))*