DBPedia Sparql 一次请求获取多个资源的链接
DBPedia Sparql with one request get links for multiple resources
目前我正在为每个实体做我对 sparql 端点的单个请求以获取它的所有链接,例如
SELECT * WHERE {
{<http://dbpedia.org/resource/San_Francisco> rdf:type ?link}
}
我想让它更有效率,我想知道是否有一种方法可以通过一个请求获取多个实体的链接。我把一些东西放在一起,但这给了我一个包含所有链接的大列表。
SELECT * WHERE {
{<http://dbpedia.org/resource/San_Francisco> rdf:type ?link}
UNION
{<http://dbpedia.org/resource/Silicon_Valley> rdf:type ?link}
}
我能否以某种方式获取链接,以便识别它们属于哪个实体?
您可以使用 SPARQL 1.1 values
关键字更加简洁:
SELECT *
WHERE
{ VALUES ?entity { <http://dbpedia.org/resource/San_Francisco>
<http://dbpedia.org/resource/Silicon_Valley> }
?entity rdf:type ?link
}
你想要一个不同的列表吗?也许对列表进行排序并添加英文标签(如果可用)?
SELECT DISTINCT ?link ?llab
WHERE
{ VALUES ?entity { <http://dbpedia.org/resource/San_Francisco>
<http://dbpedia.org/resource/Silicon_Valley> }
?entity rdf:type ?link
OPTIONAL
{ ?link rdfs:label ?llab
FILTER ( lang(?llab) = "en" )
}
}
ORDER BY ?link
目前我正在为每个实体做我对 sparql 端点的单个请求以获取它的所有链接,例如
SELECT * WHERE {
{<http://dbpedia.org/resource/San_Francisco> rdf:type ?link}
}
我想让它更有效率,我想知道是否有一种方法可以通过一个请求获取多个实体的链接。我把一些东西放在一起,但这给了我一个包含所有链接的大列表。
SELECT * WHERE {
{<http://dbpedia.org/resource/San_Francisco> rdf:type ?link}
UNION
{<http://dbpedia.org/resource/Silicon_Valley> rdf:type ?link}
}
我能否以某种方式获取链接,以便识别它们属于哪个实体?
您可以使用 SPARQL 1.1 values
关键字更加简洁:
SELECT *
WHERE
{ VALUES ?entity { <http://dbpedia.org/resource/San_Francisco>
<http://dbpedia.org/resource/Silicon_Valley> }
?entity rdf:type ?link
}
你想要一个不同的列表吗?也许对列表进行排序并添加英文标签(如果可用)?
SELECT DISTINCT ?link ?llab
WHERE
{ VALUES ?entity { <http://dbpedia.org/resource/San_Francisco>
<http://dbpedia.org/resource/Silicon_Valley> }
?entity rdf:type ?link
OPTIONAL
{ ?link rdfs:label ?llab
FILTER ( lang(?llab) = "en" )
}
}
ORDER BY ?link