דרישות הסכימה של אלגוריתם Spanner Graph ותאימות התכונות

דרישות לגבי סכימה

אפשר להריץ אלגוריתמים של Spanner Graph על גרפים עם סכימות שעומדות בדרישות הבאות:

דוגמה לסכימה לא נתמכת:

-- Unsupported: Both `Person` and `Account` can only be referred to via label `Entity`.
CREATE PROPERTY GRAPH FinGraph
  NODE TABLES (
    Person KEY (id)
      LABEL Entity PROPERTIES (...),
    Account KEY (id)
      LABEL Entity PROPERTIES (...)
  );

דוגמה לסכימה נתמכת:

-- Supported: Even though label `Entity` refers to both `Person` and `Account`,
-- label `Customer` uniquely identifies `Person`, label `Account` uniquely identifies `Account`.
CREATE PROPERTY GRAPH FinGraph
  NODE TABLES (
    Person KEY (id)
      LABEL Customer PROPERTIES (...)
      LABEL Entity PROPERTIES (...),
    Account KEY (id)
      LABEL Account PROPERTIES (...)
      LABEL Entity PROPERTIES (...)
  );

תאימות התכונות

בקטע הזה מפורטת התאימות של שאילתות אלגוריתמים לתכונות כלליות של גרפים.

סעיף MATCH נתמך

כשמשתמשים בפסוקית MATCH במבנה של שאילתת אלגוריתם כדי להגדיר את גרף הקלט לאלגוריתמים, צריך להביא בחשבון את הנקודות הבאות:

  1. כל MATCH חייב להכיל רק תבנית אלמנט אחת (צומת או קצה) עם משתנה אחד בעל שם.
  2. כשדפוס קצה כולל דפוסים מפורשים לצמתי קצה, אל תשתמשו בתווית צומת או במשתנה בדפוסי הצמתים.
  3. אפשר להשתמש בסעיף WHERE בתבנית הרכיב אם הוא לא מתייחס למשתנים שהוגדרו במקום אחר.
  4. ביטוי התווית בסעיף MATCH צריך לזהות באופן ייחודי טבלת רכיבים אחת.

בדוגמאות הבאות אפשר לראות סעיפים נתמכים של MATCH:

-- Supported: Assuming only 1 element table has `Account` label:
MATCH (a:Account)

MATCH (a:Account WHERE a.id > 400)

MATCH (a:Account WHERE a.id IN [101, 102, 105])

MATCH -[e:Transfers WHERE e.amount < 500]->

בדוגמאות הבאות מוצגים סעיפים של MATCH שלא נתמכים:

-- Unsupported: End nodes for edge patterns cannot have labels or named variables.
MATCH (a:Account)-[]->

-- Unsupported: Each MATCH can only name one variable.
MATCH (a:Account)-[e:Transfers]->

-- Unsupported: If there are multiple node element tables in the graph, each MATCH
-- must uniquely identify one element table.
MATCH (a)

-- Unsupported: The `Entity` label maps to both `Account` and `Person` node element tables.
MATCH (a:Account | Entity)

שימוש בפסוקית RETURN

סעיף RETURN במבנה של שאילתת אלגוריתם מגדיר את הנתונים שמוחזרים על ידי שאילתת האלגוריתם. אפשר להפנות לעמודות מחתימת הפלט של האלגוריתם בסעיף RETURN, עם כמה מגבלות:

  • אם אלגוריתם מחזיר Node, אפשר להחזיר כל מאפיין של הצומת. אפשר גם להחזיר את ELEMENT_DEFINITION_NAME של הצומת.
  • אם אלגוריתם מחזיר Path, אפשר להחזיר PATH_LENGTH(path).
  • האלגוריתם יכול להחזיר כל פלט סקלרי.
  • אפשר להחזיר כל קבוע מילולי.

בדוגמאות הבאות אפשר לראות סעיפים נתמכים של RETURN:

-- Supported.
CALL PageRank(...) YIELD node, score
RETURN ELEMENT_DEFINITION_NAME(node) AS node_type, node.id, score

-- Supported: You can return constants.
CALL PageRank(...) YIELD node, score
RETURN node.id, score, "pagerank-run1" AS algo_run_id

-- Supported.
CALL ShortestPath(...) YIELD source_node, target_node, path, cost
RETURN source_node.id AS source_id, target_node.id AS target_id,
  PATH_LENGTH(path) AS length, cost

בדוגמאות הבאות מוצגים סעיפים של RETURN שלא נתמכים:

-- Unsupported: You cannot return the graph element `node` directly.
RETURN node, score

-- Unsupported: You can only return properties of `node`. Applying a function to a node property
-- is not supported.
RETURN node.id + 1, score

-- Unsupported: You can only return the scalar `score` directly from the algorithm output. Applying
-- a function to scalar output is not supported.
RETURN node.id, score + 1

-- Unsupported: General function calls are not allowed.
RETURN JSON_OBJECT(node.id, score) as json_obj

אין תמיכה בפרמטרים

שאילתות אלגוריתם לא תומכות בפרמטרים של שאילתה.

תמיכה בגרפים שנוצרו מתצוגה

כשיוצרים את הגרף בתצוגה מפורטת, אפשר להשתמש בשאילתות אלגוריתם רק אם הצמתים והקשתות (כולל צמתי הקצה של הקשת) שמשמשים להגדרת קלט האלגוריתם לא מבוססים על תצוגה מפורטת.

המאמרים הבאים