如何使用SPARQL获取所有实体的dct:subject

时间:2017-04-25 09:59:07

标签: sparql semantic-web dbpedia

我使用以下查询

PREFIX  dct:  <http://purl.org/dc/terms/> 
SELECT ?subject WHERE { 
?concept rdfs:label 'Exoskeleton'@en ; 
         ^dct:subject ?subject . 
}  
ORDER BY ?subject

这并没有给我任何结果。但是,rdfs:label存在。 (见http://dbpedia.org/page/Exoskeleton。)

在使用其他标签查询时,它可以正常工作:

PREFIX  dct:  <http://purl.org/dc/terms/> 
SELECT ?subject WHERE { 
?concept rdfs:label 'Machine learning'@en ; 
         ^dct:subject ?subject . 
}  
ORDER BY ?subject

以上查询有效并给我结果。 (见http://dbpedia.org/page/Machine_learning。)

我该如何更改,以便第一个查询也有效?

2 个答案:

答案 0 :(得分:2)

dct:subject谓词用于页面及其所属的类别。因此,您的第二个查询会为您提供Category:Machine learning中的结果。但由于没有Category:Exoskeleton,因此您的第一个查询不会给您带来任何结果。这也意味着您喜欢的两个页面与您的查询无关。

我不知道如何更改第一个查询以使其有效,因为我不明白“工作”需要什么。

答案 1 :(得分:1)

魔鬼在细节中:

PREFIX  dct:  <http://purl.org/dc/terms/> 
SELECT ?concept WHERE { 
  ?concept rdfs:label 'Machine learning'@en. 
}  
ORDER BY ?concept

返回两个结果:

虽然Exoskeleton没有相应的概念:

因此,您的反向属性路径会在http://dbpedia.org/resource/Category:Machine_learning概念下查找资源,但不会在http://dbpedia.org/resource/Machine_learninghttp://dbpedia.org/resource/Exoskeleton页面下查找资源。

如果删除逆修改器,

PREFIX  dct:  <http://purl.org/dc/terms/> 
SELECT ?subject WHERE { 
?concept rdfs:label 'Exoskeleton'@en ; 
         dct:subject ?subject . 
}  
ORDER BY ?subject

Will return给定标签下的概念的类别(subject)。

相关问题