30 oktober 2019

Taken:

  1. urd2
    • /etc/Admin
  2. Neo4j
  3. SPOD
    • tellingen van pt en postag
  4. TÜNDRA
  5. alud
    • cookbook
    • functies mogen geen panic doen als het resultaat in een test gebruikt wordt of optioneel is
    • geen eindeloze loops in fixMisplacedHeadsInCoordination()

Alternatieven voor Neo4j

AgensGraph

https://bitnine.net/agensgraph/

Veelbelovend. Opslag in PostgreSQL, meerdere gebruikers, elk met meerdere grafen. Maar heeft geen volledige ondersteuning voor Cypher. Dit werkt niet:

MATCH p = (:Sentence)-[:REL|PAIR*]->() RETURN p;

… geeft: ERROR: multiple types for relationship not supported

Dit werkt ook niet:

MATCH (n:Node{sentid:"zin1",id:5})
  MATCH (x{sentid:"zin1",id:4})
  WHERE "Node" IN LABELS(x) OR "Word" IN LABELS(x)
  CREATE (n)-[:REL{rel:"su"}]->(x);

… moet herschreven worden als:

MATCH (n:Node{sentid:'zin1',id:5}) MATCH (x:Node{sentid:'zin1',id:4}) CREATE (n)-[:REL{rel:'su'}]->(x);
MATCH (n:Node{sentid:'zin1',id:5}) MATCH (x:Word{sentid:'zin1',id:4}) CREATE (n)-[:REL{rel:'su'}]->(x);

Of:

Neo4j: MATCH (x) WHERE "Node" IN LABELS(x) OR "Word" IN LABELS(x) RETURN x;
Agens: MATCH (x) WHERE ANY(i IN LABELS(x) WHERE i='node' OR i='word') RETURN x;

In Neo4j kun je nodes met meerdere types maken:

CREATE (n:Person:Swedish)

… kan niet op deze manier in AgensGraph, maar wel met een omweg.

Strings moeten tussen enkele aanhalingstekens staan. Quoten van een enkel aanhalingsteken gaat door hem te verdubbelen.

Niet direct onderscheid tussen hoofdletters en kleine letters:

peter=# CREATE (:Test{aap:'klein',AAP:'GROOT'});
GRAPH WRITE (INSERT VERTEX 1, INSERT EDGE 0)
peter=# MATCH p = () RETURN p;
              p
-----------------------------
 [test[4.1]{"aap": "GROOT"}]

Als je dat onderscheid wel wilt moet je labels tussen dubbele aanhalingstekens zetten:

peter=# CREATE (:Test{"aap":'klein',"AAP":'GROOT'});
GRAPH WRITE (INSERT VERTEX 1, INSERT EDGE 0)
peter=# MATCH p = () RETURN p;
                      p
---------------------------------------------
 [test[3.1]{"AAP": "GROOT", "aap": "klein"}]
(1 row)

peter=# MATCH (p:Test) RETURN p.AAP;
   aap
---------
 "klein"
(1 row)

peter=# MATCH (p:Test) RETURN p."AAP";
   AAP
---------
 "GROOT"
(1 row)

Programmatische interactie via een API: werkt prima in Go. Alleen zijn de strings die je terugkrijgt gequot.

CAPS: Cypher for Apache Spark

https://github.com/opencypher/morpheus

Nog geen volledige indersteuning voor Cypher, maar lijkt in ontwikkeling te zijn. Alleen een interface in Java?

Cypher for Gremlin

Kan alleen met data direct in het geheugen werken, en als je het programma stopt is de data weer weg.

Nog niet aan de praat kunnen krijgen.

JanusGraph, gebruikt Hadoop (?) en Cassandra en Lucene en nog meer? Kan ik nog niet aan de praat krijgen.

OrientDB Community Edition — Werkt bijna? Ik krijg cypher niet aan de praat.

cypher neo4j spod tuendra universal dependencies