3.4.1 断言函数
断言(Predicate)函数是对给定的输入返回true或者false的布尔函数,它们主要用于查询WHERE的部分过滤子图。Predicate图例如图3-23所示。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P203_92524.jpg?sign=1739224437-EGu0V5YaV0tVsi8oAR5I08nCBXUbOjyv-0-53650ef012ba261a0524166a1765025c)
图3-23 Predicate图例
3.4.1.1 all()
判断是否一个断言适用于列表中的所有元素。
语法:all(variable IN list WHERE predicate)
参数:
● list:返回列表的表达式。
● variable:用于断言中的变量。
● predicate:用于测试列表中所有元素的断言。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P203_102830.jpg?sign=1739224437-JQ978ypI04ejwykwSN23KSuNerjt8HnQ-0-2f41318c3ce14a99e143cdb268fabcf3)
返回路径中的所有节点都有一个至少大于30的age属性。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P203_101955.jpg?sign=1739224437-RSGipUcoDjhOPhsee3jdHyUKXlLOkmrJ-0-9860b43e54a273ca204e9a870aaf5812)
3.4.1.2 any()
判断是否一个断言至少适用于列表中的一个元素。
语法:any(variable IN list WHERE predicate)
参数:
● list:返回列表的表达式。
● variable:用于断言中的变量。
● predicate:用于测试列表中所有元素的断言。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P204_102831.jpg?sign=1739224437-JPihSXLAjvSthL4JF4vKd4nxWMbb7yud-0-b4bdedeed4f21dd9f92a77862d96e9db)
返回路径中的所有节点的array数组属性中至少有一个值为one。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P204_101959.jpg?sign=1739224437-lcmiwd0Kbj8n6WcdbyqswNwm6kgCfhK6-0-ab3709ae08ff41c6001190a06118bc98)
3.4.1.3 none()
如果断言不适用于列表中的任何元素,则返回true。
语法:none(variable IN list WHERE predicate)
参数:
● list:返回列表的表达式。
● variable:用于断言中的变量。
● predicate:用于测试列表中所有元素的断言。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P204_102832.jpg?sign=1739224437-WlXkbIhqAovFKnpwvtbR9xvhDnhV6xO2-0-73a0bb4a8874acbb6a390412543c2a83)
返回的路径中没有节点的age属性值为25。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P204_101963.jpg?sign=1739224437-kfUOB4ZHbDpbaaePSBSJkeoJCrVz5Xdr-0-2e94d24700417a07640eab51e118ffad)
3.4.1.4 single()
如果断言只适用于列表中的某一个元素,则返回true。
语法:single(variable IN list WHERE predicate)
参数:
● list:返回列表的表达式。
● variable:用于断言中的变量。
● predicate:用于测试列表中所有元素的断言。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P205_102839.jpg?sign=1739224437-BiV1e8fCKX5PXX43nyVscFv6flwKoLMR-0-39b3ecd339891d67f27ffe845b971dbd)
每条返回的路径中只有一个节点的eyes属性值为blue。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P205_101967.jpg?sign=1739224437-tzELLCXONLTSDoTU4DXI9hdGfDmLaryA-0-8eb62fbb14b786a4ea598540a8ebd339)
3.4.1.5 exists()
如果数据库中存在该模式或者节点中存在该属性时,就返回true。
语法:exists(pattern-or-property)
参数:
● pattern-or-property:模式或者属性(以variable.prop的形式)。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P205_102840.jpg?sign=1739224437-Bs3vEPR1WBPesCRmFDf03Otk81TgBF9Q-0-ea7e6dff5d5294a2122a0167d64c1c41)
本查询返回了所有节点的name属性和一个表示是否已婚的true/false值。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P205_101971.jpg?sign=1739224437-clWpPEDhiDyyZUxiCykqo3h6H7Q4gUwx-0-293817bf00f72a91909335a1925e14de)