在不知道底层属性路径的情况下,在Dbpedia图网络的两个节点之间查找路径长度

时间:2017-02-08 14:13:55

标签: sparql dbpedia

我需要找到Dbpedia图的任意两个节点之间的路径长度,如果它们之间存在任何连接。此时,我只知道起始节点和结束节点,并且连接的属性路径未知。所以,我正在尝试编写SPARQL查询,如:

PREFIX dbo:<http://dbpedia.org/ontology/>
PREFIX dbp:<http://dbpedia.org/property/>

select dbp:Video dbo:VideoGame (count(?mid) as ?length) 
where {
  dbp:Video (<>|!<>)* ?mid .
  ?mid (<>|!<>)+ dbo:VideoGame .
}
group by dbp:Video dbo:VideoGame

在这里,我想找到视频 VideoGame 之间的路径长度。但它给出的错误如下:

  在'}'

之前'dbo:VideoGame'的

语法错误

任何人都可以帮忙写出正确的吗?

1 个答案:

答案 0 :(得分:2)

错误消息可能会产生误导。我看到的一个问题是你不能选择常数,只能选择变量。您可以尝试使用一些绑定语句将它们转换为变量:

PREFIX dbo:<http://dbpedia.org/ontology/>
PREFIX dbp:<http://dbpedia.org/property/>

select ?vid ?vidGame (count(?mid) as ?length) 
where {
  BIND(dbp:Video AS ?vid)
  BIND(dbo:VideoGame AS ?vidGame)
  ?vid (<>|!<>)* ?mid .
  ?mid (<>|!<>)+ ?vidGame .
}
group by ?vid ?vidGame