How opennars/opennars works
OpenNARS is a general-purpose non-axiomatic reasoning engine. Users or environments submit Narsese tasks; the core parses and queues them, cycles through concept and task selection, performs inference, and emits answers or operation results. The README also describes temporal reasoning and goal execution. The graph follows documented control flow and the available source references; several domain branches are represented at directory level because their implementations were not excerpted.
Main entry points: Nar.java NAR runtime · Memory.java Memory and task buffer · GeneralInferenceControl.java Working-cycle control · RuleTables.java Inference rules
Components 22
Input and output
- Narsese parser
src/main/java/org/opennars/io/Narsese.java - Event system
src/main/java/org/opennars/io/events/EventEmitter.java - Answer and text output
src/main/java/org/opennars/io/events/TextOutputHandler.java
Reasoning control
- NAR runtime
src/main/java/org/opennars/main/Nar.java - Working-cycle control
src/main/java/org/opennars/control/GeneralInferenceControl.java - Temporal control
src/main/java/org/opennars/control/TemporalInferenceControl.java - Task processing
src/main/java/org/opennars/control/concept
Inference
- Derivation context
src/main/java/org/opennars/control/DerivationContext.java - Inference rules
src/main/java/org/opennars/inference/RuleTables.java - Budget functions
src/main/java/org/opennars/inference/BudgetFunctions.java - Truth functions
src/main/java/org/opennars/inference/TruthFunctions.java - Temporal rules
src/main/java/org/opennars/inference/TemporalRules.java - Narsese term model
src/main/java/org/opennars/language/CompoundTerm.java
Knowledge memory
- Task representations
src/main/java/org/opennars/entity/Task.java - Concepts and links
src/main/java/org/opennars/entity/Concept.java - Memory and task buffer
src/main/java/org/opennars/storage/Memory.java - Priority selection
src/main/java/org/opennars/storage/Bag.java
Actions and extensions
- Operators
src/main/java/org/opennars/operator/Operator.java - Plugins
src/main/java/org/opennars/plugin/Plugin.java - Mental plugins
src/main/java/org/opennars/plugin/mental - Perception channels
src/main/java/org/opennars/plugin/perception
Other components
- User / environment
Connections 27
- User / environment → NAR runtime: submits tasks
- NAR runtime → Narsese parser: parses input
src/main/java/org/opennars/main/Nar.java - Narsese parser → Task representations: produces tasks
- NAR runtime → Memory and task buffer: queues tasks
src/main/java/org/opennars/main/Nar.java - NAR runtime → Working-cycle control: runs cycles
src/main/java/org/opennars/control/GeneralInferenceControl.java - Working-cycle control → Memory and task buffer: selects from
src/main/java/org/opennars/control/GeneralInferenceControl.java - Memory and task buffer → Priority selection: prioritizes items
src/main/java/org/opennars/storage/Memory.java - Memory and task buffer → Concepts and links: retrieves concepts
src/main/java/org/opennars/storage/Memory.java - Working-cycle control → Concepts and links: selects task links
src/main/java/org/opennars/control/GeneralInferenceControl.java - Working-cycle control → Derivation context: sets derivation context
src/main/java/org/opennars/control/GeneralInferenceControl.java - Working-cycle control → Inference rules: dispatches inference
src/main/java/org/opennars/control/GeneralInferenceControl.java - Inference rules → Derivation context: derives tasks
src/main/java/org/opennars/inference/RuleTables.java - Derivation context → Memory and task buffer: adds derived tasks
src/main/java/org/opennars/control/DerivationContext.java - Derivation context → Truth functions: uses truth values
src/main/java/org/opennars/control/DerivationContext.java - Inference rules → Budget functions: uses budgets
src/main/java/org/opennars/inference/RuleTables.java - Inference rules → Temporal rules: applies temporal rules
src/main/java/org/opennars/inference/RuleTables.java - Temporal control → Temporal rules: applies temporal inference
src/main/java/org/opennars/control/TemporalInferenceControl.java - Inference rules → Narsese term model: operates on terms
src/main/java/org/opennars/inference/RuleTables.java - Concepts and links → Task processing: processes task types
src/main/java/org/opennars/entity/Concept.java - NAR runtime → Event system: emits events
src/main/java/org/opennars/main/Nar.java - Event system → Answer and text output: dispatches output
- Answer and text output → User / environment: reports answers
- Memory and task buffer → Operators: stores operators
src/main/java/org/opennars/storage/Memory.java - NAR runtime → Plugins: registers plugins
src/main/java/org/opennars/interfaces/Pluggable.java - Plugins → Mental plugins: includes implementations
src/main/java/org/opennars/plugin/mental/InternalExperience.java - NAR runtime → Perception channels: accepts sensory channels
src/main/java/org/opennars/main/Nar.java - Operators → User / environment: executes operations