词集之间的语义关系

Semantic relations between set of words

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

假设我的数组列表包含 3 个词,France,Paris,Europe 我如何编写查询 returns France-Paris 、Paris-Europe 和 France-Europe

之间的直接关系(或 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.
  }
}

结果是: