情境模式识别和解决方案生成

时间:2016-06-28 12:36:28

标签: neo4j cypher

我们拥有什么:

  1. 我们当前系统(实体,属性,关系)的本体信息保存在图db中。

  2. 如果那么关于实体,财产,关系的规则。

  3. 当前任务。

  4. 本体信息

    汤姆有车。

    海伦有电话。

    汤姆已经20岁了。

    海伦已经30岁了。

    汤姆是海伦的朋友。

    规则(模式)

    如果(X有汽车,Y有电话,X大于18且Y大于18且X是Y的朋友),那么 - >他们可以开始出租车业务。

    当前任务

    为汤姆创造任何商机。特别是,系统必须识别情境模式,因此可以与规则匹配。在模式基础上,必须生成解决方案(预测当前情况):

    只要汤姆和海伦是朋友,他们都不到18岁,汤姆有车,海伦有电话, - >汤姆可以与海伦一起开始出租车服务业务。

    我的问题:我可以用neo4j实现它(或者用它作为这种系统的模块)吗?如果是这样,我在哪里可以找到相关的用例或示例?

1 个答案:

答案 0 :(得分:0)

您可以代表您描述的示例(使用Cypher):

SportsCar.

这会生成如下图:

enter image description here

您可以查询Tom的商机(与您描述的模式匹配的路径),如下所示:

CREATE (tom:Person)
SET tom.name = "Tom",
    tom.age  = 20
CREATE (helen:Person)
    SET helen.name = "Helen",
        helen.age  = 30
CREATE (tom)-[:FRIENDS_WITH]->(helen)
CREATE (c:Car {desc: "2015 Red Honda Fit"})
CREATE (tom)-[:HAS_CAR]->(c)
CREATE (p:Phone {desc: "iPhone 6s"})
CREATE (helen)-[:HAS_PHONE]->(p)

此查询返回:

MATCH (p:Phone)<-[:HAS_PHONE]-(friend:Person)-[:FRIENDS_WITH]-(t:Person {name: "Tom"})-[:HAS_CAR]->(c:Car)
WHERE t.age > 18 AND friend.age > 18
RETURN t.name AS Tom, friend.name AS business_partner, 
    p.desc AS phone, c.desc AS car

Here是一个Neo4j控制台实例,用于演示此内容。