美文网首页NLP
知识图谱(2)——neo4j的用法

知识图谱(2)——neo4j的用法

作者: 飘涯 | 来源:发表于2018-08-10 17:15 被阅读93次

    基本命令用法

    先了解各个命令的用法
    创建一个节点
    CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 })
    创建一个节点,三个属性
    MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;
    用于连接节点和关系
    创造更多节点

    MATCH (ee:Person) WHERE ee.name = "Emil"
    CREATE (js:Person { name: "Johan", from: "Sweden", learn: "surfing" }),
    (ir:Person { name: "Ian", from: "England", title: "author" }),
    (rvb:Person { name: "Rik", from: "Belgium", pet: "Orval" }),
    (ally:Person { name: "Allison", from: "California", hobby: "surfing" }),
    (ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir),
    (js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb),
    (ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally),
    (rvb)-[:KNOWS]->(ally)
    

    创造关系,谁和谁认识,什么时候认识,什么年龄认识

    (ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir)
    

    用match定义knows就是frieds
    返回friends查看emil的朋友是谁

    MATCH (ee:Person)-[:KNOWS]-(friends)
    WHERE ee.name = "Emil" RETURN ee, friends
    

    查看谁认识johan并且爱好是surfng

    MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
    WHERE js.name = "Johan" AND surfer.hobby = "surfing"
    RETURN DISTINCT surfer
    

    结果:



    显示可视化查询方案

    PROFILE MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
    WHERE js.name = "Johan" AND surfer.hobby = "surfing"
    RETURN DISTINCT surfer
    

    直接从csv中加载文件

    LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/products.csv" AS row
    CREATE (n:Product)
    SET n = row,
      n.unitPrice = toFloat(row.unitPrice),
      n.unitsInStock = toInteger(row.unitsInStock), n.unitsOnOrder = toInteger(row.unitsOnOrder),
      n.reorderLevel = toInteger(row.reorderLevel), n.discontinued = (row.discontinued <> "0"
    

    如果在本地,可以直接把文件放到import文件夹中直接输入

    file:///xxx.csv
    

    创建商品node把后面五行设置为属性

    LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/categories.csv" AS row
    CREATE (n:Category)
    SET n = row
    

    加载商品的种类这个node
    加入供应商node

    • 然后
    CREATE INDEX ON :Product(productID)
    

    创建各自种类的ID

    • 3创建关系


    MATCH (p:Product),(c:Category)
    WHERE p.categoryID = c.categoryID
    CREATE (p)-[:PART_OF]->(c)
    MATCH (p:Product),(s:Supplier)
    WHERE p.supplierID = s.supplierID
    CREATE (s)-[:SUPPLIES]->(p)
    

    查看关系

    MATCH (s:Supplier)-->(:Product)-->(c:Category)
    RETURN s.companyName as Company, collect(distinct c.categoryName) as Categories
    

    查看供应关系

    MATCH p=()-[r:SUPPLIES]->() RETURN p LIMIT 25
    

    命令端导入数据


    bin/neo4j-import --multiline-fields=true --bad-tolerance=1000000 --into graph.db --id-type string --nodes:person node.csv  --relationships:related relation_header.csv,relation.csv
    

    大神关于cypher的使用文章:很详细
    https://blog.csdn.net/amao1998/article/details/80999423

    本机地址:192.168.43.75


    相关文章

      网友评论

        本文标题:知识图谱(2)——neo4j的用法

        本文链接:https://www.haomeiwen.com/subject/scqlbftx.html