2016-06-28 60 views
0

我們有什麼:現狀模式識別與解生成

  1. 我們目前的系統保存在圖形數據庫(實體,屬性,關係)本體信息。

  2. 如果那麼關於實體,屬性,關係的規則。

  3. 當前任務。

本體信息

湯姆有一輛汽車。

海倫有電話。

湯姆20歲。

海倫30歲。

湯姆是海倫的朋友。

規則(模式)

IF(X有車,Y與手機和X年齡超過18 AND Y年齡大於18和X爲Y的朋友),那麼 - >他們可以啓動出租車業務。

當前任務

爲湯姆生成任何商機。特別是系統必須識別情況模式,因此可以與規則相匹配。在模式基礎上,必須生成解決方案(投影到當前情況):

只要湯姆和海倫是朋友,他們都比18歲大,湯姆有車,海倫有電話, - >湯姆可以與海倫一起開始出租車服務業務。

我的問題:我可以使用neo4j實現嗎(或將它用作此類系統的模塊)?如果是這樣,我在哪裏可以找到相關的用例或示例?

回答

0

可以代表(使用的Cypher)你描述像這樣的例子:

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) 

這導致類似如下的圖表:

enter image description here

您可以查詢商機對於Tom(與您描述的模式匹配的路徑)是這樣的:

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 

該查詢返回:

╒═══╤════════════════╤═════════╤══════════════════╕ 
│Tom│business_partner│phone │car    │ 
╞═══╪════════════════╪═════════╪══════════════════╡ 
│Tom│Helen   │iPhone 6s│2015 Red Honda Fit│ 
└───┴────────────────┴─────────┴──────────────────┘ 

Here是證明這個Neo4j的控制檯實例。

+0

哦,它很好用!謝謝!!!順便說一下,它也可以用sparql或swrl規則來完成(也許你知道)? – user3068938