2016-06-28 15 views
0

:(エンティティ、プロパティ、関係が)グラフDBに保存された当社の現在のシステムで状況パターン認識と解決策世代

  1. オントロジー情報。

  2. IF THENエンティティ、プロパティ、リレーションについてのルール。

  3. 現在のタスク。

オントロジー情報

トムは車を持っています。

ヘレンに電話があります。

トムは20歳です。

Helenです。30歳。

トムはヘレンの友人です。

ルール(パターン)

(Xは車を持っており、Yは、携帯電話や18よりもX古く、Y 18歳以上を持っており、XがYの友人である)場合には、 - >彼らは、タクシー事業を開始することができます。

現在のタスク

Tomのビジネスチャンスを生成します。特に、システムは状況パターンを認識しなければならないので、ルールと一致させることができる。パターンベースでは、解決策(現在の状況に投影)が生成されなければなりません:

トムとヘレンが友人である限り、彼らは18歳以上、トムは車を持ち、ヘレンは電話を持っています - >トム缶ヘレンと一緒にタクシーサービス事業を開始してください。

私の質問:neo4jでそれを実装できますか(またはそのようなシステムのモジュールとして使用できますか)。もしそうなら、私は関連するケースや例をどこで見つけることができますか?

答えて

0

あなたは(サイファーを使用して)次のように記述例を表すことができます。

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

あなたがビジネスチャンスを照会することができますトム(あなたが記述したパターンに合ったパス)は次のようになります:

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

関連する問題