单词集之间的语义关系

时间:2015-05-15 09:42:49

标签: java sparql semantic-web dbpedia

如果我有一组存储在arraylist中的单词(DBpedia资源) 如何构建SPARQL查询以查找这些术语之间所有可能的直接间接关系? 主要问题是我不知道我搜索的关系类型是什么。

假设我的arraylist包含3个单词,法国,巴黎,欧洲 如何编写一个返回法国 - 巴黎,巴黎 - 欧洲和法国 - 欧洲之间直接关系(或2跳的间接关系)的查询

希望我清理我正在寻找的东西

1 个答案:

答案 0 :(得分:2)

您可以做的是使用VALUES将变量设置为您的资源集,但是对于关系的每一端都执行两次。然后使用变量作为谓词来查找关系。类似的东西:

SELECT ?resource1 ?p1 ?intermediary ?p2 ?resource2
WHERE
{
  VALUES ?resource1 { :Paris :France :Europe }
  VALUES ?resource2 { :Paris :France :Europe }
  FILTER(?resource1 != ?resource2)

  {
    ?resource1 ?p1 ?resource2
  }
  UNION
  {
    ?resource1 ?p1 ?intermediary.
    ?intermediary ?p2 ?resource2.
  }
}

结果是:

screenshot of the results table