Как прочитать файл GraphML с помощью networkx в Python? - PullRequest
0 голосов
/ 14 июля 2020

Я новичок в networkx и Neo4j. Я импортировал базу данных графов в Neo4j с помощью «метода импорта», потому что это был огромный граф и его нельзя было загрузить. Теперь я хочу провести аналитику графов с помощью networkx. Итак, насколько я понял, мне нужно сделать следующие шаги:

  1. Экспорт графика в формате GraphML из Neo4j.
  2. Прочтите файл GraphML, используя networkx в Python.

При чтении файла GraphML я сталкиваюсь с такой ошибкой: Плохие данные GraphML: нет меток клавиш. Я открыл файл GraphML в блокноте и полагаю, что Neo4j создает неправильный файл GraphML. У меня только один узел, но он учитывает две ключевые метки для узлов.

ниже - фрагмент файла GraphML. Может ли кто-нибудь помочь мне с этим?

: locationPOINT (-87.9030396611 41.9790708201)

1 Ответ

0 голосов
/ 13 августа 2020

Похоже, это было проблемой какое-то время: https://github.com/neo4j-contrib/neo4j-apoc-procedures/issues/478.

Networkx жалуется на то, что у узла есть данные с ключевыми «метками», но есть Нет ключа с определенным идентификатором "label". Таким образом, исключение.

Чтобы этого избежать, у вас есть (как минимум) два варианта. Вы можете сделать так, как было предложено в проблеме, которую я связал, вставив это в верхний раздел файла graphML:

<key id="labels" for="node" attr.name="labels"/>

Другой вариант - установить формат «gephi» в конфигурации (показанной ниже). При этом тег данных, который ссылается на «метки», вместо этого ссылается на ключ «TYPE», который определен в ключевых тегах.

call apoc.export.graphml.all(<your-path>, {format:"gephi"})

Кроме того, при экспорте Neo4j по умолчанию networkx генерирует множество предупреждений, которые вы можете удалить, установив для useTypes значение true.

call apoc.export.graphml.all(<your-path>, {format:"gephi", useTypes:true})
...