Ein Wissensgraph kann abgefragt werden, um nach einer Teilmenge der darin enthaltenen Entitäten und Beziehungen zu suchen und um zu ermitteln, wie die verschiedenen Entitäten miteinander verbunden sind. Die Provenienzdatensätze können genutzt werden und optional in die Abfrageergebnisse eingebunden werden. Beispiele:
- Mithilfe eines Wissensgraphen, der die Ausbreitung einer Infektionskrankheit darstellt, können Sie mit Menschen und Tieren arbeiten, die durch eine beliebige Beziehung mit einer bestimmten Einrichtung verknüpft sind.
- Mithilfe eines Wissensgraphen, der eine Lieferkette in der Fertigung darstellt, können Sie mit allen Inhalten arbeiten, die mit einem bestimmten Teil, einschließlich Lieferanten, Liefermethoden, Lagern usw., verknüpft sind.
- Mithilfe eines Wissensgraphen, der eine Organisation darstellt, können Sie mit Geräten eines bestimmten Typs arbeiten und deren Eigenschaften, einschließlich der Namen der zuständigen Mitarbeiter, auflisten.
- Mithilfe eines Wissensgraphen, der Schildkröten und ihre Lebensräume darstellt, können Sie Lebensräume ermitteln, in denen das Risikoniveau unter Verwendung von Informationen in einer spezifischen Bewertung von Einflüssen auf die Umwelt festgelegt wurde.
Indem Sie eine Abfrage bei einem Wissensgraphen durchführen, können Sie die Teilmenge der Entitäten und Beziehungen oder deren Eigenschaften identifizieren. Verwenden Sie die Abfragesprache openCypher zum Schreiben von openCypher-Abfragen, um zugehörige Entitäten und ihre Eigenschaften zu ermitteln, und arbeiten Sie mit diesem eingeschränkten Informationssatz im Wissensgraphen, in einer Karte oder einem Verbindungsdiagramm.
Schreiben einer openCypher-Abfrage
openCypher-Abfragen sind für Graph-Datenbanken das, was SQL-Abfragen für relationale Datenbanken sind. Die Grundstruktur der Abfrage ist so angelegt, dass damit Entitäten gesucht oder abgeglichen und zurückgegeben werden, wobei die zu suchenden Entitäten in Klammern angegeben werden. Mit der Abfrage MATCH (e) RETURN e werden beispielsweise Entitäten eines beliebigen Typs zurückgegeben. Die Anzahl der zurückgegebenen Entitäten wird nur durch die Konfiguration des Wissensgraphen begrenzt. Verwenden Sie zum Einschränken der Anzahl der zurückgegebenen Graph-Elemente einen LIMIT-Ausdruck. Mit der Abfrage MATCH (e) RETURN e LIMIT 5 werden beispielsweise fünf Entitäten eines beliebigen Typs zurückgegeben.
Im Rahmen der Abfrage können anhand von Symbolen, die einen Pfeil bilden, miteinander verbundene Entitäten ermittelt werden. Mit der Abfrage MATCH (e1)-->(e2) RETURN e1,e2 werden beispielsweise Entitätenpaare (e1 und e2) zurückgegeben, wobei zwischen den beiden Entitäten eine beliebige Art von Beziehung besteht und Entität e1 über eine beliebige Verbindung mit Entität e2 verbunden ist. Wenn die Abfrage so geschrieben wird, dass der Pfeil in die andere Richtung zeigt, wird davon ausgegangen, dass die Verbindungen bei der Ursprungsentität e2 beginnen und bei der Zielentität e1 enden: MATCH (e1)<--(e2) RETURN e1,e2. Die Art der Beziehungen zwischen Entitäten wird als Muster bezeichnet.
Im Rahmen der Abfrage können in eckigen Klammern bestimmte zu berücksichtigende Beziehungen ermittelt werden. Mit der Abfrage MATCH (e1)-[]->(e2) RETURN e1,e2 werden beispielsweise Entitätenpaare (e1 und e2) zurückgegeben, wobei die beiden Entitäten über eine beliebige Art von Einzelbeziehung miteinander verbunden sind. Diese Abfrage zeigt eine andere Möglichkeit, die gleichen oben abgebildeten Abfragen darzustellen, und veranschaulicht die bevorzugte Abfragesyntax. Die Abfrage kann so geändert werden, dass das gesamte Tupel zurückgegeben wird, mit dem die Beziehung beschrieben wird, indem die Ursprungsentität e1, die Beziehung r und die Zielentität e2 wie folgt zurückgegeben werden: MATCH (e1)-[r]->(e2) RETURN e1,r,e2. Mit ähnlichen Abfragen (MATCH (e1)-[ ]->( )-[ ]->(e2) RETURN e1,e2 oder MATCH (e1)-[*2]->(e2) RETURN e1,e2) werden Entitätenpaare zurückgegeben, bei denen die Entitäten über zwei Beziehungen in der gleichen Richtung miteinander verbunden sind. Mit Abfragen können auch Muster identifiziert werden, in denen Beziehungen unterschiedliche Richtungen haben, beispielsweise MATCH (e1)-[ ]->(e2)<-[ ]-(e3) RETURN e1,e2,e3.
Die oben angegebenen Beispielabfragen können bei jedem Wissensgraph verwendet werden.
Eine Abfrage kann an einen bestimmten Wissensgraph angepasst werden, indem die Entitätstypen, die Beziehungstypen und die im entsprechenden Datenmodell definierten Eigenschaften referenziert werden. Durch Einbinden des Namens eines bestimmten Entitätstyps in eine Abfrage lassen sich die Graph-Elemente eingrenzen, die berücksichtigt werden. Mit der Abfrage MATCH (e1:Person)-[r]->(e2) RETURN e1,r,e2 werden beispielsweise alle "Person"-Entitäten e1 zurückgegeben, die über eine Beziehung r mit einer anderen Entität e2 verbunden sind, die einen beliebigen Entitätstyp aufweisen kann. Im Vergleich zum vorherigen Beispiel sind Beziehungen, deren Ursprung eine "Pet"-, "Vehicle"- oder "Dokument"-Entität ist, in den Ergebnissen nicht enthalten.
Durch Hinzufügen von Beziehungs- und Entitätstypen zu den anderen Eigenschaften einer Abfrage kann diese so eingeschränkt werden, dass bestimmte Beziehungstypen und bestimmte verbundene Entitäten berücksichtigt werden. Mit der Abfrage MATCH (p:Person)-[v:HasVehicle]->(e) RETURN p,v,e werden beispielsweise alle "Person"-Entitäten p zurückgegeben, die über eine "HasVehicle"-Beziehung v mit einer anderen Entität e beliebigen Typs verbunden sind. Die Variablen p und v werden den "Person-"Entitäten bzw. "HasVehicle"-Beziehungen zugewiesen, sodass mit der Abfrage zugehörige Informationen zurückgegeben werden können. Im Vergleich zum vorherigen Beispiel sind Beziehungen, deren Ziel eine "Pet"- oder "Document"-Entität ist, in den Ergebnissen nicht enthalten. Je nach Datenmodell des Wissensgraphen kann es sich bei der Zielentität e um eine generische "Vehicle"-Entität oder um eine Entität aus einer Reihe spezifischer Entitätstypen wie "Automobile", "Motorcycle", "Boat", "Airplane", "Commercial Vehicle" usw. handeln.
In den Abfrageergebnisse können bestimmte Eigenschaften von Entitäten und Beziehungen enthalten sein. Mit MATCH (p:Person)-[:HasVehicle]->(e) RETURN p,e.make,e.model,e.year wird beispielsweise die weiter oben definierte Abfrage ausgeführt. Anstelle der Zielentität werden als Ergebnisse jedoch die in den verschiedenen Fahrzeugeigenschaften Marke ("make"), Modell ("model") und Baujahr ("year") gespeicherten Werte angezeigt. In diesem Beispiel wurde der in der Abfrage berücksichtigten Beziehung keine Variable zugewiesen, da die Daten der Beziehung in den Abfrageergebnissen nicht enthalten sind oder an anderer Stelle in der Abfrage ausgewertet werden.
Entsprechend können die Entitäten und Beziehungen, die ausgewertet werden, durch Festlegen von Eigenschaften eingeschränkt werden, mit denen die relevanten Entitäten und Beziehungen definiert werden. Die zu berücksichtigenden Eigenschaften werden durch Hinzufügen einer WHERE-Klausel zur Abfrage definiert. Wie bei den oben gezeigten Beispielen müssen Variablen zugewiesen werden, um in der WHERE-Klausel bestimmte Informationen zu Entitäten und Beziehungen zu referenzieren. Im Rahmen der folgenden Abfrage werden beispielsweise nur "Person"-Entitäten mit einem bestimmten "lastName"-Eigenschaftswert ausgewertet. "HasVehicle"-Beziehungen werden nur berücksichtigt, wenn deren "endDate"-Eigenschaft einen NULL-Wert enthält. Und verbundene "Vehicle"-Entitäten werden nur berücksichtigt, wenn die "year"-Eigenschaft einen Wert vor 1980 enthält: MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle) WHERE p.lastName = 'Doe' and hv.endDate IS NULL and v.year < 1980 RETURN p,p.firstName,v,v.make,v.year.
Anstatt eine Reihe einzelner Entitäten und Beziehungen zurückzugeben, kann Ihre Abfrage die vollständige durch ein Muster dargestellte Verbindung zurückgeben. Weisen Sie dazu das in der MATCH-Anweisung definierte Muster einer Variablen zu, und geben Sie diese Variable zurück. Mit der Abfrage MATCH path = (:Person)-[:HasVehicle]->(:Vehicle) RETURN path beispielsweise wird eine Liste mit Verbindungen für alle Entitäts- und Beziehungskombinationen zurückgegeben, die dem angegebenen Muster entsprechen. Jede Verbindung enthält alle Teile des übereinstimmenden Musters: "Person", "HasVehicle"-Beziehung und "Vehicle". Sie müssen den einzelnen Teilen dieses Musters keine Variablen zuweisen, da diese von der Abfrage nicht zurückgegeben werden.
Verwenden von Datums-/Uhrzeitwerten in einer Abfrage
Wenn Sie einen Wissensgraphen über einen gehosteten Graph Store oder einen NoSQL-Data-Store mit von ArcGIS verwalteten Daten erstellen, stehen mehrere Optionen zum Speichern von Zeitdaten mit ArcGIS Enterprise 11.2 und höheren Versionen zur Verfügung. Wenn Sie Zeitdaten speichern und abfragen, müssen Sie berücksichtigen, wo sich die Events befinden und wo sich die Personen befinden, die auf die Daten zugreifen.
Wenn Sie die Daten lokal speichern und im selben Gebiet verwenden, können Sie die Datums- und Zeitinformationen ohne die Zeitzone zu berücksichtigen speichern. Diese Daten können in Eigenschaften mit dem Datentyp "date" gespeichert werden. Wenn die Daten aus verschiedenen Zeitzonen stammen oder von dort abgefragt werden, müssen Sie darauf achten, dass trotz Ihres Standorts und Ihrer Zeitzone korrekte Werte gespeichert und abgefragt werden. Eigenschaften mit einem Datentyp "Zeitstempelversatz" ermöglichen es Ihnen, Datums-/Uhrzeitwerte aufzuzeichnen, die die Zeitzone, in der das Event aufgetreten ist, und die Zeitzone, in der die Daten verwendet werden, berücksichtigen.
Sie können über eine openCypher-Abfrage auf die im Wissensgraphen gespeicherten Datums- und Uhrzeitwerte zugreifen. Um die richtigen Ergebnisse zu erhalten, müssen spezifische Funktionen verwendet werden, um die Eigenschaften der einzelnen Datentypen entsprechend der unten stehenden Tabelle abzufragen. Die Verwendung alternativer Funktionen kann zu einem Fehler oder unerwarteten Ergebnissen führen. Zeitwerte werden immer im ISO 8601 Datums-/Uhrzeitformat an Abfragen übergeben oder von diesen zurückgegeben.
Feldtyp | Funktion | Syntax | Beispiel |
---|---|---|---|
localdatetime() | localdatetime('YYYY-MM-DDThh:mm:ss.sss') | localdatetime('2015-07-24T21:40:53.142') | |
date() | date('YYYY-MM-DD') | date('2015-07-24') | |
localtime() | localtime('hh:mm:ss.sss') | localtime('21:40:53.142') | |
datetime() | datetime('YYYY-MM-DDThh:mm:ss.sssZ') oder datetime('YYYY-MM-DDThh:mm:ss.sss+00:00') | datetime('2015-07-24T21:40:53.142Z') oder datetime('2015-07-21T21:40:53.142-08:00') |
Um eine Wissensgraph-Eigenschaft mit dem Datentyp "Zeitstempelversatz" auszuwerten, verwenden Sie die Funktion datetime() in der openCypher-Abfrage. Verwenden Sie das Datum-Uhrzeitformat YYYY-MM-DDThh:mm:ss.sssZ, wenn der angegebene Wert in koordinierter Weltzeit (UTC) angegeben ist. Verwenden Sie das Format YYYY-MM-DDThh:mm:ss.sss+00:00, wenn es sich bei dem Wert um ein Datum in lokaler Zeit mit dem entsprechenden Zeitzonenversatz handelt. Wenn bei Angabe des Werts in einer Abfrage wesentliche Teile des Datum-Uhrzeitwerts ausgelassen werden, gibt die Abfrage einen Fehler zurück.
Um zum Beispiel alle Fahrzeuge zu finden, die nach einem bestimmten Zeitpunkt gekauft wurden, verwenden Sie eine Abfrage wie z. B. MATCH path=(:Person)-[hv:HasVehicle]->(:Vehicle) WHERE hv.acquisitionDate > datetime('2014-10-18T12:36-08:00') RETURN path. Es werden alle Pfade zurückgegeben, bei denen die HasVehicle-Beziehung über eine acquisitionDate-Eigenschaft mit einem Wert nach 12:36 Uhr Pacific Standard Time am 18. Oktober 2014 verfügt. Pacific Standard Time liegt acht Stunden hinter UTC.
Um nach allen im Jahr 1998 erworbenen Fahrzeugen zu suchen, geben Sie eine Abfrage wie MATCH path=(:Person)-[hv:HasVehicle]->(:Vehicle) WHERE hv.acquisitionDate > datetime('1998-01-01T00:00Z') and hv.acquisitionDate < datetime('1998-12-31T23:59Z') RETURN path ein. Es werden alle Pfade zurückgegeben, bei denen die HasVehicle-Beziehung über eine acquisitionDate-Eigenschaft mit einem Wert zwischen dem 1. Januar und Mitternacht am 31. Dezember UTC im Jahr 1998 verfügt.
Ab ArcGIS Enterprise 11.3 kann eine openCypher-Abfrage Zeitwerte im Wissensgraphen anhand von Zeitdauern bewerten. Dadurch können Sie Zeitunterschiede zwischen Datenpunkten nachvollziehen. Sie können Entitäten und Beziehungen finden, bei denen die in ihren Eigenschaften erfassten Events für eine bestimmte Zeitspanne andauern oder bei denen eine bestimmte Zeitspanne zwischen den Events verstreicht.
Die Zeitdauer wird immer im ISO 8601 Datums-/Uhrzeitformat an Abfragen übergeben oder von diesen zurückgegeben. Zum Beispiel entspricht eine Dauer von P1Y2M3DT4H5M6S einem Zeitintervall von einem Jahr, zwei Monaten, drei Tagen, vier Stunden, fünf Minuten und sechs Sekunden. Bei der Angabe der Dauer können Teile davon weggelassen werden, wenn ihr Wert Null ist. Zum Beispiel kann eine Zeitspanne von eineinhalb Tagen als P1DT12H oder PT36H dargestellt werden. Wenn die Zeichenfolge für die Dauer Zeitkomponenten enthält, muss das Zeichen T nach den Datumskomponenten und vor den Zeitkomponenten angegeben werden.
Zur Berechnung der Zeitspanne zwischen zwei Zeitpunkten können verschiedene Funktionen für die Dauer verwendet werden, wie nachfolgend beschrieben. Die Dauer kann bei Bedarf in bestimmten Zeiteinheiten berechnet werden.
- duration.between(a, b): Die Zeit, die zwischen Zeitpunkt a und Zeitpunkt b verstrichen ist. Es wird eine Zeitdauer zurückgegeben, die die gesamte verstrichene Zeit in Jahren, Monaten, Tagen usw. angibt.
- duration.inMonths(a, b): Die Zeit, die zwischen dem Zeitpunkt a und dem Zeitpunkt b verstrichen ist, wird als Anzahl ganzer Monate berechnet und als Zeitdauer zurückgegeben. Zeitspannen, die kürzer als ein ganzer Monat sind, werden verworfen.
- duration.inDays(a, b): Die Zeit, die zwischen dem Zeitpunkt a und dem Zeitpunkt b verstrichen ist, wird als Anzahl ganzer Tage berechnet und als Zeitdauer zurückgegeben. Zeitspannen, die kürzer als ein ganzer Tag sind, werden verworfen.
- duration.inSeconds(a, b): Die Zeit, die zwischen dem Zeitpunkt a und dem Zeitpunkt b verstrichen ist, wird als Anzahl ganzer Sekunden berechnet und als Zeitdauer zurückgegeben. Zeitspannen, die kürzer als eine ganze Sekunde sind, werden verworfen.
Um Personen zu finden, die ein Fahrzeug verkauft haben, das sie weniger als zwei Jahre besaßen, verwenden Sie zum Beispiel folgende Abfrage: MATCH path=(:Person)-[hv:HasVehicle]->(:Vehicle) WHERE hv.endDate < (hv.acquisitionDate + duration('P2Y')) RETURN path, duration.between(hv.acquisitionDate,hv.endDate) as TimeOwned. Es werden alle Pfade zurückgegeben, bei denen die Beziehung "HasVehicle" eine Eigenschaft "endDate" hat und die Dauer zwischen "endDate" und der Eigenschaft "acquisitionDate" weniger als zwei Jahre beträgt. Die Abfrage liefert sowohl den Pfad als auch die Dauer, die sich das Fahrzeug im Besitz befand.
Bei der Berechnung einer Dauer können Sie anhand einer Datums-/Uhrzeitfunktion an der entsprechenden Stelle das aktuelle Datum oder die aktuelle Uhrzeit als einen der beiden Zeitpunkte angeben. Außerdem können Komponenten der Angabe der Dauer in einer Abfrage abgerufen, zurückgegeben oder verwendet werden. Das folgende Beispiel ermittelt Personen, die vor mehr als vier Jahren ein Fahrzeug gekauft haben: MATCH path=(:Person)-[hv:HasVehicle]->(:Vehicle) WHERE duration.between(hv.acquisitionDate, datetime()).years > 4 RETURN path. Das aktuelle Datum und die Uhrzeit werden in der Abfrage verwendet, indem die Funktion "datetime()" ohne Angabe eines bestimmten Datums verwendet wird. Die Komponente für das Jahr der berechneten Dauer wird dann aufgerufen und ausgewertet, um die passenden Pfade zu ermitteln. Auf diese Weise können Sie auf alle Komponenten der Dauer zugreifen, d. h. auf Tage, Stunden, Minuten usw.
Die Zeitdauer kann auch zwischen Events berechnet werden, die zwischen verbundenen Parteien stattfinden. Die folgende Abfrage wertet beispielsweise einen Wissensgraph aus, um die Beziehung zwischen den Entitäten "Phone" und "Called" sowie die Zeitspanne zwischen den Anrufen zu ermitteln: MATCH (:Phone)-[c1:Called]-(:Phone)-[c2:Called]-(:Phone) WHERE duration.between(c1.datecalled, c2.datecalled).minutes < 45 RETURN c1, c2. Bei dieser Abfrage wird eine Dauer zwischen dem Zeitpunkt berechnet, an dem ein Telefon einen Anruf erhält und einen zweiten Anruf tätigt. Die Eigenschaft "minutes" der Dauer wird abgefragt, und wenn weniger als fünfundvierzig Minuten zwischen den Anrufen vergangen sind, werden sowohl der erste als auch der zweite Anruf von der Abfrage zurückgegeben.
Verwenden von Provenienzdatensätzen in einer Abfrage
Wenn Sie einen Wissensgraphen über einen gehosteten Graph Store oder einen NoSQL-Data-Store mit von ArcGIS verwalteten Daten erstellen, kann Provenienz aktiviert werden. Mit Provenienzdatensätzen können Sie angeben, woher die Inhalte des Wissensgraphen stammen. Sie können angeben, dass der in einer Eigenschaft einer Entität oder Beziehung gespeicherte Wert von einem bestimmten Dokument oder einer bestimmten Website abgeleitet wurde. Diese Informationen können zu einem späteren Zeitpunkt genutzt werden, wenn Sie eine Abfrage des Wissensgraphen durchführen. Sie können Entitäten und Beziehungen mit Eigenschaftswerten suchen, die aus einer bestimmten Informationsquelle stammen.
Provenienzdatensätze sind standardmäßig von allen Abfragen ausgenommen. In ArcGIS Pro müssen Sie die Option Provenienz einbinden aktivieren, um die in Provenienzdatensätzen gespeicherten Informationen in der Abfrage zu nutzen und die Provenienzdatensätze in die Abfrageergebnisse einzubinden. Wenn Sie eine benutzerdefinierte Anwendung erstellen, die über eine der verfügbaren Entwickler-APIs mit einer ArcGIS Knowledge Server-Site kommuniziert, muss die Client-Anwendung angeben, dass die Abfrageergebnisse die Provenienzdatensätze einbinden sollen.
Die Abfrage muss angeben, welche Entitäten und Beziehungen mit Provenienzdatensätzen verknüpfte Eigenschaften haben, indem die Instanzkennungen der Graph-Elemente mit den in den Provenienzdatensätzen gespeicherten Instanzkennungen verglichen werden. Die Abfrage kann auch Eigenschaften der Graph-Elemente und der Provenienzdatensätze evaluieren, um Ergebnisse zu erhalten. Die Provenienzdatensätze selbst oder ihre Eigenschaften können optional in die Abfrageergebnisse eingebunden werden.
Um beispielsweise die Eigentümer aller Fahrzeuge zu finden, bei denen das California Department of Motor Vehicles die Quelle der in den Eigenschaften der Beziehung "HasVehicle" gespeicherten Informationen ist, müssen Sie eine Abfrage wie MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle), (pr:Provenance) WHERE ID(hv)=pr.instanceID and pr.sourceName ="California Department of Motor Vehicles" RETURN p,hv,v,pr verwenden. Die Abfrage bewertet, welche Beziehungen " HasVehicle" über Provenienzdatensätze verfügen, indem die Instanzkennungen der Beziehungen mit der Eigenschaft "instanceID" der Provenienzdatensätze verglichen werden. Die evaluierten Provenienzdatensätze sind nur diejenigen, bei denen die Eigenschaft "sourceName" des Datensatzes über einen geeigneten Wert verfügt. Darüber hinaus werden die mit den Beziehungen "HasVehicle" verknüpften Entitäten der Typen "Person" und "Vehicle, die gefunden wurden, und die Provenienzdatensätze selbst auch in die Abfrageergebnisse eingebunden.
Verwenden von räumlichen Operatoren in einer Abfrage
ArcGIS Knowledge unterstützt die Verwendung von räumlichen Operatoren in openCypher-Abfragen mit Punkt-, Multipoint-, Linien- und Polygongeometrie. Dies sind dieselben Geometrietypen, die für die Entitätstypen unterstützt werden, die über einen gehosteten Graph Store oder einen NoSQL-Data-Store mit von ArcGIS verwalteten Daten in einem Wissensgraphen erstellt werden. Wenn der Wissensgraph einen NoSQL-Data-Store mit vom Benutzer verwalteten Daten verwendet, werden möglicherweise andere Geometrietypen unterstützt.
Die folgenden räumlichen Operatoren werden unterstützt:
- ST_Equals: Gibt Entitäten mit gleichen Geometrien zurück. Die Syntax lautet esri.graph.ST_Equals(geometry1, geometry2).
- ST_Intersects: Gibt Entitäten mit sich selbst schneidenden Geometrien zurück. Die Syntax lautet esri.graph.ST_Intersects(geometry1, geometry2).
- ST_Contains: Gibt Entitäten mit in der angegebenen Geometrie enthaltenen Geometrien zurück. Die Syntax lautet esri.graph.ST_Contains(geometry1, geometry2).
Räumliche Operatoren können in die WHERE-Klausel einer Abfrage aufgenommen werden. Die Geometrieparameter können die Geometrie einer Entität referenzieren, oder Sie können eine Geometrie angeben, die eine räumliche Position darstellt. Sie können mit dem Operator esri.graph.ST_WKTToGeometry(string) eine Geometrie aus einer Zeichenfolge erstellen, wobei der Zeichenfolgenparameter ein im WKT-Format (Well-Known Text) angegebenes OGC Simple Feature ist. Beispiel: Um eine Geometrie zu erstellen, die die Koordinaten 117.1964763°W 34.0572046°N darstellt, verwenden Sie den Operator esri.graph.ST_WKTToGeometry("POINT (-117.1964763 34.0572046)"). Eine auf diese Weise erstellte Geometrie kann nur im ersten Geometrie-Argument für die räumlichen Operatoren angegeben werden. Das zweite Geometrie-Argument muss stets die mit einer Entität im Wissensgraphen verknüpfte Geometrie referenzieren.
In den folgenden Beispielen können Entitäten des Typs "Person" über Punkt-Geometrien und Entitäten des Typs "Einrichtung" über Polygon-Geometrien verfügen:
- Von der Abfrage MATCH (p1:Person), (p2:Person) WHERE esri.graph.ST_Equals(p1.shape, p2.shape) RETURN p1, p2 werden die für Personen stehenden Entitäten p1 und p2 mit gleicher Form zurückgegeben. Das bedeutet, beide Personenentitäten verfügen über identische Positionsgeometrien.
- Von der Abfrage MATCH (e:Employee), (f:Facility) WHERE esri.graph.ST_Intersects(e.shape, f.shape) RETURN e, f werden Mitarbeiterentitäten (Employee; e) und Einrichtungsentitäten (Facility; f) zurückgegeben, wobei sich die Geometrien der Mitarbeiter- und Einrichtungsentitäten schneiden.
- Von der Abfrage MATCH (f:Facility) WHERE esri.graph.ST_Contains(esri.graph.ST_WKTToGeometry("POINT (-117.1964763 34.0572046)"), f.shape) RETURN f werden Einrichtungsentitäten (f) zurückgegeben, deren Geometrien den angegebenen Punkt enthalten.
Das räumliche Dienstprogramm ST_GeoDistance mit der Syntax esri.graph.ST_GeoDistance(geometry, geometry) ist ebenso verfügbar. Von diesem Dienstprogramm wird die Entfernung zwischen den beiden Geometrien zurückgegeben. Beispielsweise speichert in der Abfrage MATCH (n), (e) WHERE esri.graph.ST_GeoDistance(n.shape, e.shape) as distance RETURN n, e die Entfernungsvariable in der WHERE-Klausel die geodätische Entfernung, die zwischen den Entitäten n und e berechnet wird.
Weitere Informationen zu openCypher-Abfragen
Weitere Informationen zur openCypher-Abfragesprache finden Sie in einem von openCypher Implementers Group bereitgestellten Dokument. In ArcGIS Knowledge werden nicht alle Aspekte der Abfragesprache openCypher unterstützt. So können Abfragen beispielsweise nicht zum Aktualisieren des Wissensgraphen verwendet werden, sondern nur zum Zurückgeben von Werten.
In ArcGIS Pro erfahren Sie mehr über openCypher, indem Sie sich die Abfragen ansehen, mit denen Daten aus einem Wissensgraphen abgerufen und Histogramme erstellt werden. Klicken Sie im Bereich Durchsuchen und Filtern auf der Registerkarte Histogramm auf die Schaltfläche Einstellungen und dann auf Abfrage an Registerkarte "Abfrage" senden. Die Abfrage, mit der Sie Daten für die aktuellen Histogramme abgerufen haben, wird im Textfeld Abfrage angezeigt.