clamsproject / clams-python

CLAMS SDK for python
http://sdk.clams.ai/
Apache License 2.0
4 stars 1 forks source link

additional comment field for input or output specs in app metadata #200

Closed keighrim closed 3 months ago

keighrim commented 3 months ago

New Feature Summary

(This issue succeeds https://github.com/clamsproject/mmif/issues/225)


As discussed in https://github.com/clamsproject/mmif/issues/225, we want to allow app developers to add some free text "comments" at individual type level, in addition to the app-level description field. See the linked issue for more discussion and alternatives (considered and rejected).

Related

No response

Alternatives

No response

Additional context

No response

keighrim commented 3 months ago

Current way of writing I/O type specification for "oneOf" condition on a property is (also as reviewed in https://github.com/clamsproject/clams-python/issues/194#issuecomment-1974983541) enumerating all those possible values of "oneOf" condition as separate I/O type specification

# example taken from the linked issue
  "output": [{
    "@type": "http://mmif.clams.ai/vocabulary/TimeFrame/v1",
    "properties": {
      "timeUnit": "milliseconds",
      "labelset": ["bars", "slate", "chyron", "credits", "NEG"],
      "label": "bars"
    }
  }, {
    "@type": "http://mmif.clams.ai/vocabulary/TimeFrame/v1",
    "properties": {
      "timeUnit": "milliseconds",
      "labelset": ["bars", "slate", "chyron", "credits", "NEG"],
      "label": "slate"
    }
  }, {
    "@type": "http://mmif.clams.ai/vocabulary/TimeFrame/v1",
    "properties": {
      "timeUnit": "milliseconds",
      "labelset": ["bars", "slate", "chyron", "credits", "NEG"],
      "label": "chyron"
    }
  }, {
    "@type": "http://mmif.clams.ai/vocabulary/TimeFrame/v1",
    "properties": {
      "timeUnit": "milliseconds",
      "labelset": ["bars", "slate", "chyron", "credits", "NEG"],
      "label": "credits"
    }
  }, {
    "@type": "http://mmif.clams.ai/vocabulary/TimePoint/v1",
    "properties": {
      "labelset": ["bars", "slate", "chyron", "credits", "NEG"],
      "timeUnit": "milliseconds"
    }
  }],

As already discussed in the linked issue, when the type has some properties with fixed values + some property with "oneOf" values, the representation becomes pretty ugly, and the same problem applies to this description field (NOTE that the description field is not a part of properties).