2013-07-18 2 views
0

이 질문은 Neo4django의 github issue과 관련됩니다. 장고 웹 프레임 워크의 Neo4j 그래프 DB를 이용하여 여러 개의 그래프를 생성하고 싶습니다. 장고 1.4.5, neo4j 1.9.2 및 neo4django 0.1.8을 사용하고 있습니다.Neo4django를 사용하여 Neo4j 데이터베이스에 레이블 지정

현재 Neo4django는 라벨링을 지원하지 않지만 위의 내용이 내 핵심 목적이며 Neo4django에서 라벨을 만들 수 있기를 원합니다. 그래서 나는 소스 코드에 들어가서이 코드를 추가 할 수 있는지보기 위해 약간 수정하려고 시도했다. 내 이해에서, 'db/models/properties.py'파일에는 함수 을 통해 gremlin 스크립트를 호출하는 클래스 BoundProperty (AttrRouter)가 있습니다. (instance, node, node_is_new)을 저장하십시오. 스크립트는 다음과 같습니다 :

script = ''' 
    node=g.v(nodeId); 
    results = Neo4Django.updateNodeProperties(node, propMap); 
    ''' 

스크립트는 library.groovy에서 업데이트 기능을 호출하며 모든 기능은 직관적이며 멋지게 보입니다. 나는 라벨링을 지원하기 위해이 기능을 추가하려고 노력하고 있지만 그루비의 경험은 없다. 누구든지 진행 방법에 대한 제안이 있습니까? 어떤 도움을 주시면 감사하겠습니다. 그것이 작동하는 경우는 큰 또한이 neo4django하는 것입니다 :)

당신에게

+0

Neo4j 2.0M03으로 전환 하시겠습니까? 1.9.2는 라벨을 지원하지 않습니다. –

+0

실험을 위해 Neo4j 2.0M03으로 업그레이드했습니다. 우리 제품이 생산 준비가되기까지는 안정 버전 2.0이 출시되기를 바랍니다. 포인터를 가져 주셔서 감사합니다 :) –

+0

방금 ​​라이브러리의 다음 릴리스를 지원하기위한 캠페인을 시작했습니다. 라벨은 스트레치 목표 목록에 있습니다. https://www.bountysource.com/fundraisers/423-neo4django-0-1-9에서 확인해보세요. –

답변

1

약간의 배경 감사합니다

당신이 Neo4j 그렘린 플러그인을 사용하여 실행 강조했습니다 Groovy는 코드입니다. 먼저 Groovy 언어 위에 구현 된 Gremlin graph DSL (예 : node=g.v(nodeId))을 지원합니다. Groovy 자체는 Java의 동적 수퍼 집합이므로 대부분의 유효한 Java 코드는 connection.gremlin(...)을 통해 전송 된 스크립트에서 작동합니다. 전송 된 각 스크립트는 null인데도 neo4django로 반환 될 results 변수를 정의해야합니다.

어쨌든,이 방법이 편리 Neo4j에 접근하면 전체 Neo4j embeddeded Java API를 사용할 수 있기 때문에 (비록 내가 :(들었어요 더 이상 사용되지 않습니다). 노드

from neo4django.db import connection 
connection.gremlin(""" 
node = g.v(nodeId) 
label = DynamicLabel.label('Label_Name') 
node.rawVertex.addLabel(label) 
""", nodeId=node_id) 

에 레이블을 추가하려면이 같은 시도 DynamicLabel에 대한 가져 오기를 추가해야 할 수도 있습니다. 잘 모르겠지만이 코드를 실행하지 않았습니다.이 방법으로 작성된 디버깅 코드는 약간 어렵 기 때문에 Neo4j 관리자의 Gremlin 탭을 자유롭게 사용하십시오.

실용적인 해결책을 생각해 보면, 나는 그것을 (또는 설명적인 블로그 포스트!)보고 싶다. 도움이 될 것이라고 확신한다. ful을 다른 사용자에게 제공합니다.

HTH!

NB - 레이블은 Neo4j 2.0 출시 이후 곧바로 지원 될 예정입니다. 현재 레이블 형식 구조를 대체 할 것입니다.

관련 문제