知识图谱操作(二)Neo4j -设计基础SQL(CYPHER查询)

Expand:将一个实体扩张至该节点所有相关的实体集

    def expand(self, entity_name):
        query = (
            "MATCH (a:Entity {name: $entity_name})-[r]->(b:Entity) "
            "RETURN b AS child,r.type AS relation_type"
        )
        with self.driver.session() as session:
            result = session.run(query, entity_name=entity_name)
            linked_nodes = []

            for record in result:
                if record["child"].id is not None and record["child"].id != '':
                    linked_nodes.append(
                        {
                            "id": record["child"].id,
                            "name": record["child"]["name"],
                            "type": record["relation_type"],
                        }
                    )
            return linked_nodes

Describe:返回该实体的所有描述(Description)

    def describe(self, entity_name):
        query = (
            "MATCH (a:Entity {name: $entity_name})-[r]->(b:Description) "
            "RETURN b AS des,r.type AS relation_type"
        )
        with self.driver.session() as session:
            result = session.run(query, entity_name=entity_name)

            types = []
            descriptions = []
            for record in result:
                now_type = record["relation_type"]
                if now_type not in types:
                    matched = []
                    types.append(now_type)
                    for flag in result:
                        if flag["relation_type"] == now_type:
                            matched.append(
                                {"name": flag["des"]["name"],
                                 "page": flag["de

你可能感兴趣的:(faiss,数据库,numpy)