Как я могу просмотреть визуальное графическое представление узлов, созданных из Java-приложения Neo4J? - PullRequest
0 голосов
/ 29 мая 2019

Я работаю с NEO4J и Java над созданием прототипа для приложения, которое объединяет графическую базу данных, в которой хранится информация о пациенте (с поддельными, составленными данными).

Я создал два простых классапрограмма и созданные узлы (еще не назначенные отношения).Тем не менее, я хочу иметь возможность просматривать созданные мной узлы, чтобы убедиться, что мое приложение работает должным образом, и видеть результаты на сервере браузера / сервера NEO4J.

Как я могу заставить узлы появляться визуально?Я знаю, что могу проверить тот факт, что они создаются, запросив их, но я также хочу знать, как их визуально отобразить.

То, что я пытался сделать, - это зайти в файл Neo4j.confи измените активную базу данных со значения по умолчанию "graph.db" на "Users / andrew / eclipse-workspace / Patient-Database / target / Patient-DB" , поскольку вJava-класс, который я создал, я использую эту строку кода для установки своей базы данных:

private static final File Patient_DB = new File("target/patient-db");

Однако всякий раз, когда я открываю браузер NEO4J по адресу localhost: 7474, после запуска моего кода узлы не видны.

Ниже я вставлю код в свой класс PatientGraph (другой класс - просто класс Patient, который создает пациентов и их атрибуты)

package com.andrewhe.neo4j.Patients_Database;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import org.neo4j.graphdb.Direction;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Path;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.graphdb.traversal.Evaluators;
import org.neo4j.graphdb.traversal.TraversalDescription;
import org.neo4j.graphdb.traversal.Traverser;
import org.neo4j.io.fs.FileUtils;

public class PatientGraph {
    private static final File Patient_DB = new File("target/patient-db");
    private ArrayList<Patient> patients = new ArrayList<Patient>();
    private long patientZero;
    private GraphDatabaseService graphDb;

    public ArrayList<Patient> getPatients() { return patients; }

    public void manualPatientSetUp() throws IOException {
        Patient homeNode = new Patient("");
        Patient jan = new Patient("Jan");
        patients.add(jan);
        Patient kim = new Patient("Kim");
        patients.add(kim);
        Patient ahmad = new Patient("Ahmad");
        patients.add(ahmad);
        Patient andrew = new Patient("Andrew");
        patients.add(andrew);
    }

    public void createPatientNodes() throws IOException {
        FileUtils.deleteRecursively(Patient_DB);
        graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(Patient_DB);
        registerShutdownHook();

        try (Transaction tx = graphDb.beginTx()) {
            for (Patient patient : patients) {
                Node patientNode = graphDb.createNode();
                System.out.println("Node created");
                setProperties(patientNode, patient);
            }
            tx.success();
        }
    }

    //Method to create and set properties for node instead of using 5 set properties each time.
    public void setProperties(Node node, Patient patient) {
        node.setProperty("name", patient.getName());
        node.setProperty("weight", patient.getWeight());
        node.setProperty("pat_id", new String(patient.getPatientID()));
        node.setProperty("age", patient.getAge());
        //Don't worry about diagnoses yet;
        //To get it to work, just turn the diagnoses ArrayList into a String separated by commas.
    }

    public void setUp() throws IOException {
        //reads in patients using a file
    }

    public void shutdown()
    {
        graphDb.shutdown();
    }

    private void registerShutdownHook()
    {
        // Registers a shutdown hook for the Neo4j instance so that it
        // shuts down nicely when the VM exits (even if you "Ctrl-C" the
        // running example before it's completed)
        Runtime.getRuntime().addShutdownHook(new Thread(() -> graphDb.shutdown()));
    }

    public static void main(String[] args) throws IOException {
        PatientGraph pg = new PatientGraph();

        pg.manualPatientSetUp();
        pg.createPatientNodes();
        for (int i = 0; i < pg.getPatients().size(); i++) {
            pg.getPatients().get(i).printAllData();
        }
        pg.shutdown();
    }
}

1 Ответ

0 голосов
/ 29 мая 2019

Вы не предоставили достаточной информации о том, как вы запрашиваете узлы. Вы даже не уточнили, что именно вы делаете в классах, прежде чем фактически вставить все содержимое класса. Каковы отношения между этими классами? Ожидание, что кто-то расшифрует это для вас из кода, требует слишком многого.

Вы можете использовать Neo4J Browser (поставляется встроенным) или Neo4J Bloom (коммерческий инструмент) для визуализации узлов графа и их взаимосвязей (отношений).

Для запроса к базе данных Neo4j вы можете использовать Cypher, язык запросов графических графов, который представляет шаблоны как Ascii Art.

Подробная практическая процедура запроса и визуализации узлов графиков приведена в статье ниже.

https://medium.com/neo4j/hands-on-graph-data-visualization-bd1f055a492d

...