Merge sflo-host and sflo-config Ontologies
Merge sflo-host and sflo-config Ontologies
Prompt
Merge the sflo-config ontology and the sflo-host ontology, or perhaps just move some classes like ServiceConfig, PlatformServiceConfig.
TODO
- Analyze what needs to move from sflo-host to sflo-config
- Identify questions that need clarification before merge
- Plan the merge structure
- Document the planned changes
- Execute the merge
Decisions
Configuration Hierarchy
- Three levels of config: Platform, Application/Service, and Node
- Each level can have inheritable config that flows down to lower levels
- Inheritable config is primarily useful at platform and application levels, but nodes can also provide it
Class Naming
- Rename
PlatformServiceConfig→PlatformConfig - Rename
ServiceConfig→ApplicationConfig - Create new
HostServiceConfigin sflo-host that extendsApplicationConfig
Merge Plan
What Moves to sflo-config
Classes
- PlatformConfig (formerly PlatformServiceConfig)
- Represents platform-wide defaults
- Links to InheritableNodeConfig for platform-level defaults
- ApplicationConfig (formerly ServiceConfig)
- Represents application/service-level configuration
- Links to InheritableNodeConfig for application-level overrides
- defaultPlatformConfig (formerly defaultPlatformServiceConfig)
- The canonical platform defaults instance
- Contains embedded defaultInheritableNodeConfig
Properties to Move
None - keep application properties in sflo-host
What Stays in sflo-host
Classes
- HostServiceConfig (new, extends ApplicationConfig)
- Concrete implementation for sflo-host application
- Inherits configuration hierarchy capabilities from ApplicationConfig
- LoggingConfig
- LogChannelConfig
- ContainedServicesConfig
- MeshPath
Properties (on HostServiceConfig)
port,host,schememeshPathshasLoggingConfighasContainedServices
Updated Class Hierarchy
graph TD
A[ConfigurationClass] --> B[PlatformConfig]
A --> C[ApplicationConfig]
A --> D[AbstractNodeConfig]
C --> E[HostServiceConfig]
D --> F[OperationalNodeConfig]
D --> G[InheritableNodeConfig]
B -.->|"hasInheritableNodeConfig"| G
C -.->|"hasInheritableNodeConfig"| G
H[Node] -.->|"hasOperationalNodeConfig"| F
H -.->|"hasInheritableNodeConfig"| G
style B fill:#e1f5fe
style C fill:#e1f5fe
style E fill:#fff3e0
style G fill:#e1f5fe
classDef inSfloConfig fill:#e1f5fe
classDef inSfloHost fill:#fff3e0
Blue = sflo-config ontology Orange = sflo-host ontology
Reference Updates
In sflo-config
- Update
hasInheritableNodeConfigdomain to include:PlatformConfig(instead of sflo-host:PlatformServiceConfig)ApplicationConfig(instead of sflo-host:ServiceConfig)sflo:Handle(unchanged)
In sflo-host
- Change references from
sflo-host:ServiceConfigtosflo-config:ApplicationConfig - Update HostServiceConfig to extend
sflo-config:ApplicationConfig - Update namespace prefixes to import sflo-config
Benefits of This Approach
- Clean Separation: Config inheritance hierarchy in one place, application specifics in another
- No Circular Dependencies: sflo-config doesn't reference sflo-host
- Extensibility: Other applications can extend ApplicationConfig with their own specifics
- Clear Inheritance Chain: Platform → Application → Node hierarchy is explicit
Implementation Summary
Changes Made to sflo-config
- Added new classes:
PlatformConfig- Platform-wide configuration with inheritable defaultsApplicationConfig- Application/service-level configuration
- Added default instance:
defaultPlatformConfig- Canonical platform defaults with embeddeddefaultInheritableNodeConfig
- Updated property domains:
hasInheritableNodeConfignow acceptsPlatformConfigandApplicationConfig(instead of sflo-host classes)
Changes Made to sflo-host
- Removed classes:
ServiceConfig(moved to sflo-config asApplicationConfig)PlatformServiceConfig(moved to sflo-config asPlatformConfig)
- Added new class:
HostServiceConfig- Extendssflo-config:ApplicationConfigwith host-specific properties
- Removed instance:
defaultPlatformServiceConfig(moved to sflo-config asdefaultPlatformConfig)
- Updated all property domains:
- Changed from
ServiceConfigtoHostServiceConfig
- Changed from
- Added ontology import:
owl:importspointing to sflo-config ontology
Result
The configuration hierarchy is now cleanly separated:
- sflo-config: Contains the abstract configuration inheritance model (Platform → Application → Node)
- sflo-host: Contains concrete application-specific implementation (HostServiceConfig extends ApplicationConfig)
This allows other applications to extend ApplicationConfig with their own specific properties while reusing the core configuration inheritance mechanism.