我需要找到 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
在这里,我想找到视频和视频游戏之间的路径长度。但它给出的错误如下:
">}"之前的"dbo:VideoGame"处的语法错误
谁能帮忙写正确的?
错误消息可能具有误导性。 我看到的一个问题是你不能选择常量,只能选择变量。 您可以尝试一些绑定语句将它们转换为变量:
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