Skip to content

Appendix on vocabulary plugin architecture? #995

Closed
@handrews

Description

@handrews

Recent discussions have made it clear that we need some consensus on the interface to / capabilities of vocabulary handling modules. Perhaps an appendix? Or maybe on the web site?

For me, the fundamentals are....

  • Interactions among are specified in terms of annotations
    • annotation names match keyword names
    • there is no way to know from what vocabulary a keyword / its annotation(s) derived
    • so far, only adjacent keywords, or keywords in subschemas of adjacent in-place applicators, cause interactions
    • adjacent == dynamic schema paths are identical (or prefix is identical for subschema of adjacent)
    • via in-place applicators == instance location is identical
  • vocabularies are not, at the code level, aware of each other
  • the default processing model should be to pass each keyword to each module
    • gather all annotations for each keyword from each module
    • AND all validation results for each keyword from each module
  • when implementing an applicator, a module needs to be able to call back to the main implementation to evaluate the subschema(s)

It may be necessary to do one or more of the following in order to get keywords evaluated in the right order:

  • have each module indicate what keyword(s) it handles
  • have each module indicate which, if any, keywords are in-place applicators
  • have each module indicate which, if any, keywords rely on which annotation names (which are also keyword names)
  • have each module indicate which, if any, keywords rely on in-place applicators

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions