给定一个资源,例如 DeviceObservationReport,许多字段的基数为 0..many。在某些情况下,这些包含对其他资源的引用,这些资源也可能具有基数 0..many。我在决定如何支持对引用资源的“链式”查询方面遇到了相当大的困难,这些资源可能是“深度”两到三个步骤(因为需要更好的术语)。
例如,在单个 DeviceObservationReport 中可能有多个观察资源引用。完全有可能客户端可能希望执行一个查询,该查询使用特定代码请求观察的所有实例,这些代码的时间戳 (appliesDate) 晚于特定时刻。命名的搜索参数观察似乎是明显的起点,观察的路径指定为 virtualDevice.channel.metric.observation。鉴于 virtualDevice、channel 和 metric 字段的基数为 0..*,一个“简单”查询会检索所有 DeviceObservationReport 实例,这些实例包含代码 TESTCODE 的观察结果,并且在 2014 年 10 月 10 日的 14:00 之后观察到如下所示:
../data/DeviceObservationReport?virtualDevice[0].channel[0].metric[0].observation.name=TESTCODE&virtualDevice[0].channel[0].metric[0].observation.date>2014-10-10 %2014:00
其次,如果客户端要求按日期对结果集进行排序,那将如何在查询中表达,因为从我为实现这一点所做的各种尝试来看,此时对查询的支持变得相当复杂,并且到目前为止,我还没有想出一个令人满意的解决方案。