Skip to main content

查询知识图谱的内容

您可以查询知识图谱以找到其包含的实体和关系的子集,并确定不同实体的连接方式。 可以使用出处记录并(可选)将其包含在查询结果中。 请参阅以下示例:

  • 从代表传染病传播的知识图谱中,使用通过与给定设施点的任何关系关联的人类及动物。

  • 从代表制造供应链的知识图谱中,使用与特定部分相关联的任何内容,包括供应商、交付方式、仓库等。

  • 从代表组织的知识图谱中,使用给定类型的设备,并列出其属性,包括负责员工的姓名。

  • 在表示乌龟及其栖息地的知识图谱中,识别栖息地,其中使用特定环境影响评估中的信息建立风险等级。

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

查询视图 查询视图 是每个 Knowledge Studio 工程中的默认视图,用于查询工程知识图谱的内容。 查询视图包含六个关键区域,如下图所示,并在以下表格中进行了描述。 图中的数字对应于描述。

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

元素 描述
元素 1 查询内容 查询内容包含可在其中编写新查询的查询编辑器 查询视图 以及保存工程时保留在工程中的存储查询集合 存储查询集合。
元素 2 查询框 查询框为多行文本框,用于格式化和运行 openCypher 查询。
元素 3 查询结果 查询结果默认以表格形式显示。
元素 4 查询选择 通过在查询结果中选择记录,可以探索已返回图谱记录的属性。
元素 5 结果预览 可以在链接图表、地图或图表预览中预览结果和选择内容,并使用结果工具栏添加或移除选择内容中的所有结果。
元素 6 上下文工具栏 上下文工具栏提供了特定于查询的工具,例如定义查询参数和将查询存储在工程中以供以后使用。

查询知识图谱

可以使用查询视图 查询视图 来查询知识图谱的实体和关系。 您可以选择使查询结果包括出处记录。

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

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

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

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

    提示:

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

  3. 或者,选中包括出处以允许在查询中使用或返回出处记录。

    了解有关在查询中使用出处的详细信息

  4. 单击运行。

    查询结果随即显示在结果区域中。 查询返回的实体、关系和出处记录将通过适当的图标标识。

编写 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,e2 或 MATCH (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. 或者,单击选项菜单 选项 中此已存储查询的删除 删除,从工程中移除已存储查询。