带有一个请求的DBPedia Sparql获取多个资源的链接

时间:2017-05-17 16:35:20

标签: sparql dbpedia

目前我正在为我对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}
}

我可以以某种方式获取链接,因此我可以确定它们属于哪个实体吗?

1 个答案:

答案 0 :(得分:2)

使用 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