Database Specific Requirements

Anzograph

Versions and features requirements

Graphileon requires at least Anzograph version 2.3.0.

  • Graphileon uses Anzograph's Vertex and Edge functions which were introduced in version 2.3. Also core queries of Graphileon use the ID_TO_URI function.

To use the EDGE and VERTEX function, you must first set auto_predicate=true (in the install_path/config/settings.conf file) prior to loading the data with which you want to use the VERTEX function. This setting directs Anzograph to register vertex labels as predicates.

Graphileon installation

Before installing Graphileon you need to create a graph for it by running the following query using the Anzograph web interface:

INSERT DATA { GRAPH <graphileon> {
       <test> a "test"
   }
}

Then, when setting up Graphileon's application store, you should enter graphileon in the Graph name: field. The graphileon designation is not required so you can use an alternative name if you like.

Graph Visualisation

In order to visualise RDF data in a graph visualization (in a NetworkView or YFilesView) your queries need to use Vertex and Edge functions:

SELECT DISTINCT (VERTEX(?s) as ?n)
WHERE {	
  ?s ?r ?m . 
  ?m a ?type . 
}
LIMIT 10

Editing edges

Edges (relationships - e.g. predicates) can be edited only if they can be uniquely identified. Non uniquely identifiable edges can be visualised in Graphileon views, but in order to edit them you need to write queries for your specific needs.

Example of non unique edges (and non editable) is <knows> in:

<John> <knows> <Betty>
<Betty> <knows> <Alexia>

Example of unique edges (editable):

<John> <knows-1> <Betty>
<knows-1> a <edge>
<knows-1> <since> 1999

<Betty> <knows-2> <Alexia>
<knows-2> a <edge>
<knows-2> <since> 2002

Query with parameters

Graphileon supports parameter injection for queries. In the query string, parameters are declared by prepending $ to the parameter name. For example, executing the query

SELECT ?person ?key ?value
WHERE {	
    ?person a "Person";
            <name> "$name";
            ?key ?value.
}
LIMIT 10

with the parameters:

{
    'name': 'John'
}

will replace $name with John when the query is executed.

Datastax

Requirements

Graphileon was developed and tested with Datastax 6.7

Datastax 6.8

Starting with version 6.8, Datastax introduced a new database core which is used by default.

For the moment Graphileon can only use the old core so graphs need to be created using the classicEngine() statement.

Example:

system.graph(<graph-name>)
  .classicEngine()
  .create()

Replace <graph-name> with the desired name of the graph

Graphileon installation

Datastax 6 has a low default value for max_query_params.

Please edit the dse.yaml file and set max_query_params=256.

Create a graph for the application store

Before installing Graphileon one needs to create a graph for the application store, using the gremlin console, with the one of the following statements depending on the Datastax version:

For Datastax 6.7:

	system.graph('graphileon')
	  .option("graph.schema_mode").set("Development")
	  .create()

For Datastax 6.8:

	system.graph('graphileon')
	  .classicEngine()
	  .option("graph.schema_mode").set("Development")
	  .create()

Limitations

Query parameters

Graphileon supports running Gremlin queries with parameters. The parameters are binded to variables with the same name when the query is executed.

Gremlin forbids declaring variables with the same name as some reserved words (ex: id, label, key, in ...) so make sure you use unique parameter names or prepend them with _ (example: _id, _label, ...)

Example:

Executing the query g.V().has('id', id).limit(1) with parameters {id: 1} will trigger an error because id is a reserved word.

One way to fix this is to use the query: g.V().has('id', _id).limit(1) with parameters {_id: 1}.

Visualisation

CRUD operations

  • Datastax ids can be used as Object/JSON String.

Redisgraph

For working with Graphileon we recommend Redisgraph version 2.2.x The oldest known version that Graphileon can work with is Redisgraph 2.1.1