我有一个存储在 AWS Neptune 上的图形数据库,我需要在 Jupyter IPython 笔记本中使用 gremlin 进行查询。我正在应用 Neptune ML 提供的图神经网络功能来执行链接预测任务。具体来说,我想预测“TYPE_X”的哪些节点与变量“id_variable”中保存的节点相关。
我的查询如下所示:
%%gremlin
g.with("Neptune#ml.endpoint","${endpoint}").
V(${id_variable}).
project('name', 'related to').
by('name').
by( out('RELATED_TO').with("Neptune#ml.prediction").
hasLabel('TYPE_X').values('name') ).
order(local).by(keys, desc)
返回以下输出:
{'name': 'AANAT', 'related to': 'WDR7'}
{'name': 'ACACA', 'related to': 'BTN1A1'}
{'name': 'ACTA1', 'related to': 'MDH'}
{'name': 'ALAS1', 'related to': 'WDR7'}
{'name': 'ALAS2', 'related to': 'TAC3'}
{'name': 'ALDH2', 'related to': 'SOCS2'}
{'name': 'ALDOA', 'related to': 'PRKAB2'}
{'name': 'AKR1B1', 'related to': 'ODF2L'}
{'name': 'ALOX15', 'related to': 'BMP15'}
我的问题是这个输出显示为嵌入在笔记本单元的输出中;但是,我想将其分配给变量或将其存储到文件中,例如作为 JSON。事实上,我无法使用 %%gremlin
单元魔术进行变量赋值,到目前为止我还没有找到任何方法将输出写入文件。
请注意,我无法通过 gremlin_python 库在正常的 .py 脚本中运行此查询,因为它似乎不支持 Neptune 的 ML 功能(具体来说,它会在 .with("Neptune#ml.endpoint","${endpoint}")
语法)。
欢迎任何建议!
提前谢谢您。
最佳答案
您尝试过使用 --store-to(或 -s)param – 指定用于存储查询结果的变量的名称。 ?
%%gremlin --store-to results
g.with("Neptune#ml.endpoint","${endpoint}").
V(${id_variable}).
project('name', 'related to').
by('name').
by( out('RELATED_TO').with("Neptune#ml.prediction").
hasLabel('TYPE_X').values('name') ).
order(local).by(keys, desc)
并检查下一个单元格中的结果变量
关于python - 在 IPython Notebook 中检索或存储 AWS Neptune ML 中的 Gremlin 查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74811145/