Chapter 10: Ecosystem Case Studies¶
Learning Objectives¶
By the end of this chapter you will be able to:
- Integrate the CTO ontology with FCC's object model layer.
- Federate AOME taxonomy data with FCC persona catalogs.
- Enrich CONSTEL knowledge graphs with FCC-derived entities.
- Design a cross-project unified search architecture.
The FCC Ecosystem¶
FCC operates within an ecosystem of 11 interrelated projects, each contributing specialized capabilities. Four projects are particularly important for advanced integration:
| Project | Abbreviation | Role |
|---|---|---|
| Cloud Technology Ontology | CTO | Ontological backbone for domain modeling |
| Archetype Orchestration Meta-Engine | AOME | Archetype taxonomy and composition |
| Constellation Knowledge Graph | CONSTEL | Cross-domain knowledge federation |
| SkyParlour | SP | Visualization and interaction design |
This chapter provides deep-dive case studies for each integration.
Case Study 1: CTO Ontology Integration¶
Background¶
The CTO project defines a comprehensive ontology for cloud technology domains. It provides a vocabulary of entities (services, capabilities, patterns) and relationships (depends-on, implements, extends) that FCC uses to ground its personas in domain reality.
Integration Architecture¶
FCC integrates with CTO through the fcc.objectmodel layer:
┌──────────────────┐ ┌──────────────────┐
│ FCC Personas │ │ CTO Ontology │
│ (YAML) │ │ (OWL/RDF) │
└────────┬─────────┘ └────────┬─────────┘
│ │
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ ModelFacade │ │ CTOFacadeAdapter │
│ (FCC) │◄────│ (Bridge) │
└────────┬─────────┘ └──────────────────┘
│
▼
┌──────────────────┐
│ Unified Query │
│ Interface │
└──────────────────┘
VocabularyMapping¶
The VocabularyMapping dataclass maps FCC terms to CTO terms:
from fcc.objectmodel.mapping import VocabularyMapping
mapping = VocabularyMapping(
source_namespace="fcc",
target_namespace="cto",
term_mappings={
"persona": "cto:Agent",
"workflow": "cto:Process",
"deliverable": "cto:Artifact",
"category": "cto:Domain",
"fcc_phase": "cto:Phase",
},
)
Querying Across Systems¶
With the bridge in place, queries can span both systems:
from fcc.objectmodel.facade import ModelFacade
facade = ModelFacade.from_registries(fcc_registry, cto_adapter)
# Find all entities related to "data engineering"
results = facade.search("data engineering", limit=20)
for r in results:
print(f" {r.namespace}:{r.id} - {r.name} ({r.entity_type})")
Evolution Assessment¶
The ObjectModelAssessment tracks how well FCC's object model aligns
with CTO's ontology maturity:
from fcc.objectmodel.evolution import ObjectModelAssessment
assessment = ObjectModelAssessment.evaluate(fcc_registry, cto_adapter)
print(f"Alignment score: {assessment.alignment_score:.0%}")
print(f"Coverage gaps: {assessment.coverage_gaps}")
Case Study 2: AOME Taxonomy Federation¶
Background¶
AOME manages the 37 ecosystem archetypes and their composition rules. FCC's 102 personas are derived from these archetypes but add FCC- specific attributes (R.I.S.C.E.A.R., dimensions, constitutions). Federation ensures that changes in AOME flow to FCC and vice versa.
Federation Protocol¶
The federation protocol operates in three stages:
Stage 1: Entity Resolution
from fcc.federation.resolver import EntityResolver
resolver = EntityResolver()
resolver.register("fcc", fcc_registry)
resolver.register("aome", aome_catalog)
# Resolve an FCC persona to its AOME archetype
matches = resolver.resolve("fcc:research_catalyst")
# Returns: [("aome:researcher_archetype", 0.95)]
Stage 2: Change Tracking
from fcc.federation.tracker import ChangeTracker
tracker = ChangeTracker()
tracker.track("aome", aome_catalog_v2)
changes = tracker.changes_since("aome", version="2.3.0")
print(f"New archetypes: {changes.additions}")
print(f"Modified archetypes: {changes.modifications}")
print(f"Removed archetypes: {changes.removals}")
Stage 3: Namespace Reconciliation
from fcc.federation.namespace import NamespaceRegistry
ns = NamespaceRegistry()
ns.register("fcc", "https://fcc.example.org/")
ns.register("aome", "https://aome.example.org/")
# Generate qualified name
qualified = ns.qualify("fcc", "research_catalyst")
# Returns: "https://fcc.example.org/research_catalyst"
Bidirectional Sync¶
When an AOME archetype is updated, the federation pipeline:
- Detects the change via
ChangeTracker. - Resolves affected FCC personas via
EntityResolver. - Generates update proposals (additions/modifications to R.I.S.C.E.A.R.).
- Submits proposals for human review via
CollaborationEngine.
When an FCC persona is added, the reverse flow creates a proposal for a new AOME archetype.
Case Study 3: CONSTEL Knowledge Graph Enrichment¶
Background¶
CONSTEL maintains a cross-domain knowledge graph that spans all ecosystem projects. FCC contributes persona, workflow, and simulation data as knowledge graph nodes and edges.
Building the FCC Knowledge Graph¶
from fcc.knowledge.builders import build_full_fcc_graph
from fcc.personas.registry import PersonaRegistry
registry = PersonaRegistry.from_package_data()
graph = build_full_fcc_graph(registry)
print(f"Nodes: {graph.node_count}")
print(f"Edges: {graph.edge_count}")
print(f"Node types: {graph.node_types}")
Enrichment Pipeline¶
The enrichment pipeline adds FCC-derived data to CONSTEL:
- Export. Serialize the FCC graph to JSON-LD.
- Map. Apply vocabulary mappings to align FCC terms with CONSTEL terms.
- Merge. Add FCC nodes and edges to the CONSTEL graph, resolving duplicates via entity resolution.
- Validate. Run consistency checks to ensure the merged graph has no dangling references.
from fcc.knowledge.serializers import JsonLdSerializer
from fcc.knowledge.federation import FederatedKnowledgeGraph
# Export FCC graph
serializer = JsonLdSerializer()
fcc_jsonld = serializer.serialize(graph)
# Merge with CONSTEL
federated = FederatedKnowledgeGraph()
federated.add_namespace("fcc", graph)
federated.add_namespace("constel", constel_graph)
# Cross-namespace query
results = federated.query(
node_type="persona",
namespace="fcc",
related_namespace="constel",
)
Ontology Alignment¶
FCC's ontology (FCCOntology) defines 9 node types and 9 edge types.
CONSTEL's ontology is broader. Alignment requires:
- Node type mapping. FCC
persona-> CONSTELagent; FCCworkflow-> CONSTELprocess. - Edge type mapping. FCC
collaborates_with-> CONSTELinteracts_with. - Property mapping. FCC
riscear.role-> CONSTELagent.capability.
Serialization Formats¶
| Format | Use Case | Library |
|---|---|---|
| OWL | Formal ontology definition | rdflib |
| RDF/Turtle | Machine-readable graph export | rdflib |
| SKOS | Taxonomy and vocabulary export | rdflib |
| JSON-LD | Web-friendly linked data | Built-in |
Case Study 4: Cross-Project Unified Search¶
The Problem¶
Each ecosystem project maintains its own data store:
- FCC: Persona YAML + workflow JSON.
- CTO: OWL ontology files.
- AOME: Archetype catalog.
- CONSTEL: Knowledge graph database.
Users need to search across all projects with a single query.
Architecture¶
┌─────────────────────────────────────────────────┐
│ Unified Search │
│ fcc.search + federation │
├──────────┬──────────┬──────────┬────────────────┤
│ FCC │ CTO │ AOME │ CONSTEL │
│ Persona │ Ontology │ Archetype│ Knowledge │
│ Index │ Index │ Index │ Graph Index │
└──────────┴──────────┴──────────┴────────────────┘
Implementation¶
Step 1: Build Per-Project Indices
from fcc.search.persona_index import PersonaSearchIndex
from fcc.search.embeddings import MockEmbeddingProvider
provider = MockEmbeddingProvider()
fcc_index = PersonaSearchIndex(provider)
fcc_index.build(registry)
Step 2: Register in Federation
from fcc.federation.registry import FederationRegistry
fed = FederationRegistry()
fed.register_index("fcc", fcc_index)
fed.register_index("cto", cto_index)
fed.register_index("aome", aome_index)
fed.register_index("constel", constel_index)
Step 3: Unified Query
results = fed.search("data engineering pipeline")
for result in results:
print(f" [{result.namespace}] {result.name} (score: {result.score:.3f})")
Ranking and Deduplication¶
Cross-project search requires:
- Score normalization. Different indices may produce scores on different scales. Normalize to [0, 1] before merging.
- Deduplication. The same entity may appear in multiple indices (e.g., a persona in both FCC and AOME). Use entity resolution to merge duplicate results.
- Namespace weighting. Allow users to prioritize results from specific namespaces (e.g., prefer FCC results when searching for personas).
Integration Checklist¶
| Integration Point | Status | Module |
|---|---|---|
| CTO ontology bridge | Available | fcc.objectmodel.cto_bridge |
| AOME entity resolution | Available | fcc.federation.resolver |
| CONSTEL KG enrichment | Available | fcc.knowledge.federation |
| Unified search | Available | fcc.search + fcc.federation |
| Vocabulary mapping | Available | fcc.objectmodel.mapping |
| Change tracking | Available | fcc.federation.tracker |
| Namespace registry | Available | fcc.federation.namespace |
Lab Exercise¶
Exercise 10.1: Build a Cross-Project Assessment
- Load the FCC persona registry and a mock CTO adapter.
- Run
ObjectModelAssessment.evaluate(). - Inspect alignment scores and coverage gaps.
Exercise 10.2: Federated Knowledge Graph Query
- Build the full FCC knowledge graph.
- Serialize to JSON-LD.
- Create a
FederatedKnowledgeGraphwith two namespaces. - Run a cross-namespace query.
Exercise 10.3: Unified Search Across Projects
- Build persona and action search indices.
- Register both in a
FederationRegistry. - Search for "data engineering" and compare results across namespaces.
Summary¶
- CTO integration provides ontological grounding for FCC personas
through vocabulary mapping and the
CTOFacadeAdapter. - AOME federation enables bidirectional sync of archetypes and personas with change tracking and entity resolution.
- CONSTEL enrichment adds FCC-derived knowledge graph nodes to the cross-domain graph via JSON-LD serialization and federated merging.
- Unified search combines per-project indices with score normalization, deduplication, and namespace weighting for cross-ecosystem queries.
Next: This concludes Book 3 and the FCC book series. For hands-on practice, proceed to the Jupyter notebooks (01-23) and the FCC Guidebook.
Key Takeaways¶
- This chapter covered the essential concepts of Chapter 10: Ecosystem Case Studies.
- Understanding these patterns is critical for effective FCC framework usage.
- Apply these concepts alongside the companion notebooks and Streamlit apps for hands-on reinforcement.
Cross-References¶
- FCC Guidebook — Comprehensive learning resource
- API Reference — Module documentation
- Tutorials — Hands-on walkthroughs