Skip to content

Does bulk API validate against languages? #226

Description

@enikao

In a bulk API request, does the repository check the request for consistency w.r.t. the language?

This relates to:

  • classifier of node exists
  • if node is an annotation: node's classifier can annotate parent's classifier
  • if node's classifier is not an annotation: node can exist as child in its parent's classifier
  • if node is used as a partition: node's classifier is marked as partition
  • if node is not used as a partition: node's classifier is not marked as partition
  • nodes mentioned in annotations are annotations
  • metapointers of properties are part of the node's classifier
  • property values adhere to its classifier type
  • all required properties are set
  • metapointers of containments are part of the node's classifier
  • nodes mentioned in containments are not annotations
  • nodes mentioned in containments fit the metapointer of the containment
  • all containments adhere to their cardinality (required ones are present, only multiple ones have more than one child)
  • metapointers of references are part of the node's classifier
  • nodes mentioned in references fit the metapointer of the reference
  • all references adhere to their cardinality

Pro:

  • All participants can assume valid models (after initial validation)

Con:

  • The repository has to check the validity on every request. This might be expensive (we have to care for all concept inheritance and polymorphism)
  • We can never change a language without changing its version (useful during development)
  • If there is an issue with the model, we need a "backdoor" to the repository to fix it
  • For required children (including transitive) and references, we can only store the model once we've created the whole required subtree
  • Parser-based clients can only store valid ASTs, or have to use extremely leniently designed languages. Especially for interactive editors, the AST is invalid most of the time.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    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