kbs 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.envrc +3 -0
- data/CHANGELOG.md +5 -0
- data/COMMITS.md +196 -0
- data/LICENSE.txt +21 -0
- data/README.md +481 -0
- data/Rakefile +8 -0
- data/examples/README.md +531 -0
- data/examples/advanced_example.rb +270 -0
- data/examples/ai_enhanced_kbs.rb +523 -0
- data/examples/blackboard_demo.rb +50 -0
- data/examples/car_diagnostic.rb +64 -0
- data/examples/concurrent_inference_demo.rb +363 -0
- data/examples/csv_trading_system.rb +559 -0
- data/examples/iot_demo_using_dsl.rb +83 -0
- data/examples/portfolio_rebalancing_system.rb +651 -0
- data/examples/redis_trading_demo.rb +177 -0
- data/examples/sample_stock_data.csv +46 -0
- data/examples/stock_trading_advanced.rb +469 -0
- data/examples/stock_trading_system.rb.bak +563 -0
- data/examples/timestamped_trading.rb +286 -0
- data/examples/trading_demo.rb +334 -0
- data/examples/working_demo.rb +176 -0
- data/lib/kbs/alpha_memory.rb +37 -0
- data/lib/kbs/beta_memory.rb +57 -0
- data/lib/kbs/blackboard/audit_log.rb +115 -0
- data/lib/kbs/blackboard/engine.rb +83 -0
- data/lib/kbs/blackboard/fact.rb +65 -0
- data/lib/kbs/blackboard/memory.rb +191 -0
- data/lib/kbs/blackboard/message_queue.rb +96 -0
- data/lib/kbs/blackboard/persistence/hybrid_store.rb +118 -0
- data/lib/kbs/blackboard/persistence/redis_store.rb +218 -0
- data/lib/kbs/blackboard/persistence/sqlite_store.rb +242 -0
- data/lib/kbs/blackboard/persistence/store.rb +55 -0
- data/lib/kbs/blackboard/redis_audit_log.rb +107 -0
- data/lib/kbs/blackboard/redis_message_queue.rb +111 -0
- data/lib/kbs/blackboard.rb +23 -0
- data/lib/kbs/condition.rb +26 -0
- data/lib/kbs/dsl/condition_helpers.rb +57 -0
- data/lib/kbs/dsl/knowledge_base.rb +86 -0
- data/lib/kbs/dsl/pattern_evaluator.rb +69 -0
- data/lib/kbs/dsl/rule_builder.rb +115 -0
- data/lib/kbs/dsl/variable.rb +35 -0
- data/lib/kbs/dsl.rb +18 -0
- data/lib/kbs/fact.rb +43 -0
- data/lib/kbs/join_node.rb +117 -0
- data/lib/kbs/negation_node.rb +88 -0
- data/lib/kbs/production_node.rb +28 -0
- data/lib/kbs/rete_engine.rb +108 -0
- data/lib/kbs/rule.rb +46 -0
- data/lib/kbs/token.rb +37 -0
- data/lib/kbs/version.rb +5 -0
- data/lib/kbs/working_memory.rb +32 -0
- data/lib/kbs.rb +20 -0
- metadata +164 -0
data/lib/kbs/version.rb
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KBS
|
|
4
|
+
class WorkingMemory
|
|
5
|
+
attr_reader :facts
|
|
6
|
+
|
|
7
|
+
def initialize
|
|
8
|
+
@facts = []
|
|
9
|
+
@observers = []
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def add_fact(fact)
|
|
13
|
+
@facts << fact
|
|
14
|
+
notify_observers(:add, fact)
|
|
15
|
+
fact
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def remove_fact(fact)
|
|
19
|
+
@facts.delete(fact)
|
|
20
|
+
notify_observers(:remove, fact)
|
|
21
|
+
fact
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def add_observer(observer)
|
|
25
|
+
@observers << observer
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def notify_observers(action, fact)
|
|
29
|
+
@observers.each { |obs| obs.update(action, fact) }
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
data/lib/kbs.rb
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "kbs/version"
|
|
4
|
+
|
|
5
|
+
# Core RETE II classes
|
|
6
|
+
require_relative "kbs/fact"
|
|
7
|
+
require_relative "kbs/working_memory"
|
|
8
|
+
require_relative "kbs/token"
|
|
9
|
+
require_relative "kbs/alpha_memory"
|
|
10
|
+
require_relative "kbs/beta_memory"
|
|
11
|
+
require_relative "kbs/join_node"
|
|
12
|
+
require_relative "kbs/negation_node"
|
|
13
|
+
require_relative "kbs/production_node"
|
|
14
|
+
require_relative "kbs/condition"
|
|
15
|
+
require_relative "kbs/rule"
|
|
16
|
+
require_relative "kbs/rete_engine"
|
|
17
|
+
|
|
18
|
+
module KBS
|
|
19
|
+
class Error < StandardError; end
|
|
20
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: kbs
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Dewayne VanHoozer
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: sqlite3
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '1.6'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '1.6'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: minitest
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '5.16'
|
|
33
|
+
type: :development
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '5.16'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: simplecov
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0.22'
|
|
47
|
+
type: :development
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0.22'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: redis
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '5.0'
|
|
61
|
+
type: :development
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '5.0'
|
|
68
|
+
description: |
|
|
69
|
+
A comprehensive Ruby implementation of a Knowledge-Based System featuring:
|
|
70
|
+
|
|
71
|
+
• RETE II Algorithm: Optimized forward-chaining inference engine with unlinking optimization for high-performance pattern matching
|
|
72
|
+
• Declarative DSL: Readable, expressive syntax for rule definition with built-in condition helpers
|
|
73
|
+
• Blackboard Architecture: Multi-agent coordination with message passing and knowledge source registration
|
|
74
|
+
• Flexible Persistence: SQLite (durable), Redis (fast), and hybrid storage backends with audit trails
|
|
75
|
+
• Concurrent Execution: Thread-safe auto-inference mode for real-time processing
|
|
76
|
+
• AI Integration: Native support for LLM integration (Ollama, OpenAI) for hybrid symbolic/neural reasoning
|
|
77
|
+
• Production Features: Session management, fact history, query API, statistics tracking
|
|
78
|
+
|
|
79
|
+
Perfect for expert systems, trading algorithms, IoT monitoring, portfolio management, and AI-enhanced decision systems.
|
|
80
|
+
email:
|
|
81
|
+
- dvanhoozer@gmail.com
|
|
82
|
+
executables: []
|
|
83
|
+
extensions: []
|
|
84
|
+
extra_rdoc_files: []
|
|
85
|
+
files:
|
|
86
|
+
- ".envrc"
|
|
87
|
+
- CHANGELOG.md
|
|
88
|
+
- COMMITS.md
|
|
89
|
+
- LICENSE.txt
|
|
90
|
+
- README.md
|
|
91
|
+
- Rakefile
|
|
92
|
+
- examples/README.md
|
|
93
|
+
- examples/advanced_example.rb
|
|
94
|
+
- examples/ai_enhanced_kbs.rb
|
|
95
|
+
- examples/blackboard_demo.rb
|
|
96
|
+
- examples/car_diagnostic.rb
|
|
97
|
+
- examples/concurrent_inference_demo.rb
|
|
98
|
+
- examples/csv_trading_system.rb
|
|
99
|
+
- examples/iot_demo_using_dsl.rb
|
|
100
|
+
- examples/portfolio_rebalancing_system.rb
|
|
101
|
+
- examples/redis_trading_demo.rb
|
|
102
|
+
- examples/sample_stock_data.csv
|
|
103
|
+
- examples/stock_trading_advanced.rb
|
|
104
|
+
- examples/stock_trading_system.rb.bak
|
|
105
|
+
- examples/timestamped_trading.rb
|
|
106
|
+
- examples/trading_demo.rb
|
|
107
|
+
- examples/working_demo.rb
|
|
108
|
+
- lib/kbs.rb
|
|
109
|
+
- lib/kbs/alpha_memory.rb
|
|
110
|
+
- lib/kbs/beta_memory.rb
|
|
111
|
+
- lib/kbs/blackboard.rb
|
|
112
|
+
- lib/kbs/blackboard/audit_log.rb
|
|
113
|
+
- lib/kbs/blackboard/engine.rb
|
|
114
|
+
- lib/kbs/blackboard/fact.rb
|
|
115
|
+
- lib/kbs/blackboard/memory.rb
|
|
116
|
+
- lib/kbs/blackboard/message_queue.rb
|
|
117
|
+
- lib/kbs/blackboard/persistence/hybrid_store.rb
|
|
118
|
+
- lib/kbs/blackboard/persistence/redis_store.rb
|
|
119
|
+
- lib/kbs/blackboard/persistence/sqlite_store.rb
|
|
120
|
+
- lib/kbs/blackboard/persistence/store.rb
|
|
121
|
+
- lib/kbs/blackboard/redis_audit_log.rb
|
|
122
|
+
- lib/kbs/blackboard/redis_message_queue.rb
|
|
123
|
+
- lib/kbs/condition.rb
|
|
124
|
+
- lib/kbs/dsl.rb
|
|
125
|
+
- lib/kbs/dsl/condition_helpers.rb
|
|
126
|
+
- lib/kbs/dsl/knowledge_base.rb
|
|
127
|
+
- lib/kbs/dsl/pattern_evaluator.rb
|
|
128
|
+
- lib/kbs/dsl/rule_builder.rb
|
|
129
|
+
- lib/kbs/dsl/variable.rb
|
|
130
|
+
- lib/kbs/fact.rb
|
|
131
|
+
- lib/kbs/join_node.rb
|
|
132
|
+
- lib/kbs/negation_node.rb
|
|
133
|
+
- lib/kbs/production_node.rb
|
|
134
|
+
- lib/kbs/rete_engine.rb
|
|
135
|
+
- lib/kbs/rule.rb
|
|
136
|
+
- lib/kbs/token.rb
|
|
137
|
+
- lib/kbs/version.rb
|
|
138
|
+
- lib/kbs/working_memory.rb
|
|
139
|
+
homepage: https://github.com/madbomber/kbs
|
|
140
|
+
licenses:
|
|
141
|
+
- MIT
|
|
142
|
+
metadata:
|
|
143
|
+
homepage_uri: https://github.com/madbomber/kbs
|
|
144
|
+
source_code_uri: https://github.com/madbomber/kbs
|
|
145
|
+
changelog_uri: https://github.com/madbomber/kbs/blob/main/CHANGELOG.md
|
|
146
|
+
rdoc_options: []
|
|
147
|
+
require_paths:
|
|
148
|
+
- lib
|
|
149
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
150
|
+
requirements:
|
|
151
|
+
- - ">="
|
|
152
|
+
- !ruby/object:Gem::Version
|
|
153
|
+
version: 3.2.0
|
|
154
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
|
+
requirements:
|
|
156
|
+
- - ">="
|
|
157
|
+
- !ruby/object:Gem::Version
|
|
158
|
+
version: '0'
|
|
159
|
+
requirements: []
|
|
160
|
+
rubygems_version: 3.7.2
|
|
161
|
+
specification_version: 4
|
|
162
|
+
summary: Production-ready Knowledge-Based System with RETE II inference, Blackboard
|
|
163
|
+
architecture, and AI integration
|
|
164
|
+
test_files: []
|