规则
Rules 提供了一个简单的前向链推理规则引擎,可在运行时进行配置。
当您提供一组已知事实和一组规则时,可以确定可推断的事实。
例如
- 已知事实:天空是蓝色的
- 规则:如果天空是蓝色的,那么天气是晴朗的
- 可推断事实:天气是晴朗的
您可以创建比这更复杂的规则,这些规则基于更多的事实,甚至基于可推断的事实。
例如
-
已知事实:天空是蓝色的
-
已知事实:现在是夏季
-
规则:如果天空是蓝色的,那么天气是晴朗的
-
规则:如果为真,海滩是空的(这是一个后备规则)
-
规则:如果天气是晴朗的,并且季节是夏季,那么海滩是满的
-
可推断事实:海滩是满的
-
已知事实:现在是秋天
-
可推断事实:海滩是空的
规则可以使用简单的文本格式指定,可以从 JSON 解码并加载到 Brain
中。
此仓库还包含一个用于 macOS 的 TextRulesToJSON 命令行程序,可以将具有可读规则的文本文件转换为 JSON。由于 Rules 中的 Rule
类型符合 Swift 的 Decodable
协议,这使得将规则导入应用程序变得容易。TextRulesToJSON 还可以对规则进行 linting,以确保在将其转换为 JSON 之前它们是有效的。
示例
示例项目仅用于单元测试。要运行它们,首先克隆仓库,然后从示例目录运行 pod install
。
要求
- Xcode 10.0
- Swift 4.2
安装
“规则”可以通过 CocoaPods 获得使用。要安装它,只需将以下命令添加到您的 Podfile 中。
pod 'Rules'
“规则”还可以作为 Swift Package 提供。有关更多信息,请参阅 Rules/Package.swift 文件。
作者
Jim Roepcke, [email protected]
许可协议
“规则”在 MIT 许可协议下可用。有关更多信息,请参阅 LICENSE 文件。