小規模な金融知識マップ構築の実践指導: 定量分析、グラフデータベース neo4j、グラフアルゴリズム、関係予測、固有表現認識、Cypher Cheetsheet の詳細指導など。

ここに画像の説明を挿入

プロジェクト デザインのコレクション (人工知能のディレクション): 新人が実戦でのスキルを迅速に習得し、プロジェクト デザインのアップグレードを独自に完了し、自身のハード パワーを向上できるように支援します (NLP、ナレッジ グラフ、コンピューター ビジョンなどに限定されません): 意味のあるプロジェクトを収集します。初心者が実際の戦闘でスキルを迅速に習得できるようにするデザイン コレクションは、ユーザーが CSDN プラットフォームをより有効に活用し、プロジェクト デザインのアップグレードを独立して完了し、自身のハード パワーを向上させるのに役立ちます。

ここに画像の説明を挿入

  1. コラム購読: ハードパワーを向上させるプロジェクトの百科事典

  2. [コラムの詳細紹介: プロジェクト デザイン コレクション (人工知能のディレクション): 新人が実戦でのスキルを迅速に習得し、プロジェクト デザインのアップグレードを独自に完了し、自身のハード パワー (NLP、ナレッジ グラフ、コンピューター ビジョンなどに限定されない) を向上させるのに役立ちます。 。)

小規模な金融知識マップ構築の実践指導: 定量分析、グラフデータベース neo4j、グラフアルゴリズム、関係予測、固有表現認識、Cypher Cheetsheet の詳細指導など。

エフェクトのプレビュー:

記事の上部または最後にある記事の出典を参照してください

https://download.csdn.net/download/sinat_39620217/87987419

1. ナレッジマップの保存方法

ナレッジ マップ ストレージには主に、リソース記述フレームワーク (リソース記述フレームワーク、RDF ) とグラフ データベース (グラフ データベース) が含まれます。

1.1 リソース記述フレームワークの機能

  • トリプルとして保存 (トリプル)
  • 標準推論エンジン
  • W3C規格
  • データを簡単に公開できる
  • 主に学界

1.2 グラフデータベースの機能

  • ノードとリレーションシップの両方に属性を含めることができます
  • 標準の推論エンジンがない
  • グラフの走査効率が高い
  • 事務管理
  • 主に産業シーン

2. グラフデータベース neo4j

neo4jは、効率的なグラフ クエリ言語に基づいた高性能の読み書きスケーラビリティを備えたNoSQLグラフ データベースですCypher。詳細については、neo4j 公式 Web サイトをご覧ください。公式 Web サイトでは、素早い実践体験のためのオンライン サンドボックスも提供しています。

2.1 ソフトウェアのダウンロード

ダウンロードリンク: https://neo4j.com/download-center/

2.2 ログインを開始する

2.2.1 ウィンドウ

  • neo4jディレクトリに入る
cd neo4j/bin
./neo4j start
  • 起動が成功し、ターミナルに次のプロンプトが表示されます。これは、起動が成功したことを意味します。
Starting Neo4j.Started neo4j (pid 30914). It is available at http://localhost:7474/ There may be a short delay until the server is ready.

(1) ページにアクセスします: http://localhost:7474

(2) 初期アカウントとパスワードはどちらもneo4jhostタイプ選択bolt

(3) 古いパスワードを入力し、新しいパスワードを入力します。開始する前にローカル インストールに注意してくださいjdk(推奨インストールjdk version 11): https://www.oracle.com/java/technologies/javase-downloads.html

2.2.2 MacOS

ローカル DBMS の追加を実行した後、Neo4j ブラウザを開きます

2.3 知識を蓄える

neo4j で CRUD を実行するには、Cypher クエリ言語が必要です。

2.4 Windows のインストール中に考えられる問題と解決策

  • 問題: JDK1.8.0_261 のインストール完了後、neo4j起動時に次の問題が発生しました。
Unable to find any JVMs matching version "11"
  • 解決策: インストールを促すメッセージが表示されるjdk 11 versionので、ダウンロードするとjdk-11.0.8インストールされている情報とバージョン情報を確認Mac OSできますls -la /Library/Java/JavaVirtualMachines/jdk

3. ナレッジマップデータの準備

3.1 無料のオープンソース財務データ インターフェイス

Tushareの無料アカウントではデータを取得できない場合があります。発行が提供する株式データの取得方法を参照してください。

3.1.1 ツシェア

公式ウェブサイトのリンク: http://www.tushare.org/

3.1.2 ジョイントクワント

公式サイトリンク:https://www.joinquant.com/

3.1.3 モジュールのインポート

import tushare as ts  # 参考Tushare官网提供的安装方式
import csv
import time
import pandas as pd
# 以下pro_api token可能已过期,可自行前往申请或者使用免费版本
pro = ts.pro_api('4340a981b3102106757287c11833fc14e310c4bacf8275f067c9b82d')

3.2 データの前処理

3.2.1 株式の基本情報

stock_basic = pro.stock_basic(list_status='L', fields='ts_code, symbol, name, industry')
# 重命名行,便于后面导入neo4j
basic_rename = {
    
    'ts_code': 'TS代码', 'symbol': '股票代码', 'name': '股票名称', 'industry': '行业'}
stock_basic.rename(columns=basic_rename, inplace=True)
# 保存为stock_basic.csv
stock_basic.to_csv('financial_data\\stock_basic.csv', encoding='gbk')

3.2.2 株主情報

holders = pd.DataFrame(columns=('ts_code', 'ann_date', 'end_date', 'holder_name', 'hold_amount', 'hold_ratio'))
# 获取一年内所有上市股票股东信息(可以获取一个报告期的)
for i in range(3610):
   code = stock_basic['TS代码'].values[i]
   holders = pro.top10_holders(ts_code=code, start_date='20180101', end_date='20181231')
   holders = holders.append(holders)
   if i % 600 == 0:
       print(i)
   time.sleep(0.4)# 数据接口限制
# 保存为stock_holders.csv
holders.to_csv('financial_data\\stock_holders.csv', encoding='gbk')
holders = pro.holders(ts_code='000001.SZ', start_date='20180101', end_date='20181231')

3.2.3 株式概念情報

concept_details = pd.DataFrame(columns=('id', 'concept_name', 'ts_code', 'name'))
for i in range(358):
   id = 'TS' + str(i)
   concept_detail = pro.concept_detail(id=id)
   concept_details = concept_details.append(concept_detail)
   time.sleep(0.4)
# 保存为concept_detail.csv
concept_details.to_csv('financial_data\\stock_concept.csv', encoding='gbk')

3.2.4 株式発表情報

for i in range(3610):
   code = stock_basic['TS代码'].values[i]
   notices = pro.anns(ts_code=code, start_date='20180101', end_date='20181231', year='2018')
   notices.to_csv("financial_data\\notices\\"+str(code)+".csv",encoding='utf_8_sig',index=False)
notices = pro.anns(ts_code='000001.SZ', start_date='20180101', end_date='20181231', year='2018')

3.2.5 金融ニュース情報

news = pro.news(src='sina', start_date='20180101', end_date='20181231')
news.to_csv("financial_data\\news.csv",encoding='utf_8_sig')

3.2.6 概念情報

concept = pro.concept()
concept.to_csv('financial_data\\concept.csv', encoding='gbk')

3.2.7 上海・香港ストックコネクトおよび深セン・香港ストックコネクトの構成情報

#获取沪股通成分
sh = pro.hs_const(hs_type='SH')
sh.to_csv("financial_data\\sh.csv",index=False)
#获取深股通成分
sz = pro.hs_const(hs_type='SZ')
sz.to_csv("financial_data\\sz.csv",index=False)

3.2.8 株価情報

for i in range(3610):
   code = stock_basic['TS代码'].values[i]
   price = pro.query('daily', ts_code=code, start_date='20180101', end_date='20181231')
   price.to_csv("financial_data\\price\\"+str(code)+".csv",index=False)

3.2.9 無料のインターフェースを使用して株式データを取得する

import tushare as ts
# 基本面信息
df = ts.get_stock_basics()
# 公告信息
ts.get_notices("000001")
# 新浪股吧
ts.guba_sina()
# 历史价格数据
ts.get_hist_data("000001")
# 历史价格数据(周粒度)
ts.get_hist_data("000001",ktype="w")
# 历史价格数据(1分钟粒度)
ts.get_hist_data("000001",ktype="m")
# 历史价格数据(5分钟粒度)
ts.get_hist_data("000001",ktype="5")
# 指数数据(sh上证指数;sz深圳成指;hs300沪深300;sz50上证50;zxb中小板指数;cyb创业板指数)
ts.get_hist_data("cyb")
# 宏观数据(居民消费指数)
ts.get_cpi()
# 获取分笔数据
ts.get_tick_data('000001', date='2018-10-08', src='tt')

3.3 データの前処理

3.3.1 株式取引日の出来高モードの統計

import numpy as np

yaxis = list()
for i in listdir:
    stock = pd.read_csv("financial_data\\price_logreturn\\"+i)
    yaxis.append(len(stock['logreturn']))
counts = np.bincount(yaxis)

np.argmax(counts)

3.3.2 ストックログリターンの計算

株式対数リターンとピアソン相関係数の計算式:

import pandas as pd
import numpy as np
import os
import math

listdir = os.listdir("financial_data\\price")

for l in listdir:
   stock = pd.read_csv('financial_data\\price\\'+l)
   stock['index'] = [1]* len(stock['close'])
   stock['next_close'] = stock.groupby('index')['close'].shift(-1)
   stock = stock.drop(index=stock.index[-1])
   logreturn = list()
   for i in stock.index:
       logreturn.append(math.log(stock['next_close'][i]/stock['close'][i]))
   stock['logreturn'] = logreturn
   stock.to_csv("financial_data\\price_logreturn\\"+l,index=False)

3.3.3 銘柄間の対数リターンの相関係数

from math import sqrt
def multipl(a,b):
   sumofab=0.0
   for i in range(len(a)):
       temp=a[i]*b[i]
       sumofab+=temp
   return sumofab

def corrcoef(x,y):
   n=len(x)
   #求和
   sum1=sum(x)
   sum2=sum(y)
   #求乘积之和
   sumofxy=multipl(x,y)
   #求平方和
   sumofx2 = sum([pow(i,2) for i in x])
   sumofy2 = sum([pow(j,2) for j in y])
   num=sumofxy-(float(sum1)*float(sum2)/n)
   #计算皮尔逊相关系数
   den=sqrt((sumofx2-float(sum1**2)/n)*(sumofy2-float(sum2**2)/n))
   return num/den

元のデータは数百万あるため、計算を節約するために、相関分析には最初の 300 銘柄のみが選択されます。

listdir = os.listdir("financial_data\\300stock_logreturn")
s1 = list()
s2 = list()
corr = list()
for i in listdir:
   for j in listdir:
       stocka = pd.read_csv("financial_data\\300stock_logreturn\\"+i)
       stockb = pd.read_csv("financial_data\\300stock_logreturn\\"+j)
       if len(stocka['logreturn']) == 242 and len(stockb['logreturn']) == 242:
           s1.append(str(i)[:10])
           s2.append(str(j)[:10])
           corr.append(corrcoef(stocka['logreturn'],stockb['logreturn']))
           print(str(i)[:10],str(j)[:10],corrcoef(stocka['logreturn'],stockb['logreturn']))
corrdf = pd.DataFrame()
corrdf['s1'] = s1
corrdf['s2'] = s2
corrdf['corr'] = corr
corrdf.to_csv("financial_data\\corr.csv")

4 金融知識マップの構築

サードパーティのライブラリをインストールする

pip install py2neo

4.1 Pythonによる接続

特定のコードは 3.1 Python 操作 neo4j-connection を参照できます。

from pandas import DataFrame
from py2neo import Graph,Node,Relationship,NodeMatcher
import pandas as pd
import numpy as np
import os
# 连接Neo4j数据库
graph = Graph('http://localhost:7474/db/data/',username='neo4j',password='neo4j')

4.2 データの読み取り

stock = pd.read_csv('stock_basic.csv',encoding="gbk")
holder = pd.read_csv('holders.csv')
concept_num = pd.read_csv('concept.csv')
concept = pd.read_csv('stock_concept.csv')
sh = pd.read_csv('sh.csv')
sz = pd.read_csv('sz.csv')
corr = pd.read_csv('corr.csv')

4.3 パディングと重複排除

stock['行业'] = stock['行业'].fillna('未知')
holder = holder.drop_duplicates(subset=None, keep='first', inplace=False)

4.4 エンティティの作成

コンセプト、株式、株主、シェアコネクト

sz = Node('深股通',名字='深股通')
graph.create(sz)  

sh = Node('沪股通',名字='沪股通')
graph.create(sh)  

for i in concept_num.values:
   a = Node('概念',概念代码=i[1],概念名称=i[2])
   print('概念代码:'+str(i[1]),'概念名称:'+str(i[2]))
   graph.create(a)

for i in stock.values:
   a = Node('股票',TS代码=i[1],股票名称=i[3],行业=i[4])
   print('TS代码:'+str(i[1]),'股票名称:'+str(i[3]),'行业:'+str(i[4]))
   graph.create(a)

for i in holder.values:
   a = Node('股东',TS代码=i[0],股东名称=i[1],持股数量=i[2],持股比例=i[3])
   print('TS代码:'+str(i[0]),'股东名称:'+str(i[1]),'持股数量:'+str(i[2]))
   graph.create(a)

4.5 関係の作成

株主、株式コンセプト、株式発表、株式と株式の接続

matcher = NodeMatcher(graph)
for i in holder.values:    
   a = matcher.match("股票",TS代码=i[0]).first()
   b = matcher.match("股东",TS代码=i[0])
   for j in b:
       r = Relationship(j,'参股',a)
       graph.create(r)
       print('TS',str(i[0]))
           
for i in concept.values:
   a = matcher.match("股票",TS代码=i[3]).first()
   b = matcher.match("概念",概念代码=i[1]).first()
   if a == None or b == None:
       continue
   r = Relationship(a,'概念属于',b)
   graph.create(r)

noticesdir = os.listdir("notices\\")
for n in noticesdir:
   notice = pd.read_csv("notices\\"+n,encoding="utf_8_sig")
   notice['content'] = notice['content'].fillna('空白')
   for i in notice.values:
       a = matcher.match("股票",TS代码=i[0]).first()
       b = Node('公告',日期=i[1],标题=i[2],内容=i[3])
       graph.create(b)
       r = Relationship(a,'发布公告',b)
       graph.create(r)
       print(str(i[0]))
       
for i in sz.values:
   a = matcher.match("股票",TS代码=i[0]).first()
   b = matcher.match("深股通").first()
   r = Relationship(a,'成分股属于',b)
   graph.create(r)
   print('TS代码:'+str(i[1]),'--深股通')

for i in sh.values:
   a = matcher.match("股票",TS代码=i[0]).first()
   b = matcher.match("沪股通").first()
   r = Relationship(a,'成分股属于',b)
   graph.create(r)
   print('TS代码:'+str(i[1]),'--沪股通')

# 构建股票间关联
corr = pd.read_csv("corr.csv")
for i in corr.values:
   a = matcher.match("股票",TS代码=i[1][:-1]).first()
   b = matcher.match("股票",TS代码=i[2][:-1]).first()
   r = Relationship(a,str(i[3]),b)
   graph.create(r)
   print(i)

5 データ視覚化クエリ

Crypher 言語に基づいて、平安銀行を例として視覚的なクエリを実行します。

5.1 関連するすべてのエンティティを表示する

match p=(m)-[]->(n) where m.股票名称="平安银行" or n.股票名称="平安银行" return p;

5.2 ディスプレイの数を制限する

株式間の対数収益の相関係数を計算した後、平安銀行の株式に関連するエンティティを確認します。

match p=(m)-[]->(n) where m.股票名称="平安银行" or n.股票名称="平安银行" return p limit 300;

5.3 銘柄間対数リターン相関係数の指定

match p=(m)-[]->(n) where m.股票名称="平安银行" and n.股票名称="万科A" return p;

6 neo4j グラフアルゴリズム

6.1. 中心性アルゴリズム (Centralities)

6.2 コミュニティ検出アルゴリズム(コミュニティ検出)

6.3 経路探索アルゴリズム(経路探索)

6.4 類似度アルゴリズム(類似度)

6.5 リンク予測

6.6 前処理アルゴリズム(Preprocessing)

6.7 アルゴリズムライブラリのインストールとインポート方法

Windows OS を例にとると、neo4j アルゴリズム ライブラリはインストール パッケージには提供されていませんが、アルゴリズム パッケージをダウンロードする必要があります。

(1) ダウンロードgraph-algorithms-algo-3.5.4.0.jar

(2) graph-algorithms-algo-3.5.4.0.jarneo4jデータベースのルートディレクトリpluginに移動します

(3) neo4j データベースディレクトリを変更しconfneo4j.conf以下の設定を追加します。

dbms.security.procedures.unrestricted=algo.*

(4) 次のコマンドを使用して、すべてのアルゴリズムのリストを表示します。

CALL algo.list()

6.8 アルゴリズムの練習 - リンク予測

6.8.1 アトミック Adar アルゴリズム

これは主に、隣接する 2 つのノード間の親密度を基準として判断することに基づいており、 2003 年に Web 上の Friends and neighborsで Lada Adamic と Eytan Adar によって提案されました。

このうちN(u)、ノード u に隣接するノードの集合を表し、A(x,y)ノード x とノード y が隣接していないことを意味し、値が大きいほど近いことを意味します。

AAA アルゴリズム暗号コードのリファレンス:

MERGE (zhen:Person {name: "Zhen"})
MERGE (praveena:Person {name: "Praveena"})
MERGE (michael:Person {name: "Michael"})
MERGE (arya:Person {name: "Arya"})
MERGE (karin:Person {name: "Karin"})

MERGE (zhen)-[:FRIENDS]-(arya)
MERGE (zhen)-[:FRIENDS]-(praveena)
MERGE (praveena)-[:WORKS_WITH]-(karin)
MERGE (praveena)-[:FRIENDS]-(michael)
MERGE (michael)-[:WORKS_WITH]-(karin)
MERGE (arya)-[:FRIENDS]-(karin)

// 计算 Michael 和 Karin 之间的亲密度
MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
RETURN algo.linkprediction.adamicAdar(p1, p2) AS score
// score: 0.910349

// 基于好友关系计算 Michael 和 Karin 之间的亲密度
MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
RETURN algo.linkprediction.adamicAdar(p1, p2, {relationshipQuery: "FRIENDS"}) AS score
// score: 0.0                                                

6.8.2 共通の近隣者

ノード間の共通近傍ノードの数の計算に基づく計算式は次のとおりです。

このうち、N(x) はノード x に隣接するノードの集合を表し、共通近傍は 2 つの集合の交点を表し、CN(x, y) の値が大きいほど、ノード x 間の親密性が高いことを意味します。そしてノード y の方が高いです。

Common Neighbors アルゴリズムの暗号コード リファレンス:

MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
RETURN algo.linkprediction.commonNeighbors(p1, p2) AS score

6.8.3 リソースの割り当て

リソース割り当てアルゴリズムの計算式は次のとおりです。

ここでN(u)、 はノード に隣接するノードのセットでありu、RA(x,y) が大きいほど、ノード x とノード y の間の親密さが大きいことを示します。

リソース割り当てアルゴリズムの暗号コード リファレンス:

MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
RETURN algo.linkprediction.resourceAllocation(p1, p2) AS score

6.8.4 完全な近傍

隣接するノード間の隣接ノードの総数を指します。計算式は次のとおりです。

ここで、N(u)はノードに隣接するノードのセットですu

Total Neighbors アルゴリズムの暗号コード リファレンス:

MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
RETURN algo.linkprediction.totalNeighbors(p1, p2) AS score

公式ウェブサイトのドキュメント > リンク アルゴリズム > 概要: https://neo4j.com/docs/graph-algorithms/3.5/labs-algorithms/linkprediction/

7. Cypher Cheetsheet の基本構文

7.1 ノードの作成

種類はPerson(属性:名前、年齢、性別)

create (:Person{name:"Tom",age:18,sex:"male"})
create (:Person{name:"Jimmy",age:20,sex:"male"})

7.2 関係の作成

名前がそれぞれ Tom と Jimmy である 2 つの Person タイプのノードを見つけて、2 つのノード間の関係を作成します。タイプは Friend で、関係の値は最適です。

match(p1:Person),(p2:Person)
where p1.name="Tom" and p2.name = "Jimmy"
create(p1) -[:Friend{relation:"best"}] ->(p2);

7.3 インデックスの作成

create index on :Person(name)
// 创建唯一索引(属性值唯一)
create constraint on (n:Person) assert n.name is unique

7.4 ノードの削除

// 普通删除
match(p:Person_{name:"Jiimmy"}) delete p
match (a)-[r:knows]->(b) delete r,b
// 级联删除(即删除某个节点时会同时删除该节点的关系)
match (n{name: "Mary"}) detach delete n
// 删除所有节点
match (m) delete m

7.5 関係の削除

// 普通删除
match(p1:Person)-[r:Friend]-(p2:Person)
where p1.name="Jimmy" and p2.name="Tom"
delete r
// 删除所有关系
match p=()-[]-() delete p

7.6 マージキーワード

存在する場合は直接返し、存在しない場合は新しいものを作成して返します (通常、ノードに属性を追加するときにエラー報告を避けるために実際に使用されます)

// 创建/获取对象
merge (p:Person { name: "Jim1" }) return p;

// 创建/获取对象 + 设置属性值 + 返回属性值
merge (p:Person { name: "Koko" })
on create set p.time = timestamp()
return p.name, p.time

// 创建关系
match (a:Person {name: "Jim"}),(b:Person {name: "Tom"})
merge (a)-[r:friends]->(b)

7.7 ノードの更新

7.7.1 プロパティ値の更新

match (n {name:'Jim'})
set n.name='Tom'
set n.age=20
return n

7.7.2 新しいプロパティとプロパティ値

match (n {name:'Mary'}) set n += {age:20} return n

7.7.3 属性値の削除

match(n{name:'Tom'}) remove n.age return n

7.7.4 ノード タイプの更新 (複数のラベルが許可されます)

①match (n{name:'Jim'}) set n:Person return n
②match (n{name:'Jim'}) set n:Person:Student return n

7.8 マッチング

7.8.1 ノードタイプと属性の一致を制限する

match (n:Person{name:"Jim"}) return n
match (n) where n.name = "Jim" return n
match (n:Person)-[:Realation]->(m:Person) where n.name = 'Mary'

7.8.2 オプションのマッチング (欠落部分の場合は無効)

optional match (n)-[r]->(m) return m

7.8.3 文字列の先頭でのマッチング

match (n) where n.name starts with 'J' return n

7.8.4 文字列の終わりの一致

match (n) where n.name ends with 'J' return n

7.8.5 文字列に一致が含まれる

match (n) where n.name contains with 'g' return n

7.8.6 文字列の除外マッチング

match (n) where not n.name starts with 'J' return n

7.8.7 通常の一致 =~ (あいまい一致)

match (n) where n.name =~ '.*J.*' return n (等价) like '%J%'

7.8.8 通常の一致 =~ (大文字と小文字は区別されません)

match (n) where n.name =~ '(?i)b.*' return n (等价) like 'B/b%'

7.8.9 属性値に(IN)が含まれる

match (n { name: 'Jim' }),(m) where m.name in ['Tom', 'Koo'] and (n)<--(m) return m

7.8.10 「または」一致 (|)

match p=(n)-[:knows|:likes]->(m) return p

7.8.11 任意のノードと指定範囲の深さの関係

match p=(n)-[*1..3]->(m) return p

7.8.12 任意のノードと任意の深さの関係

match p=(n)-[*]->(m) return p

7.8.13 重複排除の復帰

match (n) where n.ptype='book' return distinct n

7.8.14 ソートリターン(desc降順、asc昇順)

match (n) where n.ptype='book' return n order by n.price desc

7.8.15 名前変更の戻り値

match (n) where n.ptype='book' return n.pname as name

7.8.16 複数の条件付き制限 (with)、つまり 10 人以上を知っている Zhang% を返します

match (a)-[:knows]-(b)
where a.name =~ '张.*'
with a, count(b) as friends
where friends > 10
return a

7.8.17 ユニオンセットの重複排除(ユニオン)

match (a)-[:knows]->(b) return b.name
union
match (a)-[:likes]->(b) eturn b.name

7.8.18 重複排除なしのユニオン(すべてユニオン)

match (a)-[:knows]->(b) return b.name
union all
match (a)-[:likes]->(b) eturn b.name

7.8.19 ノードのプロパティ/ID の表示

match (p) where p.name = 'Jim' 
return keys(p)/properties(p)/id(p)

7.8.20 マッチページのリターン

match (n) where n.name='John' return n skip 10 limit 10

7.9 ファイルの読み込み

7.9.1 ネットワークリソースCSVファイルの読み込み

load csv with header from 'url:[www.download.com/abc.csv](http://www.download.com/abc.csv)' as line

create (:Track{trackId:line.id,name:line.name,length:line.length})

7.9.2 ネットワークリソースをバッチで読み取る

たとえば、csv ファイル (デフォルト = 1000)

using periodic commit (800)

load csv with header from 'url:[www.download.com/abc.csv](http://www.download.com/abc.csv)' as line

create (:Track{trackId:line.id,name:line.name,length:line.length})

7.9.3 ローカルファイルの読み取り

load csv with headers from 'file:///00000.csv' as line
create (:Data{date:line['date'],open:line['open']})
(fieldterminator ';') //自定义分隔符

7.9.4 注意事項

※ 本地csv文件必须是utf-8格式
※ 需要导入neo4j数据库目录的import目录下
※ 本地csv包含column必须添加with headers

7.10 foreachキーワード


  • 個人的なまとめ

1. ノード属性の使用()
2. 関係属性の使用[]
3. 使用場所 4.での"="
使用5. 関係確立の使用6. 通常の使用7. ノードまたは関係 (/[変数名: 型 {属性名: 属性値}]/) 8関係を照合する場合、r (空表示) を返すのではなく、p=(m)-[r]->(n) に基づいて p を返す必要があります。{}":"
(m)-[:r]->(n)
"=~"

記事の上部または最後にある記事の出典を参照してください

https://download.csdn.net/download/sinat_39620217/87987419

おすすめ

転載: blog.csdn.net/sinat_39620217/article/details/131608595