2015-03-06 2 views
1

Я разрабатываю веб-приложение, которое визуально отображает данные от Neo4J. Вот мой текущий аннотаций:Создать neo4j график с атрибутами

CREATE (diseasedataset:Dataset { title: 'Disease Dataset', description: 'Dataset about diseases and mapping to cytogenetic location', creator: 'Zach'}) 
CREATE (diseasedata:Table { title: 'Disease', represents: 'mesh:Disease'}) 
CREATE (diseasedata)-[:BELONGS_TO]->(diseasedataset) 
    CREATE (diseaseid:Column { title: 'ID', columntype: 'Property', semanticrelation: 'dct:identifier'}) 
    CREATE (diseaseid)-[:BELONGS_TO]->(diseasedata) 
    CREATE (diseasename:Column { title: 'Name', columntype: 'Property', semanticrelation: 'skos:preferredLabel'}) 
    CREATE (diseasename)-[:BELONGS_TO]->(diseasedata) 
    CREATE (diseasedesc:Column { title: 'Descriptions', columntype: 'Property', semanticrelation: 'dct:description'}) 
    CREATE (diseasedesc)-[:BELONGS_TO]->(diseasedata) 
    CREATE (diseasesymp:Column { title: 'Symptoms', columntype: 'Class', represents: 'mesh:Symptom', semanticrelation: 'syo:Symptom'}) 
    CREATE (diseasedesc)-[:BELONGS_TO]->(diseasedata) 

Как создать таблицу (с использованием Cypher запроса), что для каждой строки есть [Колонка] и набор атрибутов для каждого столбца. Это особенно сложно, потому что не каждый столбец имеет одинаковые атрибуты. Например:

Ряд | Колонка | Атрибуты

1 | dieseaseId | title, columnType, semanticRelation

2 | болезни | название, columnType, представляет собой, semanticRelation

3 (и т.д.). ...

Является ли их интуитивный способ сделать это? Я относительно новичок в Neo4j и Cypher, и не смог найти ничего подобного в Интернете или через документацию. Спасибо за ваше время и любые советы!

+0

Я думаю, что вы хотели последнюю строку вашего создания, чтобы быть 'CREATE (diseaseymp) - [: BELONGS_TO] -> (diseasedata)'? –

+0

@DaveBennett, вы правы. Спасибо, что привлекли это к моему вниманию! – user3547551

+0

I см. последний столбец - коллекция переменной длины. Число возможных свойств в узлах «Столбцы» хотя бы несколько конечное, даже если они являются переменными? –

ответ

1

Я не уверен, что вы можете сделать это с помощью одного запроса cypher. Вам может потребоваться сначала вернуть ключи, а затем сгенерировать запрос, который получит эти ключи. Для того, чтобы получить ключи, вы можете вернуть все данные, или в Neo4j 2.2.0 (еще в релиз-кандидате, но, надеюсь, в ближайшее время), вы можете сделать это:

MATCH n UNWIND keys(n) AS key RETURN DISTINCT key 

Это вернет вам список по уникальной . клавиши, которые находятся на узлах, которые вы укажете (здесь я делаю MATCH n, который соответствует всем узлам Тогда вы можете создать запрос, который делает что-то вроде:

MATCH n RETURN n.key1, n.key2, n.key3, .... 
Смежные вопросы