Basic principle
Basic principle
The idea is that multiple systems in the physical layer (e.g., databases, streaming platforms, applications, etc.) can share the same concepts. However, instead of arbitrarily modeling domains in the physical layer, the purpose is to have a unique way for specifying the concepts of common interest and its organizing principles in such a way that they are reused. This principle is a core part of a data-centric architecture, reducing undesired duplications and software waste when it is systematically applied.
graph LR subgraph ConceptualLayer Person Vehicle ParkingLot end subgraph PhysicalLayer Database StreamingPlatform Application Other end ConceptualLayer --> Database ConceptualLayer --> StreamingPlatform ConceptualLayer --> Application ConceptualLayer --> Other
In this sense, S2DM
is an approach to specify those concepts of interest systematically.
A more generic (and elaborated) diagram looks like the following:
graph LR subgraph Conceptual layer spec_file_1.graphql spec_file_2.graphql spec_file_N.graphql subgraph S2DM Tools Composer Exporter Other end end subgraph Physical layer App_SHACL App_YAML App_JSON App_Other end spec_file_1.graphql --GraphQL schema 1--> Composer spec_file_2.graphql --GraphQL schema 2--> Composer spec_file_N.graphql --GraphQL schema N--> Composer Composer --Merged GraphQL schema--> Exporter Composer --Merged GraphQL schema--> Other Exporter --VSPEC--> App_YAML Exporter --SHACL--> App_SHACL Exporter --JSON schema--> App_JSON Exporter --Other?--> App_Other