@prefix owl: . @prefix xsd: . @prefix rdfs: . @prefix skos: . @prefix dcterms: . @prefix vann: . @prefix arch: . @prefix archdt: . @prefix am4: . @prefix acme: . @prefix acmevp: . @prefix : . ## ═══════════════════════════════════════════════════════════════════════════════ ## ACME Corp Deliverable Templates ## ## Declares the catalog pages that the deliverable generator would produce. ## Each template references viewpoints, defines SPARQL sections, and points ## to a Handlebars template file. ## ## Status: SPECIFICATION ONLY — the generator tool (la-generate) is not yet ## implemented. The hand-authored HTML in this directory serves as the ## expected output reference. ## ═══════════════════════════════════════════════════════════════════════════════ a owl:Ontology ; vann:preferredNamespaceUri "https://example.com/acme/deliverable-templates#" ; vann:preferredNamespacePrefix "acmedt" ; dcterms:title "ACME Corp Deliverable Templates"@en ; dcterms:description '''Deliverable template definitions for generating the ACME Corp architecture catalog from the knowledge graph. Follows the Linked.Archi deliverable generator specification.'''@en ; dcterms:created "2026-06-16"^^xsd:date ; . ## ═══════════════════════════════════════════════════════════════════════════════ ## Template 1: Artifact Catalog Home ## Generates the CSVLOD grid index page ## ═══════════════════════════════════════════════════════════════════════════════ :ArtifactCatalogHome a arch:DeliverableTemplate ; skos:prefLabel "Artifact Catalog Home"@en ; skos:definition '''The CSVLOD grid index page showing all six artifact types with artifact counts, governing processes, and classification dimensions.'''@en ; arch:templateResource "templates/catalog-home.md.hbs"^^xsd:anyURI ; arch:templateRequiresViewpoint acmevp:TechnologyRadarVP, acmevp:ApplicationLandscapeVP, acmevp:CapabilityHeatMapVP, acmevp:SolutionOverviewVP, acmevp:DataFlowMapVP ; arch:templateHasSection :Home-S1, :Home-S2 ; arch:templateTargetsPurpose acmevp:Informing ; arch:templateHasFormat archdt:MarkdownFormat, archdt:HTMLFormat ; . :Home-S1 a arch:TemplateSection ; arch:sectionOrder 1 ; skos:prefLabel "Artifact Counts by CSVLOD Type"@en ; skos:definition "Summary counts of artifacts per CSVLOD type."@en ; arch:sectionResultKey "artifactCounts" ; arch:sectionQuery """ PREFIX eaop: PREFIX eaoptax: PREFIX skos: SELECT ?csvlodType ?label (COUNT(?artifact) AS ?count) WHERE { ?csvlodType skos:broader eaoptax:ArtifactTypes ; skos:prefLabel ?label . OPTIONAL { ?artifact eaop:classifiedByType ?subtype . ?subtype skos:broader ?csvlodType . } FILTER(lang(?label) = "en") } GROUP BY ?csvlodType ?label ORDER BY ?label """^^xsd:string . :Home-S2 a arch:TemplateSection ; arch:sectionOrder 2 ; skos:prefLabel "Viewpoint Summary"@en ; skos:definition "List of viewpoints with their purposes and stakeholders."@en ; arch:sectionResultKey "viewpoints" ; arch:sectionQuery """ PREFIX arch: PREFIX skos: PREFIX acmevp: SELECT ?viewpoint ?label ?definition ?purpose WHERE { ?viewpoint a arch:Viewpoint ; skos:prefLabel ?label ; skos:definition ?definition . OPTIONAL { ?viewpoint arch:viewpointHasPurpose ?p . ?p skos:prefLabel ?purpose . } FILTER(lang(?label) = "en") } ORDER BY ?label """^^xsd:string . ## ═══════════════════════════════════════════════════════════════════════════════ ## Template 2: Application Landscape Page ## ═══════════════════════════════════════════════════════════════════════════════ :ApplicationLandscapePage a arch:DeliverableTemplate ; skos:prefLabel "Application Landscape Catalog"@en ; skos:definition '''The Landscapes drill-down page showing all application components, their owners, lifecycle status, integrations, and technology dependencies.'''@en ; arch:templateResource "templates/landscapes.md.hbs"^^xsd:anyURI ; arch:templateRequiresViewpoint acmevp:ApplicationLandscapeVP ; arch:templateHasSection :Landscape-S1, :Landscape-S2, :Landscape-S3 ; arch:templateTargetsPurpose acmevp:Informing, acmevp:Deciding ; arch:templateHasFormat archdt:MarkdownFormat, archdt:HTMLFormat ; . :Landscape-S1 a arch:TemplateSection ; arch:sectionOrder 1 ; skos:prefLabel "Application Inventory"@en ; skos:definition "All application components with owner, lifecycle, and last modified date."@en ; arch:sectionResultKey "applications" ; arch:sectionViewpoint acmevp:ApplicationLandscapeVP ; arch:sectionQuery """ PREFIX am4: PREFIX acme: PREFIX ap: PREFIX skos: PREFIX dcterms: SELECT ?app ?label ?teamLabel ?lifecycle ?modified WHERE { ?app a am4:ApplicationComponent ; skos:prefLabel ?label . OPTIONAL { ?app acme:ownedBy ?team . ?team skos:prefLabel ?teamLabel . FILTER(lang(?teamLabel) = "en") } OPTIONAL { ?app ap:atLifecycleStage ?stage . ?stage skos:prefLabel ?lifecycle . FILTER(lang(?lifecycle) = "en") } OPTIONAL { ?app dcterms:modified ?modified } FILTER(lang(?label) = "en") } ORDER BY ?label """^^xsd:string . :Landscape-S2 a arch:TemplateSection ; arch:sectionOrder 2 ; skos:prefLabel "Integration Points"@en ; skos:definition "All integration points with source application and data carried."@en ; arch:sectionResultKey "integrations" ; arch:sectionViewpoint acmevp:ApplicationLandscapeVP ; arch:sectionQuery """ PREFIX am4: PREFIX acme: PREFIX skos: SELECT ?ip ?ipLabel ?appLabel ?dataLabel WHERE { ?ip a acme:IntegrationPoint ; skos:prefLabel ?ipLabel ; acme:exposedBy ?app . ?app skos:prefLabel ?appLabel . OPTIONAL { ?ip acme:carriesData ?data . ?data skos:prefLabel ?dataLabel . FILTER(lang(?dataLabel) = "en") } FILTER(lang(?ipLabel) = "en") FILTER(lang(?appLabel) = "en") } ORDER BY ?appLabel ?ipLabel """^^xsd:string . :Landscape-S3 a arch:TemplateSection ; arch:sectionOrder 3 ; skos:prefLabel "Technology Dependencies"@en ; skos:definition "Applications and the technologies they run on, with adoption recommendations."@en ; arch:sectionResultKey "techDependencies" ; arch:sectionViewpoint acmevp:ApplicationLandscapeVP ; arch:sectionQuery """ PREFIX am4: PREFIX acme: PREFIX skos: SELECT ?appLabel ?techLabel ?recommendation WHERE { ?app a am4:ApplicationComponent ; skos:prefLabel ?appLabel ; am4:realizes ?tech . ?tech a am4:SystemSoftware ; skos:prefLabel ?techLabel . OPTIONAL { ?tech acme:hasRecommendation ?rec . ?rec skos:prefLabel ?recommendation . } FILTER(lang(?appLabel) = "en") FILTER(lang(?techLabel) = "en") } ORDER BY ?appLabel ?techLabel """^^xsd:string . ## ═══════════════════════════════════════════════════════════════════════════════ ## Template 3: Technology Radar Page ## ═══════════════════════════════════════════════════════════════════════════════ :TechnologyRadarPage a arch:DeliverableTemplate ; skos:prefLabel "Technology Radar"@en ; skos:definition '''The Standards drill-down page showing all technologies grouped by adoption recommendation (Adopt, Trial, Hold, Retire).'''@en ; arch:templateResource "templates/standards.md.hbs"^^xsd:anyURI ; arch:templateRequiresViewpoint acmevp:TechnologyRadarVP ; arch:templateHasSection :Radar-S1 ; arch:templateTargetsPurpose acmevp:Governing, acmevp:Deciding ; arch:templateHasFormat archdt:MarkdownFormat, archdt:HTMLFormat ; . :Radar-S1 a arch:TemplateSection ; arch:sectionOrder 1 ; skos:prefLabel "Technologies by Adoption Level"@en ; skos:definition "All technology components grouped by their governance recommendation."@en ; arch:sectionResultKey "technologies" ; arch:sectionViewpoint acmevp:TechnologyRadarVP ; arch:sectionQuery """ PREFIX am4: PREFIX acme: PREFIX skos: SELECT ?tech ?label ?recommendation WHERE { ?tech a am4:SystemSoftware ; skos:prefLabel ?label ; acme:hasRecommendation ?rec . ?rec skos:prefLabel ?recommendation . FILTER(lang(?label) = "en") } ORDER BY ?recommendation ?label """^^xsd:string . ## ═══════════════════════════════════════════════════════════════════════════════ ## Template 4: Capability Heat Map Page ## ═══════════════════════════════════════════════════════════════════════════════ :CapabilityHeatMapPage a arch:DeliverableTemplate ; skos:prefLabel "Capability Heat Map"@en ; skos:definition '''The Visions drill-down page showing business capabilities with maturity assessments, gaps, and linked strategic initiatives.'''@en ; arch:templateResource "templates/visions.md.hbs"^^xsd:anyURI ; arch:templateRequiresViewpoint acmevp:CapabilityHeatMapVP ; arch:templateHasSection :Cap-S1, :Cap-S2 ; arch:templateTargetsPurpose acmevp:Deciding, acmevp:Informing ; arch:templateHasFormat archdt:MarkdownFormat, archdt:HTMLFormat ; . :Cap-S1 a arch:TemplateSection ; arch:sectionOrder 1 ; skos:prefLabel "Capabilities with Maturity"@en ; skos:definition "All business capabilities with their current maturity level."@en ; arch:sectionResultKey "capabilities" ; arch:sectionViewpoint acmevp:CapabilityHeatMapVP ; arch:sectionQuery """ PREFIX am4: PREFIX acme: PREFIX skos: SELECT ?cap ?label ?maturityLabel WHERE { ?cap a am4:Capability ; skos:prefLabel ?label . OPTIONAL { ?cap acme:hasMaturity ?ma . ?ma skos:prefLabel ?maturityLabel . } FILTER(lang(?label) = "en") } ORDER BY ?label """^^xsd:string . :Cap-S2 a arch:TemplateSection ; arch:sectionOrder 2 ; skos:prefLabel "Gaps and Initiatives"@en ; skos:definition "Identified gaps and the strategic initiatives that address them."@en ; arch:sectionResultKey "gapsAndInitiatives" ; arch:sectionViewpoint acmevp:CapabilityHeatMapVP ; arch:sectionQuery """ PREFIX am4: PREFIX acme: PREFIX skos: SELECT ?gap ?gapLabel ?initiative ?initiativeLabel WHERE { ?initiative a am4:WorkPackage ; skos:prefLabel ?initiativeLabel ; acme:closesGap ?gap . ?gap skos:prefLabel ?gapLabel . FILTER(lang(?gapLabel) = "en") FILTER(lang(?initiativeLabel) = "en") } ORDER BY ?gapLabel """^^xsd:string . ## ═══════════════════════════════════════════════════════════════════════════════ ## Template 5: Data Flow Map Page ## ═══════════════════════════════════════════════════════════════════════════════ :DataFlowMapPage a arch:DeliverableTemplate ; skos:prefLabel "Data Flow Map"@en ; skos:definition '''The compliance page showing personal data flows with classification, processing purpose, and legal basis.'''@en ; arch:templateResource "templates/data-flows.md.hbs"^^xsd:anyURI ; arch:templateRequiresViewpoint acmevp:DataFlowMapVP ; arch:templateHasSection :Data-S1, :Data-S2 ; arch:templateTargetsPurpose acmevp:Informing, acmevp:Governing ; arch:templateHasFormat archdt:MarkdownFormat, archdt:HTMLFormat, archdt:PDFFormat ; . :Data-S1 a arch:TemplateSection ; arch:sectionOrder 1 ; skos:prefLabel "Data Objects with Classification"@en ; skos:definition "All data objects with their sensitivity classification."@en ; arch:sectionResultKey "dataObjects" ; arch:sectionViewpoint acmevp:DataFlowMapVP ; arch:sectionQuery """ PREFIX am4: PREFIX acme: PREFIX skos: SELECT ?data ?label ?classificationLabel WHERE { ?data a am4:DataObject ; skos:prefLabel ?label ; acme:hasClassification ?cls . ?cls skos:prefLabel ?classificationLabel . FILTER(lang(?label) = "en") } ORDER BY ?classificationLabel ?label """^^xsd:string . :Data-S2 a arch:TemplateSection ; arch:sectionOrder 2 ; skos:prefLabel "Processing Purposes and Legal Basis"@en ; skos:definition "Data objects with their processing purpose and legal basis (GDPR compliance)."@en ; arch:sectionResultKey "processingRegister" ; arch:sectionViewpoint acmevp:DataFlowMapVP ; arch:sectionQuery """ PREFIX am4: PREFIX acme: PREFIX skos: SELECT ?dataLabel ?purposeLabel ?basisLabel WHERE { ?data a am4:DataObject ; skos:prefLabel ?dataLabel ; acme:processedFor ?purpose . ?purpose skos:prefLabel ?purposeLabel . OPTIONAL { ?purpose acme:hasLegalBasis ?basis . ?basis skos:prefLabel ?basisLabel . } FILTER(lang(?dataLabel) = "en") FILTER(lang(?purposeLabel) = "en") } ORDER BY ?dataLabel ?purposeLabel """^^xsd:string .