fact_db 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 (89) hide show
  1. checksums.yaml +7 -0
  2. data/.envrc +1 -0
  3. data/CHANGELOG.md +48 -0
  4. data/COMMITS.md +196 -0
  5. data/README.md +102 -0
  6. data/Rakefile +41 -0
  7. data/db/migrate/001_enable_extensions.rb +7 -0
  8. data/db/migrate/002_create_contents.rb +44 -0
  9. data/db/migrate/003_create_entities.rb +36 -0
  10. data/db/migrate/004_create_entity_aliases.rb +18 -0
  11. data/db/migrate/005_create_facts.rb +65 -0
  12. data/db/migrate/006_create_entity_mentions.rb +18 -0
  13. data/db/migrate/007_create_fact_sources.rb +18 -0
  14. data/docs/api/extractors/index.md +71 -0
  15. data/docs/api/extractors/llm.md +162 -0
  16. data/docs/api/extractors/manual.md +92 -0
  17. data/docs/api/extractors/rule-based.md +165 -0
  18. data/docs/api/facts.md +300 -0
  19. data/docs/api/index.md +66 -0
  20. data/docs/api/models/content.md +165 -0
  21. data/docs/api/models/entity.md +202 -0
  22. data/docs/api/models/fact.md +270 -0
  23. data/docs/api/models/index.md +77 -0
  24. data/docs/api/pipeline/extraction.md +175 -0
  25. data/docs/api/pipeline/index.md +72 -0
  26. data/docs/api/pipeline/resolution.md +209 -0
  27. data/docs/api/services/content-service.md +166 -0
  28. data/docs/api/services/entity-service.md +202 -0
  29. data/docs/api/services/fact-service.md +223 -0
  30. data/docs/api/services/index.md +55 -0
  31. data/docs/architecture/database-schema.md +293 -0
  32. data/docs/architecture/entity-resolution.md +293 -0
  33. data/docs/architecture/index.md +149 -0
  34. data/docs/architecture/temporal-facts.md +268 -0
  35. data/docs/architecture/three-layer-model.md +242 -0
  36. data/docs/assets/css/custom.css +137 -0
  37. data/docs/assets/fact_db.jpg +0 -0
  38. data/docs/assets/images/fact_db.jpg +0 -0
  39. data/docs/concepts.md +183 -0
  40. data/docs/examples/basic-usage.md +235 -0
  41. data/docs/examples/hr-onboarding.md +312 -0
  42. data/docs/examples/index.md +64 -0
  43. data/docs/examples/news-analysis.md +288 -0
  44. data/docs/getting-started/database-setup.md +170 -0
  45. data/docs/getting-started/index.md +71 -0
  46. data/docs/getting-started/installation.md +98 -0
  47. data/docs/getting-started/quick-start.md +191 -0
  48. data/docs/guides/batch-processing.md +325 -0
  49. data/docs/guides/configuration.md +243 -0
  50. data/docs/guides/entity-management.md +364 -0
  51. data/docs/guides/extracting-facts.md +299 -0
  52. data/docs/guides/index.md +22 -0
  53. data/docs/guides/ingesting-content.md +252 -0
  54. data/docs/guides/llm-integration.md +299 -0
  55. data/docs/guides/temporal-queries.md +315 -0
  56. data/docs/index.md +121 -0
  57. data/examples/README.md +130 -0
  58. data/examples/basic_usage.rb +164 -0
  59. data/examples/entity_management.rb +216 -0
  60. data/examples/hr_system.rb +428 -0
  61. data/examples/rule_based_extraction.rb +258 -0
  62. data/examples/temporal_queries.rb +245 -0
  63. data/lib/fact_db/config.rb +71 -0
  64. data/lib/fact_db/database.rb +45 -0
  65. data/lib/fact_db/errors.rb +10 -0
  66. data/lib/fact_db/extractors/base.rb +117 -0
  67. data/lib/fact_db/extractors/llm_extractor.rb +179 -0
  68. data/lib/fact_db/extractors/manual_extractor.rb +53 -0
  69. data/lib/fact_db/extractors/rule_based_extractor.rb +228 -0
  70. data/lib/fact_db/llm/adapter.rb +109 -0
  71. data/lib/fact_db/models/content.rb +62 -0
  72. data/lib/fact_db/models/entity.rb +84 -0
  73. data/lib/fact_db/models/entity_alias.rb +26 -0
  74. data/lib/fact_db/models/entity_mention.rb +33 -0
  75. data/lib/fact_db/models/fact.rb +192 -0
  76. data/lib/fact_db/models/fact_source.rb +35 -0
  77. data/lib/fact_db/pipeline/extraction_pipeline.rb +146 -0
  78. data/lib/fact_db/pipeline/resolution_pipeline.rb +129 -0
  79. data/lib/fact_db/resolution/entity_resolver.rb +261 -0
  80. data/lib/fact_db/resolution/fact_resolver.rb +259 -0
  81. data/lib/fact_db/services/content_service.rb +93 -0
  82. data/lib/fact_db/services/entity_service.rb +150 -0
  83. data/lib/fact_db/services/fact_service.rb +193 -0
  84. data/lib/fact_db/temporal/query.rb +125 -0
  85. data/lib/fact_db/temporal/timeline.rb +134 -0
  86. data/lib/fact_db/version.rb +5 -0
  87. data/lib/fact_db.rb +141 -0
  88. data/mkdocs.yml +198 -0
  89. metadata +288 -0
data/lib/fact_db.rb ADDED
@@ -0,0 +1,141 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_record"
4
+ require "digest"
5
+
6
+ require_relative "fact_db/version"
7
+ require_relative "fact_db/errors"
8
+ require_relative "fact_db/config"
9
+ require_relative "fact_db/database"
10
+
11
+ # Models
12
+ require_relative "fact_db/models/content"
13
+ require_relative "fact_db/models/entity"
14
+ require_relative "fact_db/models/entity_alias"
15
+ require_relative "fact_db/models/fact"
16
+ require_relative "fact_db/models/entity_mention"
17
+ require_relative "fact_db/models/fact_source"
18
+
19
+ # Temporal queries
20
+ require_relative "fact_db/temporal/query"
21
+ require_relative "fact_db/temporal/timeline"
22
+
23
+ # Resolution
24
+ require_relative "fact_db/resolution/entity_resolver"
25
+ require_relative "fact_db/resolution/fact_resolver"
26
+
27
+ # Extractors
28
+ require_relative "fact_db/extractors/base"
29
+ require_relative "fact_db/extractors/manual_extractor"
30
+ require_relative "fact_db/extractors/llm_extractor"
31
+ require_relative "fact_db/extractors/rule_based_extractor"
32
+
33
+ # LLM Integration
34
+ require_relative "fact_db/llm/adapter"
35
+
36
+ # Pipeline (concurrent processing)
37
+ require_relative "fact_db/pipeline/extraction_pipeline"
38
+ require_relative "fact_db/pipeline/resolution_pipeline"
39
+
40
+ # Services
41
+ require_relative "fact_db/services/content_service"
42
+ require_relative "fact_db/services/entity_service"
43
+ require_relative "fact_db/services/fact_service"
44
+
45
+ module FactDb
46
+ class Facts
47
+ attr_reader :config, :content_service, :entity_service, :fact_service,
48
+ :extraction_pipeline, :resolution_pipeline
49
+
50
+ def initialize(config: nil)
51
+ @config = config || FactDb.config
52
+ Database.establish_connection!(@config)
53
+
54
+ @content_service = Services::ContentService.new(@config)
55
+ @entity_service = Services::EntityService.new(@config)
56
+ @fact_service = Services::FactService.new(@config)
57
+ @extraction_pipeline = Pipeline::ExtractionPipeline.new(@config)
58
+ @resolution_pipeline = Pipeline::ResolutionPipeline.new(@config)
59
+ end
60
+
61
+ # Ingest raw content into the event clock
62
+ def ingest(raw_text, type:, captured_at: Time.current, metadata: {}, title: nil, source_uri: nil)
63
+ @content_service.create(
64
+ raw_text,
65
+ type: type,
66
+ captured_at: captured_at,
67
+ metadata: metadata,
68
+ title: title,
69
+ source_uri: source_uri
70
+ )
71
+ end
72
+
73
+ # Extract facts from content
74
+ def extract_facts(content_id, extractor: @config.default_extractor)
75
+ @fact_service.extract_from_content(content_id, extractor: extractor)
76
+ end
77
+
78
+ # Query facts with temporal and entity filtering
79
+ def query_facts(topic: nil, at: nil, entity: nil, status: :canonical)
80
+ @fact_service.query(topic: topic, at: at, entity: entity, status: status)
81
+ end
82
+
83
+ # Resolve a name to an entity
84
+ def resolve_entity(name, type: nil)
85
+ @entity_service.resolve(name, type: type)
86
+ end
87
+
88
+ # Build a timeline for an entity
89
+ def timeline_for(entity_id, from: nil, to: nil)
90
+ @fact_service.timeline(entity_id: entity_id, from: from, to: to)
91
+ end
92
+
93
+ # Get currently valid facts about an entity
94
+ def current_facts_for(entity_id)
95
+ query_facts(entity: entity_id, at: nil, status: :canonical)
96
+ end
97
+
98
+ # Get facts valid at a specific point in time
99
+ def facts_at(at, entity: nil, topic: nil)
100
+ query_facts(at: at, entity: entity, topic: topic, status: :canonical)
101
+ end
102
+
103
+ # Batch extract facts from multiple content items
104
+ #
105
+ # @param content_ids [Array<Integer>] Content IDs to process
106
+ # @param extractor [Symbol] Extractor type (:manual, :llm, :rule_based)
107
+ # @param parallel [Boolean] Whether to use parallel processing
108
+ # @return [Array<Hash>] Results with extracted facts per content
109
+ def batch_extract(content_ids, extractor: @config.default_extractor, parallel: true)
110
+ contents = Models::Content.where(id: content_ids).to_a
111
+ if parallel
112
+ @extraction_pipeline.process_parallel(contents, extractor: extractor)
113
+ else
114
+ @extraction_pipeline.process(contents, extractor: extractor)
115
+ end
116
+ end
117
+
118
+ # Batch resolve entity names
119
+ #
120
+ # @param names [Array<String>] Entity names to resolve
121
+ # @param type [Symbol, nil] Entity type filter
122
+ # @return [Array<Hash>] Resolution results
123
+ def batch_resolve_entities(names, type: nil)
124
+ @resolution_pipeline.resolve_entities(names, type: type)
125
+ end
126
+
127
+ # Detect fact conflicts for multiple entities
128
+ #
129
+ # @param entity_ids [Array<Integer>] Entity IDs to check
130
+ # @return [Array<Hash>] Conflict detection results
131
+ def detect_fact_conflicts(entity_ids)
132
+ @resolution_pipeline.detect_conflicts(entity_ids)
133
+ end
134
+ end
135
+
136
+ class << self
137
+ def new(**options)
138
+ Facts.new(**options)
139
+ end
140
+ end
141
+ end
data/mkdocs.yml ADDED
@@ -0,0 +1,198 @@
1
+ # MkDocs Configuration for FactDb Documentation
2
+ site_name: FactDb
3
+ site_description: Temporal fact tracking with entity resolution and audit trails for Ruby
4
+ site_author: Dewayne VanHoozer
5
+ site_url: https://madbomber.github.io/fact_db
6
+ copyright: Copyright &copy; 2025 Dewayne VanHoozer
7
+
8
+ # Repository information
9
+ repo_name: madbomber/fact_db
10
+ repo_url: https://github.com/madbomber/fact_db
11
+ edit_uri: edit/main/docs/
12
+
13
+ # Configuration
14
+ theme:
15
+ name: material
16
+
17
+ # Color scheme
18
+ palette:
19
+ - scheme: default
20
+ primary: teal
21
+ accent: amber
22
+ toggle:
23
+ icon: material/brightness-7
24
+ name: Switch to dark mode
25
+
26
+ - scheme: slate
27
+ primary: teal
28
+ accent: amber
29
+ toggle:
30
+ icon: material/brightness-4
31
+ name: Switch to light mode
32
+
33
+ # Typography
34
+ font:
35
+ text: Roboto
36
+ code: Roboto Mono
37
+
38
+ # Logo and icon
39
+ icon:
40
+ repo: fontawesome/brands/github
41
+ logo: material/clock-time-four
42
+
43
+ # Theme features
44
+ features:
45
+ - navigation.instant
46
+ - navigation.tracking
47
+ - navigation.tabs
48
+ - navigation.tabs.sticky
49
+ - navigation.path
50
+ - navigation.indexes
51
+ - navigation.top
52
+ - navigation.footer
53
+ - toc.follow
54
+ - search.suggest
55
+ - search.highlight
56
+ - search.share
57
+ - header.autohide
58
+ - content.code.copy
59
+ - content.code.annotate
60
+ - content.tabs.link
61
+ - content.tooltips
62
+ - content.action.edit
63
+ - content.action.view
64
+
65
+ # Plugins
66
+ plugins:
67
+ - search:
68
+ separator: '[\s\-,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])'
69
+ - tags
70
+
71
+ # Extensions
72
+ markdown_extensions:
73
+ - abbr
74
+ - admonition
75
+ - attr_list
76
+ - def_list
77
+ - footnotes
78
+ - md_in_html
79
+ - tables
80
+ - toc:
81
+ permalink: true
82
+ title: On this page
83
+
84
+ - pymdownx.arithmatex:
85
+ generic: true
86
+ - pymdownx.betterem:
87
+ smart_enable: all
88
+ - pymdownx.caret
89
+ - pymdownx.critic
90
+ - pymdownx.details
91
+ - pymdownx.emoji:
92
+ emoji_generator: !!python/name:material.extensions.emoji.to_svg
93
+ emoji_index: !!python/name:material.extensions.emoji.twemoji
94
+ - pymdownx.highlight:
95
+ anchor_linenums: true
96
+ line_spans: __span
97
+ pygments_lang_class: true
98
+ - pymdownx.inlinehilite
99
+ - pymdownx.keys
100
+ - pymdownx.magiclink:
101
+ repo_url_shorthand: true
102
+ user: madbomber
103
+ repo: fact_db
104
+ normalize_issue_symbols: true
105
+ - pymdownx.mark
106
+ - pymdownx.smartsymbols
107
+ - pymdownx.snippets:
108
+ check_paths: true
109
+ - pymdownx.superfences:
110
+ custom_fences:
111
+ - name: mermaid
112
+ class: mermaid
113
+ format: !!python/name:pymdownx.superfences.fence_code_format
114
+ - pymdownx.tabbed:
115
+ alternate_style: true
116
+ - pymdownx.tasklist:
117
+ custom_checkbox: true
118
+ - pymdownx.tilde
119
+
120
+ # Extra CSS
121
+ extra_css:
122
+ - assets/css/custom.css
123
+
124
+ # Social media and extra configuration
125
+ extra:
126
+ social:
127
+ - icon: fontawesome/brands/github
128
+ link: https://github.com/madbomber/fact_db
129
+ name: FactDb on GitHub
130
+ - icon: fontawesome/solid/gem
131
+ link: https://rubygems.org/gems/fact_db
132
+ name: FactDb on RubyGems
133
+
134
+ analytics:
135
+ feedback:
136
+ title: Was this page helpful?
137
+ ratings:
138
+ - icon: material/emoticon-happy-outline
139
+ name: This page was helpful
140
+ data: 1
141
+ note: Thanks for your feedback!
142
+ - icon: material/emoticon-sad-outline
143
+ name: This page could be improved
144
+ data: 0
145
+ note: Thanks for your feedback! Help us improve by creating an issue.
146
+
147
+ # Navigation
148
+ nav:
149
+ - Home:
150
+ - Overview: index.md
151
+ - Concepts: concepts.md
152
+ - Getting Started:
153
+ - getting-started/index.md
154
+ - Installation: getting-started/installation.md
155
+ - Quick Start: getting-started/quick-start.md
156
+ - Database Setup: getting-started/database-setup.md
157
+ - Architecture:
158
+ - architecture/index.md
159
+ - Three-Layer Model: architecture/three-layer-model.md
160
+ - Temporal Facts: architecture/temporal-facts.md
161
+ - Entity Resolution: architecture/entity-resolution.md
162
+ - Database Schema: architecture/database-schema.md
163
+ - Guides:
164
+ - guides/index.md
165
+ - Configuration: guides/configuration.md
166
+ - Ingesting Content: guides/ingesting-content.md
167
+ - Extracting Facts: guides/extracting-facts.md
168
+ - LLM Integration: guides/llm-integration.md
169
+ - Temporal Queries: guides/temporal-queries.md
170
+ - Entity Management: guides/entity-management.md
171
+ - Batch Processing: guides/batch-processing.md
172
+ - API Reference:
173
+ - api/index.md
174
+ - Facts: api/facts.md
175
+ - Models:
176
+ - api/models/index.md
177
+ - Content: api/models/content.md
178
+ - Entity: api/models/entity.md
179
+ - Fact: api/models/fact.md
180
+ - Services:
181
+ - api/services/index.md
182
+ - ContentService: api/services/content-service.md
183
+ - EntityService: api/services/entity-service.md
184
+ - FactService: api/services/fact-service.md
185
+ - Extractors:
186
+ - api/extractors/index.md
187
+ - ManualExtractor: api/extractors/manual.md
188
+ - LLMExtractor: api/extractors/llm.md
189
+ - RuleBasedExtractor: api/extractors/rule-based.md
190
+ - Pipeline:
191
+ - api/pipeline/index.md
192
+ - ExtractionPipeline: api/pipeline/extraction.md
193
+ - ResolutionPipeline: api/pipeline/resolution.md
194
+ - Examples:
195
+ - examples/index.md
196
+ - Basic Usage: examples/basic-usage.md
197
+ - HR Onboarding: examples/hr-onboarding.md
198
+ - News Analysis: examples/news-analysis.md
metadata ADDED
@@ -0,0 +1,288 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fact_db
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: activerecord
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '7.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '7.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: pg
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '1.5'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '1.5'
40
+ - !ruby/object:Gem::Dependency
41
+ name: neighbor
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0.3'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0.3'
54
+ - !ruby/object:Gem::Dependency
55
+ name: anyway_config
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '2.0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '2.0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: chronic
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0.10'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0.10'
82
+ - !ruby/object:Gem::Dependency
83
+ name: simple_flow
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0.2'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0.2'
96
+ - !ruby/object:Gem::Dependency
97
+ name: minitest
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '5.0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '5.0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rake
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '13.0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '13.0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: debug_me
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ - !ruby/object:Gem::Dependency
139
+ name: rubocop
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ - !ruby/object:Gem::Dependency
153
+ name: yard
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ type: :development
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ description: |
167
+ FactDb implements the Event Clock concept - capturing organizational reasoning
168
+ through temporal facts with validity periods (valid_at/invalid_at), entity resolution,
169
+ and audit trails back to source content. Built on PostgreSQL with pgvector support
170
+ for semantic search.
171
+ email:
172
+ - dvanhoozer@gmail.com
173
+ executables: []
174
+ extensions: []
175
+ extra_rdoc_files: []
176
+ files:
177
+ - ".envrc"
178
+ - CHANGELOG.md
179
+ - COMMITS.md
180
+ - README.md
181
+ - Rakefile
182
+ - db/migrate/001_enable_extensions.rb
183
+ - db/migrate/002_create_contents.rb
184
+ - db/migrate/003_create_entities.rb
185
+ - db/migrate/004_create_entity_aliases.rb
186
+ - db/migrate/005_create_facts.rb
187
+ - db/migrate/006_create_entity_mentions.rb
188
+ - db/migrate/007_create_fact_sources.rb
189
+ - docs/api/extractors/index.md
190
+ - docs/api/extractors/llm.md
191
+ - docs/api/extractors/manual.md
192
+ - docs/api/extractors/rule-based.md
193
+ - docs/api/facts.md
194
+ - docs/api/index.md
195
+ - docs/api/models/content.md
196
+ - docs/api/models/entity.md
197
+ - docs/api/models/fact.md
198
+ - docs/api/models/index.md
199
+ - docs/api/pipeline/extraction.md
200
+ - docs/api/pipeline/index.md
201
+ - docs/api/pipeline/resolution.md
202
+ - docs/api/services/content-service.md
203
+ - docs/api/services/entity-service.md
204
+ - docs/api/services/fact-service.md
205
+ - docs/api/services/index.md
206
+ - docs/architecture/database-schema.md
207
+ - docs/architecture/entity-resolution.md
208
+ - docs/architecture/index.md
209
+ - docs/architecture/temporal-facts.md
210
+ - docs/architecture/three-layer-model.md
211
+ - docs/assets/css/custom.css
212
+ - docs/assets/fact_db.jpg
213
+ - docs/assets/images/fact_db.jpg
214
+ - docs/concepts.md
215
+ - docs/examples/basic-usage.md
216
+ - docs/examples/hr-onboarding.md
217
+ - docs/examples/index.md
218
+ - docs/examples/news-analysis.md
219
+ - docs/getting-started/database-setup.md
220
+ - docs/getting-started/index.md
221
+ - docs/getting-started/installation.md
222
+ - docs/getting-started/quick-start.md
223
+ - docs/guides/batch-processing.md
224
+ - docs/guides/configuration.md
225
+ - docs/guides/entity-management.md
226
+ - docs/guides/extracting-facts.md
227
+ - docs/guides/index.md
228
+ - docs/guides/ingesting-content.md
229
+ - docs/guides/llm-integration.md
230
+ - docs/guides/temporal-queries.md
231
+ - docs/index.md
232
+ - examples/README.md
233
+ - examples/basic_usage.rb
234
+ - examples/entity_management.rb
235
+ - examples/hr_system.rb
236
+ - examples/rule_based_extraction.rb
237
+ - examples/temporal_queries.rb
238
+ - lib/fact_db.rb
239
+ - lib/fact_db/config.rb
240
+ - lib/fact_db/database.rb
241
+ - lib/fact_db/errors.rb
242
+ - lib/fact_db/extractors/base.rb
243
+ - lib/fact_db/extractors/llm_extractor.rb
244
+ - lib/fact_db/extractors/manual_extractor.rb
245
+ - lib/fact_db/extractors/rule_based_extractor.rb
246
+ - lib/fact_db/llm/adapter.rb
247
+ - lib/fact_db/models/content.rb
248
+ - lib/fact_db/models/entity.rb
249
+ - lib/fact_db/models/entity_alias.rb
250
+ - lib/fact_db/models/entity_mention.rb
251
+ - lib/fact_db/models/fact.rb
252
+ - lib/fact_db/models/fact_source.rb
253
+ - lib/fact_db/pipeline/extraction_pipeline.rb
254
+ - lib/fact_db/pipeline/resolution_pipeline.rb
255
+ - lib/fact_db/resolution/entity_resolver.rb
256
+ - lib/fact_db/resolution/fact_resolver.rb
257
+ - lib/fact_db/services/content_service.rb
258
+ - lib/fact_db/services/entity_service.rb
259
+ - lib/fact_db/services/fact_service.rb
260
+ - lib/fact_db/temporal/query.rb
261
+ - lib/fact_db/temporal/timeline.rb
262
+ - lib/fact_db/version.rb
263
+ - mkdocs.yml
264
+ homepage: https://github.com/MadBomber/fact_db
265
+ licenses:
266
+ - MIT
267
+ metadata:
268
+ homepage_uri: https://github.com/MadBomber/fact_db
269
+ source_code_uri: https://github.com/MadBomber/fact_db
270
+ changelog_uri: https://github.com/MadBomber/fact_db/blob/main/CHANGELOG.md
271
+ rdoc_options: []
272
+ require_paths:
273
+ - lib
274
+ required_ruby_version: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ version: 3.0.0
279
+ required_rubygems_version: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - ">="
282
+ - !ruby/object:Gem::Version
283
+ version: '0'
284
+ requirements: []
285
+ rubygems_version: 4.0.3
286
+ specification_version: 4
287
+ summary: Temporal fact tracking with entity resolution and audit trails
288
+ test_files: []