Skip to content

dependency rules between schema modules #76

@lzehl

Description

@lzehl

Essentials: core & controlledTerms
Extensions: all the others

Linking dimensions:

  • property: required or optional
  • relation: one-to-one or one-to-many
  • selection: one type or multiple types (category)
  • origin: same module, essential module and extension module

Categories scenarios:

  • essential category: composed of schemas from essentials only
  • extension category: composed of schemas from extensions only
  • mixed category: composed of schemas from essentials and extensions

Dependency types:

  • true: link between modules is by all means unavoidable
  • soft: link between modules is avoidable
    • i: because property is optional
    • ii: selection from mixed category

Linking scenarios:

  • property required, relation one-to-one or one-to-many with one type as selection:
    ✅ schema A truly depends on schema B within the same module
    ✅ schema A in core truly depends on schema B in controlledTerms
    ❌ schema A in core or controlledTerms truly depends on schema B in extension module
    ✅ schema A in extension truly depends on schema B in essential module
    ✅ schema A in extension 1 truly depends on schema B in extension 2 (okay but we need to define extension dependency tree)

  • property required, relation one-to-one or one-to-many with category as selection:
    ✅ schema A truly depends on schemas B or C within the same module
    ✅ schema A in core truly depends on schemas B or C in controlledTerms
    ✅ schema A in extension truly depends on schema B or C in essential module
    ❌ schema A in core or controlledTerms truly depends on schema B or C in extension module(s)
    ✅ schema A in core or controlledTerms truly depends on schema B in core or controlledTerms and softly depends on schema C in extension module(s)

  • property optional, relation one-to-one or one-to-many with one type or category as selection:
    ✅ schema A softly depends on schemas B (or C) within the same module
    ✅ schema A in core softly depends on schemas B (or C) in controlledTerms
    ✅ schema A in extension softly depends on schema B (or C) in essential module
    ⚫ schema A in core or controlledTerms softly depends on schema B (or C) in extension module(s)
    ✅ schema A in core or controlledTerms softly depends on schema B in core or controlledTerms, or schema C in extension module(s)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions