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.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/.envrc +3 -0
  3. data/CHANGELOG.md +5 -0
  4. data/COMMITS.md +196 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +481 -0
  7. data/Rakefile +8 -0
  8. data/examples/README.md +531 -0
  9. data/examples/advanced_example.rb +270 -0
  10. data/examples/ai_enhanced_kbs.rb +523 -0
  11. data/examples/blackboard_demo.rb +50 -0
  12. data/examples/car_diagnostic.rb +64 -0
  13. data/examples/concurrent_inference_demo.rb +363 -0
  14. data/examples/csv_trading_system.rb +559 -0
  15. data/examples/iot_demo_using_dsl.rb +83 -0
  16. data/examples/portfolio_rebalancing_system.rb +651 -0
  17. data/examples/redis_trading_demo.rb +177 -0
  18. data/examples/sample_stock_data.csv +46 -0
  19. data/examples/stock_trading_advanced.rb +469 -0
  20. data/examples/stock_trading_system.rb.bak +563 -0
  21. data/examples/timestamped_trading.rb +286 -0
  22. data/examples/trading_demo.rb +334 -0
  23. data/examples/working_demo.rb +176 -0
  24. data/lib/kbs/alpha_memory.rb +37 -0
  25. data/lib/kbs/beta_memory.rb +57 -0
  26. data/lib/kbs/blackboard/audit_log.rb +115 -0
  27. data/lib/kbs/blackboard/engine.rb +83 -0
  28. data/lib/kbs/blackboard/fact.rb +65 -0
  29. data/lib/kbs/blackboard/memory.rb +191 -0
  30. data/lib/kbs/blackboard/message_queue.rb +96 -0
  31. data/lib/kbs/blackboard/persistence/hybrid_store.rb +118 -0
  32. data/lib/kbs/blackboard/persistence/redis_store.rb +218 -0
  33. data/lib/kbs/blackboard/persistence/sqlite_store.rb +242 -0
  34. data/lib/kbs/blackboard/persistence/store.rb +55 -0
  35. data/lib/kbs/blackboard/redis_audit_log.rb +107 -0
  36. data/lib/kbs/blackboard/redis_message_queue.rb +111 -0
  37. data/lib/kbs/blackboard.rb +23 -0
  38. data/lib/kbs/condition.rb +26 -0
  39. data/lib/kbs/dsl/condition_helpers.rb +57 -0
  40. data/lib/kbs/dsl/knowledge_base.rb +86 -0
  41. data/lib/kbs/dsl/pattern_evaluator.rb +69 -0
  42. data/lib/kbs/dsl/rule_builder.rb +115 -0
  43. data/lib/kbs/dsl/variable.rb +35 -0
  44. data/lib/kbs/dsl.rb +18 -0
  45. data/lib/kbs/fact.rb +43 -0
  46. data/lib/kbs/join_node.rb +117 -0
  47. data/lib/kbs/negation_node.rb +88 -0
  48. data/lib/kbs/production_node.rb +28 -0
  49. data/lib/kbs/rete_engine.rb +108 -0
  50. data/lib/kbs/rule.rb +46 -0
  51. data/lib/kbs/token.rb +37 -0
  52. data/lib/kbs/version.rb +5 -0
  53. data/lib/kbs/working_memory.rb +32 -0
  54. data/lib/kbs.rb +20 -0
  55. metadata +164 -0
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KBS
4
+ VERSION = "0.0.1"
5
+ end
@@ -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: []