java - 词组之间的语义关系

标签 java sparql semantic-web dbpedia

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

假设我的数组列表包含3个单词,France,Paris,Europe 如何编写一个查询来返回 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.
  }
}

结果是:

screenshot of the results table

关于java - 词组之间的语义关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30256252/

相关文章:

java - 为什么不能在没有花括号的循环中将 int 分配给 Integer?

python - 如何在 Python 中解析和加载本体?

java - 使用 jena fusioni 服务器查询 rdf 文件时出现异常

java - 在耶拿复制 OWL 本体

rdf - 如何使用 SPARQL 获取 OWL 类的数据和对象属性?

semantic-web - 了解要使用的 RDFA 词汇

java - 标准 Hamcrest 匹配器检查集合是否为空或 null?

java - CompletableFuture.supplyAsync() 中 ForkJoinPool 的行为

java - 无法使用 Selenium(Java、Chrome WebDriver)单击按钮

database - RDF/Triple Stores 是否适合存储应用程序数据? (与图形元数据相反)