您可以查询知识图谱以找到其包含的实体和关系的子集,并确定不同实体的相互连接方式。 请参阅以下示例:
- 从代表传染病传播的知识图谱中,使用通过与给定设施点的任何关系关联的人类及动物。
- 从代表制造供应链的知识图谱中,使用与特定部分相关联的任何内容,包括供应商、交付方式、仓库等。
- 从代表组织的知识图谱中,使用给定类型的设备,并列出其属性,包括负责员工的姓名。
您可以通过查询知识图谱来识别实体和关系的子集或其属性。 使用 openCypher 查询语言编写 openCypher 查询以发现相关实体及其属性,并在知识图谱、地图或链接图表使用这组受限制的信息。
编写 openCypher 查询
openCypher 查询之于图形数据库就像 SQL 查询之于关系数据库。 对于一个基本示例,请考虑描述公司产品和创建这些产品的设施点的图表。 汽车公司的设施点是实体,由变量 f 标识;其生产的车辆模型是实体 m;并且,在设施点和它生产的模型之间有一个 HasModel 关系 hm。
- 要查找模型类型的前十个实体,您可以使用诸如 MATCH (m:Model) RETURN m LIMIT 10 之类的查询。
- 要发现哪些模型与哪些设施点相关联,您可以通过 HasModel 关系将实体与诸如 MATCH (f:Facility)-[ :HasModel]->(m) RETURN f,m 之类的查询相匹配。
- 您的查询还可以返回实体或关系的特定属性,及其显示名称(或代替其显示名称)。 例如,要返回汽车模型以及模型的类别属性,您可以使用诸如 MATCH (f:Facility)-[ :HasModel]->(m) RETURN f,m,m.category 之类的查询。
您可以使用 Amazon 提供的文档了解有关 openCypher 查询语言的详细信息。ArcGIS Knowledge 不支持 openCypher 查询语言的所有方面。 例如,查询不能用于更新知识图谱,只能用于返回值。
查询调查的内容
您可以通过在调查视图中查询其内容来探索调查中的一组较小的实体和关系。
- 打开调查并浏览其内容。
- 在调查视图的顶部,单击搜索文本框或按下 Ctrl+F。
搜索控件随即显示。
- 单击搜索控件底部的查询模式 。
搜索文本框中的提示将变为在知识图谱上运行图形查询,出现展开查询窗口按钮 ,并且搜索控件底部出现搜索模式 。
- 在搜索文本框中输入 openCypher 查询。
例如,诸如 MATCH (p:Person)-->(v:Vehicle) RETURN p, v 之类的查询将返回与 Vehicle 实体有任何关系的所有 Person 实体,并返回 Person 实体和 Vehicle 结果中的实体。
- 按 Enter 键。
查询结果显示在调查视图中。
- 单击查询文本框以修改查询并键入您的更改。
例如,将查询更改为 MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle) RETURN p, hv, v 以将所有具有 HasVehicle 关系的 Person 实体返回到一个 Vehicle 实体,并返回结果中的 Person 实体、HasVehicle 关系和 Vehicle 实体。
- 按 Enter 键运行修改后的查询。
已更新查询的结果显示在调查视图中。 查询返回的实体和关系由适当的图标标识。
- 如果您需要更多空间来编写更长的 openCypher 查询,请单击展开查询窗口按钮 。
当前查询将在更大的多行查询文本框中打开,而不是直接在控件顶部的单行文本框中打开。
- 为清楚起见,使用尽可能多的行键入对查询的更改。
例如,将查询更改为 MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle) WHERE hv.acquisitionDate = NULL RETURN p, hv, v, v.make, v.model, v.year 将所有具有 HasVehicle 关系的 Person 实体返回到一个 Vehicle 实体,其中 HasVehicle 关系的 acquisitionDate 属性具有 NULL 值。 返回与之前相同的实体和关系,但在结果中还包括来自 Vehicle 实体的品牌、型号和年份属性的值。
已更新查询的结果显示在调查视图中。 查询返回的实体和关系由适当的图标标识。
- 单击运行查询按钮 。
当您使用展开的查询窗口时,按下 Enter 键会将指针移到多行文本框中的新行,而不是运行查询。
查询结果显示在调查视图中。
- 单击查询文本框中的重置搜索按钮 以清除查询并移除查询结果。
先前在调查视图中列出的图形项目将再次出现。
- 当查询文本框为空时,单击查询文本框以打开查询控件并列出三个最近的查询。 单击列表中的查询以再次运行它。
选定的查询将会运行,并且查询结果将出现在调查中。
- 单击查询文本框中的重置搜索按钮 以从查询文本框中清除查询并将其结果从调查中移除。 单击空查询文本框以打开查询控件,然后单击列表中特定查询的从历史记录中移除按钮 将其从历史记录中移除。
指定的查询将从列表中移除。 您的查询历史记录会更新以显示三个最近的查询。
- 如果不再需要多行查询文本框,请单击查询文本框右侧的折叠查询窗口按钮 。
当您修改查询时,它将直接在一行上的查询文本框中进行更新。 按下 Enter 键 运行已更新的查询。
在“搜索和过滤”窗格中查询知识图谱
搜索和过滤窗格可与调查视图配合使用以查询其内容,与地图配合使用以查询知识图谱图层的内容,或与链接图表配合使用以查询其描述的实体和关系。
- 打开调查。
- 使用下列方法之一打开搜索和过滤窗格:
- 在功能区的调查选项卡的搜索组中,单击搜索和过滤 。
- 单击地图的内容窗格中的知识图谱图层。 从功能区上的知识图谱图层选项卡访问数据选项卡。 在搜索组中,单击搜索和过滤按钮 。
- 在功能区的链接图表选项卡的搜索组中,单击搜索和过滤 。
随即显示搜索和过滤窗格。
- 单击数据集下拉列表,然后单击要查询的调查、地图或链接图表的名称。
- 单击工程中调查的名称以浏览调查内容列表中知识图谱部分。 例如,如果当前在调查的内容窗格中选择了 Person 实体并且列出了前 1000 个实体,则直方图将仅表示与 1000 个 Person 实体关联的内容。 如果调查名为 Investigation,则数据集下拉列表中的条目将为 Investigation。
- 单击地图上知识图谱图层的名称以浏览地图上当前显示的知识图谱部分。 例如,如果地图仅包含 Person、Pet 和 Veterinarian 实体以及 HasPet 和 HasPatient 关系,则直方图仅表示地图上的这些实体类型和关系类型。 如果地图命名为 Map 且地图上的知识图谱层命名为 MyKnowledgeGraph,则数据集下拉列表中的条目将为 Map - MyKnowledgeGraph。
- 单击链接图表的名称以浏览链接图表上当前显示的知识图谱部分。 例如,如果链接图表仅包含一组查询的 Person 和 Vehicle 实体以及 HasVehicle 关系,则直方图仅表示链接图表上的特定实体和关系。 如果链接图表名为 Link Chart,则数据集下拉列表中的条目将为 Link Chart。
- 如果要浏览调查引用的整个知识图谱、地图上的知识图谱图层或链接图表,请单击视图或地图图层对应的条目,然后单击“知识图谱”。 例如,如果地图命名为 Map 且地图上的知识图谱图层命名为MyKnowledgeGraph,则数据集下拉列表中对应整个知识图谱的条目将为 Map - MyKnowledgeGraph.- Knowledge Graph。
- 单击查询选项卡 。
- 在查询文本框中输入一个 openCypher 查询。
- 单击应用。
查询结果随即显示在结果列表中。
提示:
知识图谱可以表示许多实体和关系。 如果返回查询结果的时间过长,您可以通过单击搜索和过滤窗格底部的忙碌指示符来停止构建结果列表。 ArcGIS Pro 完成生成结果列表后,忙碌指示符停止,并将显示刷新结果按钮 。
默认情况下,搜索和过滤窗格可能太窄而无法浏览查询结果。 您可以取消停靠窗格以加宽它,而不会影响主 ArcGIS Pro 应用程序窗口中其他视图和窗格的排列。
探索查询结果
一个 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 实体和一个 Vehicle 实体,其中该人参与了与车辆的 HasVehicle 关系。 该查询还返回 HasVehicle 关系的 acquisitionDate 属性,以及 Vehicle 实体的品牌、型号和年份属性。 如果属性没有值,则文本 null 会出现在列中。
包含实体 或关系 的列将显示图形项目的显示名称及其图标。 在上面的屏幕截图中,所返回的 Person 和 Vehicle 属性将分别出现在 p 和 v 列中。 HasVehicle 关系的 acquisitionDate 属性将显示在 hv.acquisitionDate 列中。 Vehicle 实体的品牌、型号和年份属性的值将分别出现在 v.make、v.model 和 v.year 列中。
您可以将查询所返回的实体和关系添加到地图或链接图表以进行进一步分析。