Мне нужно найти длину пути между любыми двумя узлами графа Dbpedia, если между ними существует какая-либо связь. В этот момент мне известны только начальные и конечные узлы, а связанные пути свойств неизвестны. Таким образом, я пытаюсь написать SPARQL запрос типа:Найти длину пути между двумя узлами сети граф Dbpedia, не зная путь базового свойства
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
Здесь я хочу найти длину пути между Видео и видеоигру. Но он дает ошибку, например:
syntax error at 'dbo:VideoGame' before '}'
Может кто-нибудь помочь написать правильный?
Теперь он дает другую ошибку: ** Виртуоз TN 42000 Ошибка ...: Превышен 1000000000 байт в транзитивной временную память. используйте t_distinct, t_max или больше параметров T_MAX_memory, чтобы ограничить поиск или увеличить пул ** –
Когда я пытаюсь запустить этот запрос с https://dbpedia.org/sparql, он дает ошибку: ** Virtuoso 37000 Error SP031 : SPARQL-компилятор: список возвращаемых значений содержит '*', но шаблон не содержит переменных **. Может ли кто-нибудь помочь? –
Вы можете попробовать использовать LIMIT для предотвращения превышения байта. Что касается ошибки Virtuoso, вы можете проверить ее у поставщика. – scotthenninger