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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions