DBpedia中的SPARQL子查询

时间:2015-05-30 22:11:48

标签: sparql dbpedia

我想过滤在查询中用作“join”的资源。 例如,给定DBpedia资源,我需要返回由sameAs属性链接的资源标签,并在其URI中包含“pt”。我使用以下查询:

SELECT ?label
{ <http://dbpedia.org/resource/Category:Algorithms> owl:sameAs ?nomePT.
   ?nomePT rdfs:label ?label
    FILTER regex(str(?nomePT), "pt", "i") 
}

但是,它返回空,因为变量“?NomePT”始终包含列表中的第一个资源。见:

SELECT ?nomePT
{ <http://dbpedia.org/resource/Category:Algorithms> owl:sameAs ?nomePT.
   ?nomePT rdfs:label ?label
}

但资源有几个相同的链接:

SELECT ?nomePT
{ <http://dbpedia.org/resource/Category:Algorithms> owl:sameAs ?nomePT.}

查询中有什么问题?

提前感谢。

1 个答案:

答案 0 :(得分:0)

如果您编写查询:

(valid bit): 2^22*(10 + 1)

您将获得SELECT distinct * { ?nomePT owl:sameAs category:Algorithms. } 资源owl:sameAs的所有链接。但是,您已经限制了三联的范围。所以,如果你要求:

category:Algorithms

enter image description here

如果首先找到您的特定资源,然后仅查找该资源的标签。但是,如果您在开始时没有绑定三元组,只过滤您的资源将为您提供所需的所有链接:

SELECT distinct ?nomePT {
    ?nomePT owl:sameAs category:Algorithms.
    ?nomePT rdfs:label ?label
}

enter image description here

因此,您应首先找到所有资源,然后根据特定资源(例如SELECT distinct ?resource { ?nomePT owl:sameAs ?resource. ?nomePT rdfs:label ?label. filter( ?nomePT=category:Algorithms ) } )过滤它们,因为sameAs是自反的:

category:Algorithms

enter image description here