javascriptneo4jcypherneovis

Fetching properties through cypher query


I am trying to fetch properties of below Json using cypher query which is embeded in neovis javascript. The issue is that entity names for nodes are not appearing.

JSON

{
  "start": {
"identity": 0,
"labels": [
      "Entity"
    ],
"properties": {
"text": "Christian Drosten",
"id": "Q1079331"
    }
  },
  "end": {
"identity": 3,
"labels": [
      "Entity"
    ],
"properties": {
"id": "Q95",
"text": "Google"
    }
  },
  "segments": [
    {
      "start": {
"identity": 0,
"labels": [
          "Entity"
        ],
"properties": {
"text": "Christian Drosten",
"id": "Q1079331"
        }
      },
      "relationship": {
"identity": 1,
"start": 0,
"end": 3,
"type": "EMPLOYER",
"properties": {

        }
      },
      "end": {
"identity": 3,
"labels": [
          "Entity"
        ],
"properties": {
"id": "Q95",
"text": "Google"
        }
      }
    }
  ],
  "length": 1.0
}

HTML code with Neovis and cypher-query

<!doctype html>
<html>
<head>
    <title>Neovis.js Simple Example</title>
    <style type="text/css">
        html, body {
            font: 16pt arial;
        }

        #viz {
            width: 900px;
            height: 700px;
            border: 1px solid lightgray;
            font: 22pt arial;
        }

    </style>

    <!-- FIXME: load from dist -->
    <script type="text/javascript" src="https://cdn.neo4jlabs.com/neovis.js/master/neovis.js"></script>


    <script
            src="https://code.jquery.com/jquery-3.2.1.min.js"
            integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
            crossorigin="anonymous"></script>

    <script type="text/javascript">
        // define config car
        // instantiate nodevis object
        // draw

        var viz;

        function draw() {
            var config = {
                container_id: "viz",
                server_url: "bolt://localhost:7687",
                server_user: "neo4j",
                server_password: "password",

                 relationships: {
                    "EMPLOYER": {
                        "caption": true
                    }
                },
                initial_cypher: "MATCH p=(n)-[r:EMPLOYER]->(m) RETURN p",
                arrows: false
            };

            viz = new NeoVis.default(config);
            viz.render();
            console.log(viz);

        }
    </script>
</head>
<body onload="draw()">
<div id="viz"></div>


Cypher query: <textarea rows="4" cols=50 id="cypher"></textarea><br>
<input type="submit" value="Submit" id="reload">


</body>

<script>
    $("#reload").click(function() {

        var cypher = $("#cypher").val();

        if (cypher.length > 3) {
            viz.renderWithCypher(cypher);
        } else {
            console.log("reload");
            viz.reload();

        }

    });

</script>
</html>

Current Output

enter image description here

Expected Output

Instead of Entity I would like to see actual names tagged to nodes i.e. Christian Drosten and Google


Solution

  • If I understood your question well, you need to add the following to your neoviz configuration:

    labels: {
        "Entity": {
             "caption": "name",
        }
    }
    

    See doc here.