Анализ с помощью SPARQL - PullRequest
1 голос
/ 05 июня 2019

Я пытаюсь выполнить сравнительно простой анализ с конкретным графиком.

В 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, который будет принимать любой предикат.

...