viewof cypherEditor = {
const mainDiv = html`<div><div>`
const editorDiv = html`<div style="border: 1px solid rgb(0, 0, 0);"></div>`
const runButton = html`<button>Query</button>`
const errorStatus = html`<span style="color: red; margin-left: 1em;"></span>`
mainDiv.append(editorDiv)
mainDiv.append(runButton)
mainDiv.append(errorStatus)
mainDiv.value = undefined
yield mainDiv
let editor = CodeMirror(editorDiv, { mode: "application/x-cypher-query" })
editor.setValue("MATCH (m:E16_Measurement) RETURN m LIMIT 10")
editor.setSize(width-20, 200)
runButton.onclick = async (e) => {
errorStatus.textContent = ""
mainDiv.value =
cypherQuery(editor.getValue())
.then(value => mainDiv.value = value)
.catch(e => {
errorStatus.textContent = e
mainDiv.value = undefined
})
mainDiv.dispatchEvent(new CustomEvent("input"))
}
return mainDiv
}
cypherEditor
Abfragen mit Cypher
Zugriff auf den Knowledge Graphen per Cypher-API
Der Property Graph und die Cypher-API sind experimentell.
Vorausgesetzt wird ein Grundverständnis der Abfragesprache Cypher und des Datenbankschemas.
Abfrage-Editor
Anfrageformat
Der vorläufige API-Endpunkt ist https://graph.nfdi4objects.net/api/cypher. Die Cypher-Abfrage wird mit einer HTTP GET Anfrage im Query-Parameter query
übergeben (siehe API-Dokumentation).
Rückgabeformat
Das Rückgabeformat ist ein JSON-Array von Objekten, deren Felder den Abfragefeldern entsprechen. Die Feldwerte werden folgendermaßen von Cypher nach JSON gemappt:
Cypher Datentyp | JSON Datentyp | Beispiel |
---|---|---|
NULL |
null |
null |
BOOLEAN |
boolean |
true |
INTEGER |
number |
123 |
FLOAT |
number |
3.14 |
STRING |
string |
"äbć" |
ByteArray |
string |
"A2+/" (Base64) |
LIST |
array |
[0,8,15] |
MAP |
string |
{"x":"?","y":42} |
Temporal (DATE , LOCAL TIME , DURATION …) |
string (ISO-8601) |
|
POINT |
string (WKT) |
|
NODE |
object |
|
RELATIONSHIP |
object |
|
PATH |
array |
Array aus NODE und RELATIONSHIP Objekten. |
Die Kodierung von NODE
und RELATIONSHIP
Objekten entspricht der Kodierung von Knoten und Kanten im Format PG-JSONL mit dem Unterschied, dass Property-Werte nicht zwingend vom Type array
sind, sondern auch null
, boolean
, number
und string
sein können. Die Kodierung von PATH
Objekten entspricht der Kodierung von Graphen im Format PG-JSON mit der gleichen Erweiterung von Property-Werten.