查询知识图谱的内容

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

  • 从代表传染病传播的知识图谱中,使用通过与给定设施点的任何关系关联的人类及动物。
  • 从代表制造供应链的知识图谱中,使用与特定部分相关联的任何内容,包括供应商、交付方式、仓库等。
  • 从代表组织的知识图谱中,使用给定类型的设备,并列出其属性,包括负责员工的姓名。

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

查询调查的内容

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

  1. 打开调查并浏览其内容。
  2. 如有必要,在调查视图的顶部,单击搜索文本框或按下 Ctrl+F,然后单击查询

    随即显示展开的查询窗口。 此为多行查询文本框,您可以在此设置 openCypher 查询格式。

  3. 在搜索文本框中输入查询。 按 Enter 键将指针移动至新行并继续输入。

    例如,诸如 MATCH (e) RETURN e 之类的查询会返回知识图谱中的所有实体,直到达到允许的最大数量。 此查询适用于所有知识图谱。

    使用搜索控件旁边的按钮在搜索和查询模式之间切换。

  4. 可以选中包括出处,以使结果中包括满足查询条件的出处记录。
  5. 单击应用

    查询结果显示在调查视图中。 查询返回的实体、关系和出处记录将通过适当的图标标识。 此查询将添加到在展开的查询窗口底部显示的历史记录中。

  6. 拖动窗口和内容列表之间的分隔线可以调整展开的查询窗口的大小。

    您也可以使用分隔线上的按钮以将所有空间用于展开的查询窗口或内容列表。

    可通过拖动分隔线或使用提供的按钮调整展开的查询窗口的大小。

编写 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

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

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

通过引用在数据模型中定义的实体类型、关系类型和属性,可以定制针对特定知识图谱的查询。 在查询中包含特定实体类型的名称,以限制所考虑的图谱项目。 例如,查询 MATCH (e1:Person)-[r]->(e2) RETURN e1,r,e2 将返回满足以下条件的所有 Person 实体 e1:任意关系 r 将 Person 连接至另一个实体 e2(可为任何类型的实体)。 与之前的示例相比,Pet、Vehicle 或 Document 实体作为初始实体的关系不包含在结果中。

将返回 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

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

可以使用 openCypher Implementers Group 提供的文档了解有关 openCypher 查询语言的详细信息。 ArcGIS Knowledge 不支持 openCypher 查询语言的所有方面。 例如,查询不能用于更新知识图谱,只能用于返回值。

ArcGIS AllSource 中,您可以通过查看从知识图谱中检索数据以构建直方图的查询来了解 openCypher。 在搜索和过滤窗格的直方图选项卡 直方图 上,单击设置按钮 设置,然后单击将查询发送到“查询”选项卡。 用于检索当前直方图集数据的查询出现在查询文本框中。

了解有关 openCypher 查询的详细信息

修改并更新查询结果

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

  1. 在展开的查询窗口中单击,或按 Ctrl+F 键。
  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. 单击清除以从展开的查询窗口中移除当前查询的文本。

    最近执行的三个查询将在展开的查询窗口底部列出。 最近查询的结果不会移除。

  5. 从查询历史记录中重新运行或移除查询。
    1. 单击列表中的查询以再次运行它。

      将鼠标悬停在历史记录中的某个最近查询上。

      所选查询将显示在查询文本框中并自动运行,结果将显示在调查中。

    2. 对列表中的特定查询单击从历史记录中移除按钮 从历史记录中移除 以将其从历史记录中移除。

      将鼠标悬停在“从历史记录中移除”按钮上。

      指定的查询将从列表中移除。 您的查询历史记录会更新以显示三个最近的查询。

保存查询

在您写入、检查和运行查询时,系统会保留查询的历史记录。 但是,查询的完整历史记录不会随工程保存。 您可以保存想要作为调查的一部分保留的单个查询。

  1. 单击查询下拉箭头,然后单击 <新建查询>
  2. 在查询文本框中单击,然后输入新查询或修改现有查询。
  3. 单击应用

    查询结果显示在调查中。

    新查询结果显示在调查中。

  4. 在展开的查询窗口顶部单击保存 保存

    随即显示将查询另存为对话框。

  5. 依次浏览至调查工程容器、您的调查、Collections 文件夹和 Queries 文件夹。 在名称文本框中为调查输入一个名称,然后单击保存

    为要保存的调查输入名称。

    查询将保存在您的调查的 Queries 文件夹中。 您保存的调查在查询下拉列表中自动处于选中状态。

    保存的调查在查询下拉列表中自动处于选中状态。

  6. 在查询文本框中单击并修改现有调查。
  7. 在展开的查询窗口顶部单击保存 保存 以更新保存的查询,从而反映您的更改。
  8. 在查询文本框中单击并修改现有调查。
  9. 在展开的查询窗口顶部单击另存为 保存 以将您的更改另存为新查询。
  10. 依次浏览至调查工程容器、您的调查、Collections 文件夹和 Queries 文件夹。 在名称文本框中为调查输入一个名称,然后单击保存
  11. 单击功能区上的工程选项卡,然后单击保存 保存 以将调查和查询保存在工程中。
  12. 运行已保存的查询。
    • 在调查的内容窗格中单击已保存的查询。
    • 单击查询下拉列表,然后单击一个已保存的查询。

    保存的查询随即显示在查询文本框中,并且自动运行。 查询结果显示在调查中。

    所选查询显示在查询文本框中。

在“搜索和过滤”窗格中查询知识图谱

搜索和过滤窗格可与调查视图配合使用以查询其内容,与地图配合使用以查询知识图谱图层的内容,或与链接图表配合使用以查询其描述的实体和关系。

  1. 使用下列方法之一打开搜索和过滤窗格:

    通过调查

    在功能区的调查选项卡的搜索组中,单击搜索和过滤 搜索和过滤

    通过地图

    单击地图的内容窗格中的知识图谱图层。 单击知识图谱图层上下文选项卡。 在搜索组中,单击搜索和过滤按钮 搜索和过滤

    通过链接图表

    在功能区的链接图表选项卡的搜索组中,单击搜索和过滤 搜索和过滤

    随即显示搜索和过滤窗格。

  2. 单击下拉列表,然后单击要查询其知识图谱的调查、地图图层或链接图表。
  3. 单击查询选项卡 查询

    当您将打开的调查、地图图层或链接图表与搜索和过滤窗格配对时,所有查询都会根据与配对视图关联的整个知识图谱进行评估。 将显示一条消息,提醒您查询不限于配对视图中可用的内容。

    窗格将查询与名为 MyKnowledgeGraph 的调查关联的知识图谱。

  4. 查询文本框中定义一个新查询。
    • 输入一个 openCypher 查询。

      输入一个新查询。

    • 单击查询下拉箭头,然后单击一个已保存的查询。

      在“查询”下拉列表中选择一个已保存的查询。

  5. 可以选中包括出处,以使结果中包括满足查询条件的出处记录。
  6. 单击应用

    查询结果随即显示在结果列表中。

提示:

知识图谱可以表示许多实体和关系。 搜索和过滤窗格底部的忙碌指示符显示正在生成结果列表。 ArcGIS AllSource 完成后,忙碌指示符停止,并将显示刷新结果按钮 刷新结果。 如果返回查询结果的时间过长,您可以通过单击忙碌指示符来停止构建结果列表。

默认情况下,搜索和过滤窗格可能太窄而无法浏览查询结果。 您可以取消停靠窗格以加宽它,而不会影响主 ArcGIS AllSource 应用程序窗口中其他视图和窗格的排列。

探索查询结果

一个 openCypher 查询可以返回多种结果。 当查询返回实体或关系列表时,它们将显示在结果列表中,每行一个实体或关系。 查询返回的值将出现在如查询本身所示标记的列中。

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

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

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

在“搜索和过滤”窗格中查询知识图谱的内容。

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

如果您从调查中查询知识图谱,请使用详细信息面板查看所选实体或关系的属性。 在详细信息面板中,您可以浏览查询结果中未包含的其他关系和相关实体。

在调查视图中浏览实体和关系及其相关实体的属性。

如果您从搜索和过滤窗格查询知识图谱,请使用直方图选项卡 直方图 汇总和过滤结果。 选项卡顶部的标题将更改为直方图 - 查询以指示显示的图表代表查询上的查询返回的内容,而不是配对视图中的内容。 此外,由于查询是针对视图的知识图谱评估的,因此会显示一条消息,指示直方图可能包含配对视图中不可用的内容。

在“搜索和过滤”窗格的“直方图”选项卡上汇总查询结果。

从调查或搜索和过滤窗格中,您可以选择感兴趣的实体或关系,然后右键单击选定的图谱项目。 使用可用选项将选定的图谱项目添加到新的或现有的地图或链接图表中以进行进一步分析。 或者,在现有调查、地图或链接图表中选择对应项目。

将选定的图谱项目添加到新的或现有的地图或链接图表。