Inheritance sparql中超类对象的访问属性

Inheritance sparql中超类对象的访问属性,inheritance,sparql,dbpedia,Inheritance,Sparql,Dbpedia,我试图为我找到的对象获取超类上的属性 我有一份大学名单,可通过以下方式找到: 我知道大学是教育机构的一个子类,来自: University包含属性campus,这很有趣,但是EducationalInstitution包含属性locationCity,这是我真正想要的 虽然我可以获取属性校园,它直接是大学的属性,但当我尝试获取属性位置,它位于教育机构的父类上时,我得到了 返回父类属性的正确语法是什么 或者我的方法完全不正确,我应该先搜索教育机构哪里有财产大学 我也尝试过后者,但没有找到运

我试图为我找到的对象获取超类上的属性

我有一份大学名单,可通过以下方式找到:

我知道大学是教育机构的一个子类,来自:

University
包含属性
campus
,这很有趣,但是
EducationalInstitution
包含属性
locationCity
,这是我真正想要的

虽然我可以获取属性
校园
,它直接是
大学
的属性,但当我尝试获取属性
位置
,它位于
教育机构
的父类上时,我得到了

返回父类属性的正确语法是什么

或者我的方法完全不正确,我应该先搜索
教育机构
哪里有财产
大学

我也尝试过后者,但没有找到运气:

SELECT * WHERE {
   ?EducationalInstitution a dbpedia-owl:EducationalInstitution;
                           a dbpedia-owl:University.
   ?EducationalInstitution dbpedia-owl:locationCity ?City.
   }
ORDER BY ?University LIMIT 10
然而,寻找一个属于大学而不仅仅是教育机构的不同领域:


答案似乎是属性是location,而不是locationCity。

OWL本体(我们正在使用的)不是面向对象的编程语言。属性不属于类。当我们说一个属性P的域是一个类D时,这意味着当我们在属性上看到一个三元组,例如,xpy,我们可以推断X是一个D。这就是它的全部意思。当说locationCity是大学的一个属性时,我认为它的意思是locationCity的域是大学的一个超类,所以如果一所大学有locationCity,它不会不一致。我是基于简单的descripe查询
descripe dbpedia owl:locationCity
的结果,它有(注意locationCity的域是组织,组织是大学的超类):

在SPARQL中,您可以使用
a
作为
rdf:type
的缩写,当您有多个三元组与同一主题时,您可以将它们与
组合语法,因此我们可以使该查询看起来更漂亮,如下所示:

select ?university ?city where {
  ?university rdf:type dbpedia-owl:University ;
              dbpedia-owl:city ?city .
}

注意,我在这里使用的是
dbpediaowl:
属性。这些数据来自DBpedia本体,它的数据比原始的infobox数据(
dbpprop:
properties)干净得多。我在第五章中对此进行了更多的讨论

基于数据的查询实际上非常重要。正如您所看到的,虽然mappings wiki提到locationCity属性,但它实际上并未用于数据中的任何大学:

select ?university ?city where {
  ?university a dbpedia-owl:University ;
              dbpedia-owl:locationCity ?city .
}

您甚至可以使用SPARQL来找出什么
dbpedia owl:
属性被用于将大学与城市关联起来:

select distinct ?p where {
  ?university a dbpedia-owl:University ;
              ?p [ a dbpedia-owl:City ] .
  filter strstarts(str(?p),str(dbpedia-owl:))
}


现在还不清楚为什么会使用其中的一些(例如,总统或打字),但我可以看到其中一些可能会被使用,如果可能不正确的话(例如,州或省)。

如果没有更多的上下文,这是一个什么样的答案还不清楚。你能详细介绍一下吗?这解决了我所有的问题,甚至是一些我不知道的问题,并且非常好地介绍了我需要如何改变我的想法,以便更好地使用sparql。非常感谢你。
@prefix rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dbpedia-owl:    <http://dbpedia.org/ontology/> .
@prefix owl:    <http://www.w3.org/2002/07/owl#> .
@prefix rdfs:   <http://www.w3.org/2000/01/rdf-schema#> .

dbpedia-owl:locationCity
    rdf:type    owl:ObjectProperty ;
    rdfs:domain dbpedia-owl:Organisation ;
    rdfs:range  dbpedia-owl:City ;
    rdfs:label  "locatie stad"@nl , "ville"@fr , "location city"@en ;
    rdfs:comment    "City the thing is located."@en .
select ?university ?city where {
  ?university rdf:type dbpedia-owl:University .
  ?university dbpedia-owl:city ?city .
}
select ?university ?city where {
  ?university rdf:type dbpedia-owl:University ;
              dbpedia-owl:city ?city .
}
select ?university ?city where {
  ?university a dbpedia-owl:University ;
              dbpedia-owl:locationCity ?city .
}
select distinct ?p where {
  ?university a dbpedia-owl:University ;
              ?p [ a dbpedia-owl:City ] .
  filter strstarts(str(?p),str(dbpedia-owl:))
}
p
-------------------------------------------------
http://dbpedia.org/ontology/city
http://dbpedia.org/ontology/campus
http://dbpedia.org/ontology/state
http://dbpedia.org/ontology/affiliation
http://dbpedia.org/ontology/province
http://dbpedia.org/ontology/country
http://dbpedia.org/ontology/location
http://dbpedia.org/ontology/wikiPageRedirects
http://dbpedia.org/ontology/wikiPageDisambiguates
http://dbpedia.org/ontology/president
http://dbpedia.org/ontology/type