2016-06-28 11 views
0

Was wir haben:Situation Mustererkennung und Lösung Generation

  1. Ontology Informationen zu unserem aktuellen System (Entitäten, Eigenschaften, Relationen) in Graph db gespeichert.

  2. WENN DANN Regeln über Entitäten, Eigenschaften, Beziehungen.

  3. Aktuelle Aufgabe.

Ontology Informationen

Tom hat ein Auto.

Helen hat Telefon.

Tom ist 20 Jahre alt.

Helen ist 30 Jahre alt.

Tom ist ein Freund von Helen.

Regeln (Muster)

IF (X Auto hat und Y Telefon und X älter als 18 und Y älter als 18 und X ist ein Freund von Y), DANN -> können Sie Taxi-Geschäft starten .

Aktuelle Aufgabe

generieren alle Geschäftsmöglichkeiten für Tom. Insbesondere muss das System das Situationsmuster erkennen, damit es mit der Regel verglichen werden kann. Auf der Musterbasis muss die (auf die aktuelle Situation projizierte) Lösung generiert werden:

Solange Tom und Helen befreundet sind, sind sie beide älter als 18, Tom hat ein Auto und Helen hat Telefon, -> Tom kann Starten Sie Taxi-Service-Geschäft zusammen mit Helen.

Meine Frage: Kann ich das mit neo4j implementieren (oder es als Modul für ein solches System verwenden)? Wenn ja, wo finde ich den zugehörigen Anwendungsfall oder das Beispiel?

Antwort

0

können Sie das Beispiel stellen Sie wie folgt beschreiben (mit 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) 

Daraus ergibt sich ein Diagramm, das wie folgt aussieht:

enter image description here

Sie können nach Geschäftsmöglichkeiten abfragen für Tom (Pfade, die dem beschriebenen Muster entsprechen):

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 

Diese Abfrage liefert:

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

Here ist eine Neo4j Konsole Instanz, die dies zeigt.

+0

Oh es funktioniert super! Vielen Dank!!! By the way, kann es auch mit Sparql oder Swrl Regeln in Protege getan werden (nur vielleicht wissen Sie)? – user3068938