Python py2neo.Node() Examples

The following are 12 code examples of py2neo.Node(). You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may also want to check out all available functions/classes of the module py2neo , or try the search function .
Example #1
Source File: graphityOut.py    From r2graphity with MIT License 6 votes vote down vote up
def printGraph(graphity):

	# TODO add more info to print, alias and stuff, sample info
	# print dangling APIs
	# print dangling strings
	
	for item in graphity.nodes(data=True):
		print item[0]
		if 'alias' in item[1]:
			print "Node alias: " + item[1]['alias']
	
		# mix up API calls and strings and sort by offset
		callStringMerge = item[1]['calls'] + item[1]['strings']
		callStringMerge.sort(key=lambda x: x[0])
	
		for cx in callStringMerge:
			print cx


# Printing all the meta info to cmdline 
Example #2
Source File: create_graph.py    From Doctor-Friende with MIT License 6 votes vote down vote up
def make_disease_nodes(self, diseases_dict):
        i = 1
        for disease in diseases_dict:
            if i % 50 == 0:
                print("create disease node count=%d" % i)
            node = Node("Disease", name=disease['name'], intro=disease['intro'],
                        cause=disease['cause'], prevent=disease['prevent'], nursing=disease['nursing'],
                        insurance=disease['insurance'], easy_get=disease['easy_get'], get_way=disease['get_way'],
                        get_prob=disease['get_prob'], treat=disease['treat'], treat_prob=disease['treat_prob'],
                        treat_period=disease['treat_period'], treat_cost=disease['treat_cost'],
                        treat_detail=disease['treat_detail']
                        )
            self.g.create(node)
            i += 1
        print("create total disease node count=%d" % (i - 1))
        return 
Example #3
Source File: build_medicalgraph.py    From dialogbot with Apache License 2.0 5 votes vote down vote up
def _create_node(self, label, nodes):
        """
        建立节点
        :param label:
        :param nodes:
        :return:
        """
        count = 0
        for node_name in nodes:
            node = Node(label, name=node_name)
            self.g.create(node)
            count += 1
            print(count, len(nodes))
        return 
Example #4
Source File: build_medicalgraph.py    From dialogbot with Apache License 2.0 5 votes vote down vote up
def _create_diseases_nodes(self, disease_infos):
        """创建知识图谱中心疾病的节点"""
        count = 0
        for disease_dict in disease_infos:
            node = Node("Disease", name=disease_dict['name'], desc=disease_dict['desc'],
                        prevent=disease_dict['prevent'], cause=disease_dict['cause'],
                        easy_get=disease_dict['easy_get'], cure_lasttime=disease_dict['cure_lasttime'],
                        cure_department=disease_dict['cure_department']
                        , cure_way=disease_dict['cure_way'], cured_prob=disease_dict['cured_prob'])
            self.g.create(node)
            count += 1
            print(count)
        return 
Example #5
Source File: Server.py    From Autocomplete-System with MIT License 5 votes vote down vote up
def build_db(self):
        """
        This method removes data from database and build new graph with in-memory data in application server.
        :return: None
        """
        self.db.graph.delete_all()  # delete all existing nodes and relationships
        queue = deque()
        tx = self.db.graph.begin()
        self.logger.info('Start updating database.')
        node = Node('TrieNode', 'ROOT',
                    isword=False,
                    name='',
                    )
        node['count'] = self.__root.total_counts()
        tx.create(node)  # create root in neo4j
        queue.append((node, self.__root))
        count = 0

        while queue:
            db_node, cur = queue.popleft()
            for child in cur.children:
                prefix = cur.children[child].prefix
                db_node_child = Node('TrieNode',
                                     name=prefix,
                                     isword=cur.children[child].isWord,
                                     count=cur.children[child].total_counts()
                                     )
                queue.append((db_node_child, cur.children[child]))
                tx.create(db_node_child)
                count += 1
                tx.create(Database.Parent(db_node, db_node_child))

        tx.commit()
        if not self.testing:
            # self.logger.info('Finished building database. Number of nodes created is {count}'.format(count=count))
            self.logger.info(f'Finished building database. Number of nodes created is {count}')

        if self.testing and tx.finished():
            self.logger.info('Transaction finished.') 
Example #6
Source File: Server.py    From Autocomplete-System with MIT License 5 votes vote down vote up
def update_db(self):
        """
        Update database with latest application server usage
        :return: None
        """
        root = self.__root
        g = self.db.graph

        def dfs(node, parent):
            """update node info to database"""
            if not node:
                return
            db_node = self._selector.match('TrieNode', name=node.prefix).first()
            if not db_node:
                tx = g.begin()
                db_node = Node('TrieNode',
                               name=node.prefix,
                               isword=node.isWord,
                               count=node.total_counts())
                tx.create(db_node)
                parent_db_node = self._selector.match('TrieNode', name=parent.prefix).first()
                tx.create(Database.Parent(parent_db_node, db_node))
                tx.commit()
            else:
                db_node['count'] = node.total_counts()
                g.push(db_node)
            for child in node.children:
                dfs(node.children[child], node)

        dfs(root, None) 
Example #7
Source File: create_graph.py    From Doctor-Friende with MIT License 5 votes vote down vote up
def create_nodes(self, label, entities_names):
        i = 1
        for entity in entities_names:
            if i % 500 == 0:
                print("create %s node count=%d" % (label, i))
            node = Node(label, name=entity)
            self.g.create(node)
            i += 1
        print("create total %s node count=%d" % (label, i - 1))
        return 
Example #8
Source File: mongo2neo.py    From novel-kg with MIT License 5 votes vote down vote up
def look_and_create(name):
    end = matcher.match("Jinyong", name=name).first()
    if end is None:
        end = Node('Jinyong', name=name)           
    return end 
Example #9
Source File: neoHandler.py    From BeaconGraph with GNU General Public License v3.0 5 votes vote down vote up
def insertAiroData(self, data):
        print("Inserting node data!")
        bssidNodes, stationNodes = data[0][0], data[0][1]
        for b in bssidNodes:
            try:
                bNode = Node(b['type'], name=b['name'], bssid=b['bssid'], oui=b['oui'], encryption=b["encryption"], speed=b['speed'], channel=b['channel'], auth=b['auth'], cipher=b['cipher'], lan=b['lan'])
                bNode.add_label("Device")
                self.graph.create(bNode)
            except ClientError:
                pass
        
        for essids, s in stationNodes:
            sNode = self.graph.nodes.match("Device", bssid=s['bssid']).first()
            if sNode is None:
                sNode = Node(s["type"], name=s['name'], bssid=s['bssid'], FirstTimeSeen=s['fts'], LastTimeSeen=s['lts'],Power=s['pwr'], NumPackets=s['pkts'], Association=s['assoc'], oui=s['oui'])
                sNode.add_label("Device")
            else:
                sNode['FirstTimeSeen'] = s['fts']
                sNode['LastTimeSeen'] = s['lts']
                sNode['Power'] = s['pwr']
                sNode['NumPackets'] = s['pkts']
                sNode['Association'] =s['assoc']
                self.graph.push(sNode)
                sNode = self.graph.nodes.match("Device", bssid=s['bssid']).first()

            for essid in essids: 
                nExisting = self.graph.nodes.match("Device", name=essid).first()
                if len(essid) > 0:
                    newProbe = Node("AP", name=essid)
                    newProbe.add_label("Device")
                    self.graph.create(Relationship(sNode, "Probes", nExisting or newProbe))
            
            if s['assoc'] is not None:
                aExisting = self.graph.nodes.match("Device", bssid=s['assoc']).first()
                newAssoc = Node("AP", bssid=s['assoc'])
                newAssoc.add_label("Device")
                self.graph.create(Relationship(sNode, "AssociatedTo", aExisting or newAssoc))
        
        print("Database updated!") 
Example #10
Source File: graph.py    From chat with MIT License 5 votes vote down vote up
def add_nlucell(self, label="NluCell", name=None, content=None, topic="", tid="", \
        ftid="", behavior="", parameter="", url="", tag="", keywords="", api="", txt="", \
        img="", button="", description="", delimiter='|'):
        """Add nlucell node in graph.
        根据 name, topic, tid 确认节点是否已存在,存在则覆盖,不存在则追加。
        问题不能为空,避免因知识库表格填写格式不对而导致存入空问答对
        """
        assert name is not None, "name must be string."
        assert content is not None, "content must be string."
        for question in name.split(delimiter):
            question = question.strip()
            if question: # 问题不能为空
                # 根据 name, topic, tid 确认节点是否已存在
                match_tid = "''" if tid == '' else str(tid)
                node = self.selector.select("NluCell").where("_.name ='" + question + "'", \
                    "_.topic ='" + topic + "'", "_.tid =" + match_tid).first()
                if node: # 存在则覆盖
                    # node['name'] = question
                    node['content'] = content
                    # node['topic'] = topic
                    # node['tid'] = tid
                    node['ftid'] = ftid
                    node['behavior'] = behavior
                    node['parameter'] = parameter
                    node['url'] = url
                    # node['tag'] = tag
                    node['keywords'] = keywords
                    node['api'] = api
                    node['txt'] = txt
                    node['img'] = img
                    node['button'] = button
                    node['description'] = description
                    self.graph.push(node)
                else: # 不存在则追加
                    tag = get_tag(question, self.user)
                    node = Node(label, name=question, content=content, topic=topic, \
                        tid=tid, ftid=ftid, behavior=behavior, parameter=parameter, \
                        url=url, tag=tag, keywords=keywords, api=api, txt=txt, img=img, \
                        button=button, description=description, hot=0)
                    self.graph.create(node) 
Example #11
Source File: graph.py    From chat with MIT License 5 votes vote down vote up
def add_ts(self, label="TestStandard", question=None, content=None, context="", \
    behavior="", parameter="", url=""):
        """
        Add test standard node in graph.
        """
        assert question is not None, "question must be string."
        assert content is not None, "content must be string."
        for item in question.split():
            item = item.strip()
            if item: # 问题不能为空,避免因知识库表格填写格式不对而导致存入空问答对
                node = Node(label, question=item, content=content, context=context, \
                behavior=behavior, parameter=parameter, url=url)
                self.graph.create(node) 
Example #12
Source File: qa.py    From chat with MIT License 4 votes vote down vote up
def add_to_memory(self, question="question", userid="A0001"):
        """Add user question to memory.
        将用户当前对话加入信息记忆。

        Args:
            question: 用户问题。
                Defaults to "question".
            userid: 用户唯一标识。
                Defaults to "userid".
        """
        previous_node = self.graph.find_one("Memory", "qa_id", self.qa_id)
        self.qa_id = get_current_time()
        node = Node("Memory", question=question, userid=userid, qa_id=self.qa_id)
        if previous_node:
            relation = Relationship(previous_node, "next", node)
            self.graph.create(relation)
        else:
            self.graph.create(node)

    # def extract_navigation(self, question):
        """Extract navigation from question。从问题中抽取导航地点。
        从导航地点列表选取与问题匹配度最高的地点。
        QA匹配模式:(模糊匹配/全匹配)

        Args:
            question: User question. 用户问题。
        """
        # result = dict(question=question, name='', content=self.iformat(random_item(self.do_not_know)), \
            # context="", tid="", ftid="", url="", behavior=0, parameter="", txt="", img="", button="", valid=1)
        
        # 模式1:模糊匹配
        # temp_sim = 0
        # sv1 = synonym_cut(question, 'wf')
        # if not sv1:
            # return result
        # for location in self.locations:
            # sv2 = synonym_cut(location, 'wf')
            # if sv2:
                # temp_sim = similarity(sv1, sv2, 'j')
            # 匹配加速,不必选取最高相似度,只要达到阈值就终止匹配
            # if temp_sim > 0.92:
                # print("Navigation location: " + location + " Similarity Score: " + str(temp_sim))
                # result["content"] = location
                # result["context"] = "user_navigation"
                # result["behavior"] = int("0x001B", 16)
                # return result
        
        # 模式2:全匹配,判断“去”和地址关键词是就近的动词短语情况
        # for location in self.locations:
            
            # keyword = "去" + location
            # if keyword in question:
                # print("Original navigation")
                # result["name"] = keyword
                # result["content"] = location
                # result["context"] = "user_navigation"
                # result["behavior"] = int("0x001B", 16)
                # return result
        # return result