Nein, logische Programmierung wie diese Dinge und neo4j verkörpert sind sehr unterschiedlich.
Auf einer Ebene haben Sie Recht, dass sie konzeptionell sowohl Grafikspeicher als auch Grafikabfrage darstellen. Aber für die Logik-Programmierung ist es nur eine konzeptionelle Graph-Abfrage, es gibt keine Garantie, dass es tatsächlich auf diese Weise gespeichert wird (wo es mit neo4j ist).
Zweitens, mit Logik-Programmierung versuchen Sie in der Regel horn clauses, die Sie durch viele Daten zu begründen versuchen. Sie können sich eine Hornklausel als eine einfache Regel vorstellen, wie "Wenn eine Person männlich ist und der direkte Vorfahre eines biologischen Kindes ist, bedeutet das, dass diese Person ein Vater ist". In Chiffre mit Neo4j, würden Sie ein Diagramm Muster, das Sie passen wollen beschreiben, dass die Ergebnisse in Daten, z.B .:
MATCH (p:Person)-[:father*]->(maleAncestor:Person)
RETURN maleAncestor
Das die Grafik durch father
Beziehungen zu durchqueren erzählt, und männliche Vorfahren zurück. In einer Logik-Programmiersprache würden Sie es nicht so machen. Sie können angeben, dass a
ein Vater von b
bedeutet, dass a
männlich ist, und a
ist ein Vorfahre von b
. Dies würde implizit und transitiv für alle gültigen a/b-Paarungen angeben. Dann würden Sie eine Frage stellen: "Wer sind die männlichen Vorfahren?" Die Programmierumgebung würde das dann unter Ausnutzung Ihrer Regeln beantworten. Das würde den Effekt haben, eine Durchquerung durch die Daten zu erzeugen, die der oben angegebenen Chiffre sehr ähnlich ist, aber die Art, wie Sie Ihre Daten verstehen und diese Traversierung aufbauen, ist völlig anders.
Logische Programmiersprachen funktionieren normalerweise über predicate resolution. Eine Graphabfragesprache wie Cypher arbeitet mit einer Kombination aus Mustererkennung und expliziter Pfadangabe. Sie sind sehr unterschiedlich.
Prolog ist eine * Programmiersprache *, während eine Graphdatenbank nur eine Datenbank ist. Die meisten Dinge, die Sie mit Prolog machen können, sind mit einer Datenbank nicht möglich. Zum Beispiel ist der Aufbau eines Webservers wie dem, der die SWI-Prolog [Website] (http://www.swi-prolog.org) betreibt, mit Prolog möglich, aber mit einer Datenbank-Engine nicht möglich. – mat
fügen Sie gespeicherte Prozeduren und Trigger in Graph-Datenbank, laden Sie einige Quellcode in attributierten AST (es ist ein Diagramm nativ), und Sie erhalten Sie db ausführen oder transformieren diese AST –