def _get_node_properties(query: str, n_labels: List[str], types: Dict) -> List:
    """Get the node properties for the label."""
    node_properties_query = """
        MATCH (a:`{n_label}`)
        RETURN properties(a) AS props
        LIMIT 100
        """
    node_properties = []
    for label in n_labels:
        q = node_properties_query.format(n_label=label)
        data = {"label": label, "properties": query(q)}
        s = set({})
        for p in data["properties"]:
            for k, v in p["props"].items():
                data_type = types[type(v).__name__]
                if types[type(v).__name__] == "STRING":
                    try:
                        if bool(parser.parse(v)):
                            data_type = "DATETIME"
                        else:
                            data_type = "STRING"
                    except (ValueError, OverflowError):
                        data_type = "STRING"
                s.add((k, data_type))

        np = {
            "properties": [{"property": k, "type": v} for k, v in s],
            "labels": label,
        }
        node_properties.append(np)

    return node_properties
Get the node properties for the label.
llama-index-integrations/graph_stores/llama-index-graph-stores-neptune/llama_index/graph_stores/neptune/neptune.py