Database 数据日志中的表达式不安全

Database 数据日志中的表达式不安全,database,logic,datalog,Database,Logic,Datalog,为什么这个目标不被认为是安全的 MANAGER(Name) :- WORKER(Name, Age, _ ), ¬ SUBORDINATE (_, Name), Age <= 40 经理(姓名):-工人(姓名、年龄)、下属(姓名)、年龄数据日志中的安全要求旨在防止无限结果。如果你有一个发生在大脑中的变量,并且只在身体中被否定,那么它可以被绑定到无限多的值,这显然是一个问题 具体的安全要求很难精确制定,因此通常您会看到要求简化为“每个变量都必须积极发生”。这比需要的限制性更强一些 对这个问

为什么这个目标不被认为是安全的

MANAGER(Name) :- WORKER(Name, Age, _ ), ¬ SUBORDINATE (_, Name), Age <= 40

经理(姓名):-工人(姓名、年龄)、下属(姓名)、年龄数据日志中的安全要求旨在防止无限结果。如果你有一个发生在大脑中的变量,并且只在身体中被否定,那么它可以被绑定到无限多的值,这显然是一个问题

具体的安全要求很难精确制定,因此通常您会看到要求简化为“每个变量都必须积极发生”。这比需要的限制性更强一些


对这个问题最具启发性的回答是,该规则在技术上是不安全的,但它不会产生无限的结果。某些数据日志引擎会允许此规则并返回有限结果。

数据日志中的安全要求旨在防止无限结果。如果你有一个发生在大脑中的变量,并且只在身体中被否定,那么它可以被绑定到无限多的值,这显然是一个问题

具体的安全要求很难精确制定,因此通常您会看到要求简化为“每个变量都必须积极发生”。这比需要的限制性更强一些


对这个问题最具启发性的回答是,该规则在技术上是不安全的,但它不会产生无限的结果。某些数据日志引擎会允许此规则并返回有限结果。

此规则是完全安全的,并且不会产生无限关系。这是您正在使用的数据日志引擎的一个实现缺陷


一般来说,处理
的简单方法是将其转换为新变量。这使得引擎的实现变得容易,但这可能是该子句抛出错误的原因。如果它是一个变量,则会有无穷多个值
从属
的第一个参数不能是。

此规则是完全安全的,并且不会产生无限关系。这是您正在使用的数据日志引擎的一个实现缺陷

一般来说,处理
的简单方法是将其转换为新变量。这使得引擎的实现变得容易,但这可能是该子句抛出错误的原因。如果它是一个变量,则会有无穷多个值
substance
的第一个参数不能为空