@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos:    <http://www.w3.org/2004/02/skos/core#> .
@prefix dcterms: <http://purl.org/dc/terms/> .

@prefix arch:    <https://meta.linked.archi/core#> .
@prefix am4:     <https://meta.linked.archi/archimate4/onto#> .
@prefix am4mm:   <https://meta.linked.archi/archimate4/metamodel#> .
@prefix am4vp:   <https://meta.linked.archi/archimate4/viewpoints#> .
@prefix :        <https://meta.linked.archi/examples/archimate4-viewpoint/> .

#################################################################
# ArchiMate 4.0 viewpoint conformance reference example
#
# The data the `archimate4-viewpoints` preset validates. Its job is
# to make the viewpoint conformance shapes fire on something.
#
# The `archimate-viewpoints` preset validates archimate3.2-onto.ttl
# — a vocabulary, with no views in it at all — so its element and
# relationship constraints match nothing and a clean report says
# only that the shapes parsed. This model has views, declared
# viewpoints, elements placed on them and a relationship between
# two of them, so every shape in archimate4-viewpoint-shapes.ttl
# has something to judge.
#
# It is deliberately CONFORMANT and must report clean. That is the
# regression it guards: a shape that quietly stops matching is
# invisible against data that could never match it, which is
# exactly how two conformance constraints came to be keyed on
# arch:exposedInView, a property nothing emitted. Introduce a
# non-conformant element here and the preset must go red.
#
# Two views on purpose. :OrgChart is an arch:Diagram and
# :ActorCatalog an arch:Catalog, both conforming to
# am4vp:Organization, whose arch:viewType admits either. The
# Catalog is what proves the shapes target arch:View rather than
# arch:Diagram — while they targeted the subclass, a catalogue
# escaped every rule in the file.
#
# Every element type here is in the Organization palette
# (am4:BusinessActor, am4:Role, am4:Collaboration,
# am4:BusinessInterface, am4:Location), and :CustomerContact is an
# am4:Assignment whose endpoints are both in it — which is what
# RelationshipEndpointConformanceShape checks.
#
# Membership is stated by the member, per DD-30: arch:inModel on
# every concept, arch:inView on everything a view presents.
#
# No owl:Ontology header, following examples/uml-example.ttl. This
# is preset data, not a published asset, so it declares no
# preferred namespace and is not registered for doc generation.
#################################################################

## Model

:Model
    a                             arch:Model ;
    skos:prefLabel                "NordFreight Organization"@en ;
    arch:modelConformsToMetamodel am4mm:ArchiMate4 ;
.

## Views

:OrgChart
    a                            arch:Diagram, arch:View ;
    skos:prefLabel               "Organization Chart"@en ;
    arch:inModel                 :Model ;
    arch:viewConformsToViewpoint am4vp:Organization ;
.

# An arch:Catalog rather than a Diagram. am4vp:Organization declares
# `arch:viewType arch:Diagram, arch:Catalog`, so this conforms.
:ActorCatalog
    a                            arch:Catalog, arch:View ;
    skos:prefLabel               "Actor Catalogue"@en ;
    arch:inModel                 :Model ;
    arch:viewConformsToViewpoint am4vp:Organization ;
.

## Elements — all inside the Organization viewpoint palette

:Dispatcher
    a              am4:BusinessActor ;
    skos:prefLabel "Dispatcher"@en ;
    arch:inModel   :Model ;
    arch:inView    :OrgChart, :ActorCatalog ;
.

:AccountManager
    a              am4:BusinessActor ;
    skos:prefLabel "Account Manager"@en ;
    arch:inModel   :Model ;
    arch:inView    :OrgChart, :ActorCatalog ;
.

# Role and Collaboration are Common Domain elements in 4.0, usable across domains.
:CustomerLiaison
    a              am4:Role ;
    skos:prefLabel "Customer Liaison"@en ;
    arch:inModel   :Model ;
    arch:inView    :OrgChart ;
.

:ServiceDesk
    a              am4:Collaboration ;
    skos:prefLabel "Service Desk"@en ;
    arch:inModel   :Model ;
    arch:inView    :OrgChart ;
.

:RotterdamHub
    a              am4:Location ;
    skos:prefLabel "Rotterdam Hub"@en ;
    arch:inModel   :Model ;
    arch:inView    :OrgChart ;
.

## Relationship — both endpoints inside the palette

:CustomerContact
    a              am4:Assignment ;
    skos:prefLabel "fulfils"@en ;
    arch:inModel   :Model ;
    arch:inView    :OrgChart ;
    arch:source    :AccountManager ;
    arch:target    :CustomerLiaison ;
.
