Я пытаюсь выполнить сравнительно простой анализ с конкретным графиком.
В Marklogic SPARQL создаются пути со следующими шаблонами
path+ (one or more duplicate path links)
path* (zero or more duplicate path links)
path? (zero or one path link)
path1/path2 (traversing through 2 different links)
Отсюда один анализ, который я хотел бы выполнить, - это поиск всех узлов, которые удовлетворяют определенному условию между узлом X и узлом Y. На основании этого мой запрос будет выглядеть примерно так:
?nodeX <nodeID> 1
?nodeY <nodeID> 250
?nodeX <nodeLink>* ?nodeY
Что на самом деле не кажется мне правильным, так как я не думаю, что это позволяет мне получить путь, связывающий узел X с узлом Y.
Я также хотел бы знать, можно ли делать такие вещи, как
Betweeness centrality
, который является мерой количества раз, когда найдена вершина между кратчайшим путем каждой пары вершин в графе.
Closeness centrality
, который является мерой расстояния одной вершины до всех других достижимых вершин в графе.
== Обновление ==
По предложению мне удалось получить путь, используя следующий запрос.
?nodeX <nodeID> "1"
?nodeY <nodeID> "250"
?nodeX <nodeLink>* ?v
?v ?p ?u
?u <nodeLink>* ?nodeY
Когда я попытался сделать <p> | !<p>
в моем запросе, произошла ошибка, и указание !
не было допустимым выражением. Тем не менее, я считаю, что я все еще могу сделать то же самое, используя ?path
, который будет принимать любой предикат.