Skip To Content

查询知识图谱的内容

您可以查询知识图谱以找到其包含的实体和关系的子集,并确定不同实体的连接方式。 请参阅以下示例:

  • 从代表传染病传播的知识图谱中,使用通过与给定设施点的任何关系关联的人类及动物。
  • 从代表制造供应链的知识图谱中,使用与特定部分相关联的任何内容,包括供应商、交付方式、仓库等。
  • 从代表组织的知识图谱中,使用给定类型的设备,并列出其属性,包括负责员工的姓名。
  • 在表示乌龟及其栖息地的知识图谱中,识别栖息地,其中使用特定环境影响评估中的信息建立风险等级。

您可以通过查询知识图谱来识别实体和关系的子集或其属性。 使用 openCypher 查询语言编写 openCypher 查询以发现相关实体及其属性,并在知识图谱、地图或链接图表使用这组受限制的信息。

查询视图 查询视图 是每个 Knowledge Studio 工程中的默认视图,用于查询工程知识图谱的内容。 查询内容(下图中的数字 1)列出了可在其中编写新查询的查询编辑器 查询视图 以及保存工程时保留在工程中的存储查询集合 存储查询集合。 查询框(下图中的数字 2)是一个多行文本框,用于设置查询格式并运行 openCypher 查询。 默认情况下,查询结果(下图中的数字 3)将显示在表格中,可以通过该表格来已返回图谱记录(下图中的数字 4)的属性并从结果中选择记录。 可以在地图或链接图表预览中预览结果和选择内容,并使用结果工具栏(下图中的数字 5)添加或移除选择内容中的所有结果。 上下文工具栏(下图中的数字 6)提供了特定于查询的工具,例如将查询存储在工程中以供以后使用。

查询视图主要区域的图表。

查询调查的知识图谱

可以使用查询视图 查询视图 查询调查中知识图谱的实体和关系。

  1. 单击调查内容窗格中的查询 查询视图 以打开查询视图。

    查询视图随即打开,其中查询框打开,但未显示任何结果。 查询框为多行文本框,用于格式化 openCypher 查询。

  2. 在查询框中键入查询。 按 Enter 键将指针移动至新行并继续输入。

    例如,诸如 MATCH (e) RETURN e 等查询会返回知识图谱中的所有实体。 此查询适用于所有知识图谱。

    提示:

    如果您不知道查询将返回的结果数量,请在查询末尾添加 LIMIT 1000,以避免意外返回数万条记录,这可能会导致浏览器超时。

  3. 单击运行

    查询结果随即显示在结果区域中。 查询返回的实体和关系记录由相应图标标识。

编写 openCypher 查询

openCypher 查询之于图谱数据库就像 SQL 查询之于关系数据库。 查询的基本结构是查找或匹配实体并返回这些实体,您要查找的实体将在括号中标识。 例如,查询 MATCH (e) RETURN e 可返回任意类型的实体。 返回的实体数量仅受限于知识图谱配置。 要限制返回的图谱项目数量,请使用 LIMIT 表达式。 例如,查询 MATCH (e) RETURN e LIMIT 5 可返回五个任意类型的实体。

查询结果默认以表格形式列出

查询可以识别使用组成箭头的符号关联的实体。 例如,查询 MATCH (e1)-->(e2) RETURN e1,e2 将返回实体对 e1 和 e2,其中两个实体之间存在任意类型的关系,并且从实体 e1 到实体 e2 的路径均连接实体。 如果在编写查询时使用指向另一个方向的箭头,则路径将被视为从初始实体 e2 开始到目标实体 e1:MATCH (e1)<--(e2) RETURN e1,e2。 实体之间相互关联的方式称为模式。

查询返回的相关实体将显示在结果表中。

查询可以识别特定关系,这些关系应采用方括号括起来。 例如,查询 MATCH (e1)-[]->(e2) RETURN e1,e2 将返回实体对 e1 和 e2,其中任意类型的单个关系连接两个实体。 此查询显示了表示上述相同查询的另一种方式,并演示了首选查询语法。 查询可以更改为返回描述关系的整个元组,方法是返回初始实体 e1、关系 r 和目标实体 e2,如下所示:MATCH (e1)-[r]->(e2) RETURN e1,r,e2。 类似查询 MATCH (e1)-[ ]->( )-[ ]->(e2) RETURN e1,e2MATCH (e1)-[*2]->(e2) RETURN e1,e2 将返回由两个相同方向的关系连接的实体对。 查询还可以识别关系具有不同方向的模式,例如 MATCH (e1)-[ ]->(e2)<-[ ]-(e3) RETURN e1,e2,e3

将返回相关实体和连接它们的实体。

上方示例查询可用于任意知识图谱。

将返回 Person 实体作为关系源的关系。

您可以将查询限制为考虑特定的关系类型和特定的关联实体,方法是在查询的其他部分添加关系类型和实体类型。 例如,MATCH (p:Person)-[v:HasVehicle]->(e) RETURN p,v,e 将返回满足以下条件的所有 Person 实体 p:HasVehicle 关系 v 将 Person 连接到另一个任意类型的实体 e。 由于变量 p 和 v 将分别分配给 Person 实体和 HasVehicle 关系,因此查询可以返回有关它们的信息。 与之前的示例相比,Pet 或 Document 实体作为目标实体的关系不包含在结果中。 目标实体 e 可能是常规的 Vehicle 实体,也可能是一系列特定的实体类型之一(例如 Automobile、Motorcycle、Boat、Airplane、Commercial Vehicle 等),具体取决于知识图谱的数据模型。

将返回 Vehicle 实体作为关系目标的关系。

查询结果中可以包含特定的实体和关系属性。 例如,MATCH (p:Person)-[:HasVehicle]->(e) RETURN p,e.make,e.model,e.year 将运行的查询与之前定义的查询相同。 但是,结果将分别显示存储在多个实体属性中的值(车辆的品牌、型号和年份),而不是显示目标实体本身。 在此示例中,没有为查询考虑的特定关系分配变量,因为关系的数据未包含在查询结果中或未在查询的其他位置进行评估。

Vehicle 目标实体的属性将包含在结果中。

同样,您可以通过指定定义感兴趣的实体和关系的属性来约束评估的实体和关系。 可以通过向查询添加 WHERE 子句来定义要考虑的属性。 对于以上示例,必须分配变量以引用有关 WHERE 子句中的实体和关系的特定信息。 例如,在以下查询中,仅会评估具有特定的 lastName 属性值的 Person 实体;仅在 HasVehicle 关系的 endDate 属性具有 NULL 值时考虑该关系;并且仅在相关的 Vehicle 实体的年份属性值早于 1980 时考虑该实体: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

将考虑初始实体、关系和目标实体的属性以获得一组特定的结果。

您的查询可以返回由模式表示的完整路径,而非返回一系列单独的实体和关系。 为此,请将在 MATCH 语句中定义的模式分配给某个变量,然后返回该变量。 例如,查询 MATCH path = (:Person)-[:HasVehicle]->(:Vehicle) RETURN path 将返回满足指定模式的所有实体和关系组合的路径列表。 每条路径将包含匹配模式的所有部分:Person、HasVehicle 关系和 Vehicle。 您无需将变量分配给此模式的各个部分,因为该查询不会返回这些部分。

路径包含匹配模式的所有部分。

修改并更新查询结果

可以通过评估特定图谱项目类型和特定属性值来检索知识图谱中的一组重点实体和关系。

  1. 在查询框中单击。
  2. 更新现有 openCypher 查询的文本。

    例如,将查询更改为 MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle) WHERE v.year < 2005 RETURN p, p.firstName, p.phoneNumber, hv, v, v.make, v.model, v.year 以返回所有与 Vehicle 实体具有 HasVehicle 关系且 Vehicle 的年份属性早于 2005 的所有 Person 实体。 结果将包含 Person 实体的 firstName 和 phoneNumber 属性值、HasVehicle 关系和 Vehicle 实体的品牌、型号和年份属性。

    Enter 键可移动指针或将一些查询文本移动到多行文本框中的新行。 为清楚起见,请使用所需数量的行。

    使用多行查询文本框时,查询可以跨越多行。
  3. 单击运行以获取新结果。

    查询结果随即显示在结果部分中。 查询返回的实体和关系由适当的图标标识。

    查询结果
  4. 或者,单击清除以从查询框中移除当前查询的文本。

存储查询

可以存储想要作为调查的一部分保留的单个查询。 保存工程时,已存储查询将保存在工程中,并在查询内容窗格的已存储查询部分 已存储查询集合 中列出。

  1. 单击查询上下文工具栏中的存储为新查询 存储为新查询

    随即出现新的已存储查询模式。

    “存储为新查询”模式
  2. 或者:
    • 标题输入区域中键入查询的名称。
    • 描述文本区域中键入查询的描述。 描述将为查询结果提供上下文,而无需阅读 openCypher 查询。
  3. 单击存储

    查询将存储在查询内容窗格的已存储查询部分 已存储查询集合 下。

  4. 单击已存储查询 已存储查询 以运行查询并查看结果。

    已存储查询将在选中后立即运行。 将在结果上方提供查询的标题和描述。 查询框被隐藏。

    已存储查询的结果表
  5. 单击显示查询框可在查询框中显示 openCypher 查询文本。
  6. 在查询文本框中单击并修改现有调查。
  7. 单击查询上下文工具栏中的更新已存储查询 更新已存储查询,更新已存储查询以反映您的更改。
  8. 查询内容中单击此已存储查询的选项菜单 选项
  9. 单击重命名项目和描述 重命名,更新查询的标题描述文本框以反映您的更改。
  10. 单击应用
  11. 或者,单击选项菜单 选项 中此已存储查询的删除 删除,从工程中移除已存储查询。

探索查询结果

一个 openCypher 查询可以返回多种结果。 当查询返回实体或关系列表时,它们将显示在结果列表中,每行一个实体或关系。 查询返回的值将按照查询返回语句中列出的顺序显示在列中。

openCypher 查询可能会返回显示哪些实体与另一个实体具有给定关系的结果。 在这种情况下,结果表将为每个三元组显示一行,其中三元组由源实体、关系和目标实体组成。 例如,诸如 MATCH (p:Person)-[r]->(e) RETURN p,r,e 之类的查询将返回一个结果列表,结果表中的每一行代表一个人、该人与另一个实体之间的关系以及关系的目标实体。 在这种情况下,结果表将具有一个标题为 Value 0 的人员列,一个标题为 Value 1 的关系列,以及一个标题为 Value 2 的目标实体标题。

查询结果返回了源实体和目标实体以及连接它们的关系

相反,如果查询返回实体或关系的特定属性,则结果列表将在每列中显示这些值。 例如,诸如 MATCH (p:Person)-[:HasVehicle]->(v) RETURN p,v,v.year 之类的查询将返回 Value 0 列中 Person 实体的显示名称、Value 1 列中 Vehicle 实体的显示名称,以及 Value 2 列中 Vehicle 实体的年份属性值。 如果实体没有查询所返回的特定属性的值,您将看到 (NULL) 作为没有值可显示的事实的表示。

下面的示例说明了一个查询,该查询返回一个 Person 实体,其中的人员参与了与车辆的 HasVehicle 关系。 该查询还返回 HasVehicle 关系的 acquisitionDate 属性,以及 Vehicle 实体的 make 属性。

查询结果返回了一个 Person 实体,其中的人员参与了与车辆的 HasVehicle 关系以及车辆实体的属性。

包含实体 实体 或关系 关系 的列将显示图谱项目的显示名称及其图标。 在上面的屏幕截图中,返回的 Person 实体显示在 Value 0 列中。 HasVehicle 关系的 acquisitionDate 属性将显示在 Value 1 列中。 Vehicle 实体 make 属性的值显示在 Value 2 列中。

第三种常见类型的查询将返回一个实体与另一个实体之间的路径。 路径将包含指定源实体和目标实体之间的所有实体及关系。 例如,诸如 MATCH path=(p:Person)-[r]->(e) RETURN path 之类的查询将返回通过一个关系连接到 Person 实体的任何实体的所有路径。 查询结果表将在 Value 0 列中显示路径。

路径查询的结果将在结果表的单列中显示路径中的所有记录。

路径可以包含任意数量的实体和关系。 例如,诸如 MATCH path=(c:Company)-[r*2]-(v:Vehicle) RETURN path 之类的查询将返回正好相隔两个关系的 Company 实体和 Vehicle 实体之间的所有路径。 每条路径将包含源 Company 实体、每个中间实体和关系以及目标 Vehicle 实体。 查询结果表将在 Value 0 列中显示路径。 默认情况下,它将仅显示路径中的源实体和目标实体以及路径中的记录总数。 单击展开 展开查询行 以查看完整路径结果。

源实体和目标实体之间具有多种关系的路径的结果。

路径可以作为查询结果的一个元素返回。 例如,相同的查询可以返回路径、源 Company 的名称以及目标 Vehicle 的年份。 MATCH path=(c:Company)-[r*2]-(v:Vehicle) RETURN path, c.name, v.year. 查询结果表将在 Value 0 列中显示折叠路径,在 Value 1 列中显示 Company 实体的名称属性,在 Value 2 列中显示 Vehicle 实体的年份属性。

查询结果返回了路径以及该路径中特定实体的属性。

所有查询结果默认显示在表视图中。 在此视图中,可以选择查询结果,并查看查询返回的任何实体或关系的属性。

  1. 单击结果表中的实体 Entity 或关系 Relationship 以查看其属性。
  2. 或者,可以使用将选择添加至 添加至 将此记录添加至另一个内容项目。
  3. 可以使用选择列中将记录添加至选择按钮 将记录添加至选择,将该行中的所有实体和关系添加至选择。

    此行中的实体和关系将高亮显示。 其他结果行中显示的这些实体和关系的任何实例也将高亮显示。 所选记录的总数将显示在表格底部。

    表中的所选记录在其显示的每个结果中都会高亮显示。
  4. 或者:
    • 按住 Ctrl 键的同时单击实体 实体 或关系 关系 可从选择中仅添加该记录。
    • 单击结果菜单中的全选 全选 可选择从查询返回的所有记录。
  5. 可以使用选择列中的从选择中移除记录按钮 从选择中移除记录,从选择中移除该行中的所有实体和关系。
  6. 或者:
    • 按住 Ctrl 键的同时单击实体 实体 或关系 关系 可从选择中仅移除该记录。
    • 单击结果菜单中的清除选择 清除选择 可选择从查询返回的所有记录。
  7. 可以使用查询上下文工具栏中的添加选择至 添加至,将所选记录添加至链接图表地图数据卡片

在地图或链接图表中预览结果

您也可以使用查询结果地图预览和查询结果链接图表预览在不同的可视化中预览查询结果。 在表视图中所做的任何选择都将反映在地图预览和链接图表预览中。

  1. 单击结果菜单中的地图视图 地图 可查看查询返回的空间实体的预览。
    查询结果的地图预览将显示在表视图中所做的任何选择。
  2. 单击结果菜单中的“链接图表”视图 链接图表 可查看在链接图表中可视化的查询结果的预览。
    查询结果链接图表预览将显示在表视图中所做的任何选择。
  3. 单击结果菜单中的“表”视图 表 可返回到默认结果表。