使用 SPARQL 过滤 DBpedia 结果和 return 特定结果的最佳方法
Best way to filter DBpedia results and return a specific results using SPARQL
我有点问题...
从维基百科页面 ID 列表中,我想 return:
- 页码
- 摘要(英文)
- 缩略图
- 类型
仅限公司或大学页面
我有这个简单的 SPARQL 查询:
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
select ?pageid ?abstract ?thumbnail ?company ?type
where {
?resource dbpedia-owl:wikiPageID ?pageid;
dbpedia-owl:abstract ?abstract
. OPTIONAL {
?resource dbpedia-owl:thumbnail ?thumbnail
}
. OPTIONAL {
?resource dbpedia-owl:type ?type
}
. OPTIONAL {
?resource ?company dbpedia-owl:Company
}
FILTER(
?pageid = 14617 || ?pageid = 26989 || ?pageid = 31776 ||
?pageid = 256913 || ?pageid = 342924 || ?pageid = 1785141 ||
?pageid = 3057187 || ?pageid = 7529378 || ?pageid = 18978754
)
FILTER(langMatches(lang(?abstract),"en"))
}
我有这个结果:SPARQL Result
我设法 return 我想要的数据,但我不能只过滤那些公司和大学。
有没有关于如何删除 dbpedia 查询结果中不是公司或大学的页面的想法?
@AKSW 提供了一个查询,可以执行您想要的操作,但我认为最好对原因进行更详细的解释。所以,这是那个查询,有一堆空格和一些内联注释来帮助澄清 --
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?pageid ?abstract ?thumbnail ?type
WHERE
{
# the next couple lines limit rdf:type values
VALUES ?type
{ dbo:Company dbo:University }
# the next few lines limit dbo:wikiPageID values
VALUES ?pageid
{ 14617 26989 31776
256913 342924 1785141
3057187 7529378 18978754 }
# the next few lines get values for the 3 predicates
# you required for each subject
?resource dbo:wikiPageID ?pageid ;
rdf:type ?type ;
dbo:abstract ?abstract .
# the next line gets thumbnails, if they exist
OPTIONAL { ?resource dbo:thumbnail ?thumbnail }
# the next line limits the solutions you receive to those
# with an abstract langtagged as "en"
FILTER ( langMatches ( lang ( ?abstract ), "en" ) )
}
我有点问题...
从维基百科页面 ID 列表中,我想 return:
- 页码
- 摘要(英文)
- 缩略图
- 类型
仅限公司或大学页面
我有这个简单的 SPARQL 查询:
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
select ?pageid ?abstract ?thumbnail ?company ?type
where {
?resource dbpedia-owl:wikiPageID ?pageid;
dbpedia-owl:abstract ?abstract
. OPTIONAL {
?resource dbpedia-owl:thumbnail ?thumbnail
}
. OPTIONAL {
?resource dbpedia-owl:type ?type
}
. OPTIONAL {
?resource ?company dbpedia-owl:Company
}
FILTER(
?pageid = 14617 || ?pageid = 26989 || ?pageid = 31776 ||
?pageid = 256913 || ?pageid = 342924 || ?pageid = 1785141 ||
?pageid = 3057187 || ?pageid = 7529378 || ?pageid = 18978754
)
FILTER(langMatches(lang(?abstract),"en"))
}
我有这个结果:SPARQL Result
我设法 return 我想要的数据,但我不能只过滤那些公司和大学。
有没有关于如何删除 dbpedia 查询结果中不是公司或大学的页面的想法?
@AKSW 提供了一个查询,可以执行您想要的操作,但我认为最好对原因进行更详细的解释。所以,这是那个查询,有一堆空格和一些内联注释来帮助澄清 --
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?pageid ?abstract ?thumbnail ?type
WHERE
{
# the next couple lines limit rdf:type values
VALUES ?type
{ dbo:Company dbo:University }
# the next few lines limit dbo:wikiPageID values
VALUES ?pageid
{ 14617 26989 31776
256913 342924 1785141
3057187 7529378 18978754 }
# the next few lines get values for the 3 predicates
# you required for each subject
?resource dbo:wikiPageID ?pageid ;
rdf:type ?type ;
dbo:abstract ?abstract .
# the next line gets thumbnails, if they exist
OPTIONAL { ?resource dbo:thumbnail ?thumbnail }
# the next line limits the solutions you receive to those
# with an abstract langtagged as "en"
FILTER ( langMatches ( lang ( ?abstract ), "en" ) )
}