{ "$schema":              "https://json-schema.org/draft/2020-12/schema",
  "$comment":             "https://schemas.mpai.community/AIF/V3.0/data/AIMMetadata.json",
  "$id":                  "https://schemas.mpai.community/MMC/V2.5/AIMs/TextAndImageQuery.json",
  "title":                "Text and Image Query V2.5",

  "Header":               "MMC-TIQ-V2.5",

  "Identifier":           {"ImplementerID": "/* String from IIDRA */", "ImplementationID": "/* String from Implementer */", "AIMName": "MMC-TIQ-V2.5"},

  "APIProfile":           "Basic",

  "Description":          "Text and Image Query: answers with text to a text-based question about an image.",

  "ExternalPorts":        [{ "Name": "InputText",    "Direction": "Input",  "DataType": ["OSD-BTO-V1.5", "OSD-TXO-V1.5"],                     "Technology": "Software", "Protocol": "", "IsRemote": false },
                           { "Name": "InputVisual",  "Direction": "Input",  "DataType": ["OSD-BVO-V1.5", "OSD-VIO-V1.5"],                     "Technology": "Software", "Protocol": "", "IsRemote": false }, 
                           { "Name": "OutputSpeech", "Direction": "Output", "DataType": "OSD-SPO-V1.5",                   "IsOptional": true, "Technology": "Software", "Protocol": "", "IsRemote": false },
                           { "Name": "OutputText",   "Direction": "Output", "DataType": ["OSD-BTO-V1.5", "OSD-TXO-V1.5"],                     "Technology": "Software", "Protocol": "", "IsRemote": false },
                           { "Name": "OutputImage",  "Direction": "Output", "DataType": ["OSD-BVO-V1.5", "OSD-VIO-V1.5"],                     "Technology": "Software", "Protocol": "", "IsRemote": false }],

  "SubAIMs":              [],

  "Topology":             [],

  "AIMLicence":          "/* AIM Licence offered by the Implementer (AIF-LIC-V3.0): Grant, Term, Updates, Payment, TermsURI - or omit it if the AIM needs no AIM Licence */",

  "AccessSources":   [{"Name": "tiq-vision", "Uri": "/* URI of the file */", "Sha256": "/* SHA-256 */", "Setting": "VisionModel", "AsFile": "blip_vision_model.onnx", "Description": "The vision model of the question-answering model on images (BLIP, in the form exported to ONNX)."},
                      {"Name": "tiq-vision-data", "Uri": "/* URI of the file */", "Sha256": "/* SHA-256 */", "Setting": "VisionModelData", "AsFile": "blip_vision_model.onnx.data", "Description": "The weights of the vision model, which the model refers to by this file name."},
                      {"Name": "tiq-encoder", "Uri": "/* URI of the file */", "Sha256": "/* SHA-256 */", "Setting": "EncoderModel", "AsFile": "blip_text_encoder_wrapper.onnx", "Description": "The text encoder of the model."},
                      {"Name": "tiq-decoder", "Uri": "/* URI of the file */", "Sha256": "/* SHA-256 */", "Setting": "DecoderModel", "AsFile": "blip_decoder_context_dynamic.onnx", "Description": "The text decoder of the model."},
                      {"Name": "tiq-vocab", "Uri": "/* URI of the file */", "Sha256": "/* SHA-256 */", "Setting": "VocabFile", "AsFile": "vocab.txt", "Description": "The vocabulary of the model."}],

  "Implementations":      [{"ImplementationURI": "/* URI storing Implementation */",
                            "BinaryName":       "/* BinaryName */",
                            "Architecture":     "/* x86 | x86-64 | ARM | ARM64 | MIPS | RISC-V */",
                            "OperatingSystem":  "/* Windows | Linux | MacOS | Debian | Ubuntu | RedHat | Android | Zephyr | RTOS | Oniro | iOS */",
                            "Version":          "/* Version */",
                            "Source":           "/* AIMStorage | MPAIStore | AIMURL */",
                            "Destination":      "/* Destination URI */"}],

  "ResourcePolicies":     [{"Name": "Memory",               "Minimum": "/* GB */",                                                                                                                 "Maximum": "/* GB */",                                                                                                                 "Request": "/* GB */"},
                           {"Name": "CPU:Number",           "Minimum": "/* integer, 0=all */",                                                                                                     "Maximum": "/* integer, 0=all */",                                                                                                     "Request": "/* integer, 0=all */"},
                           {"Name": "CPU:Class",            "Minimum": "/* Low | Medium | High */",                                                                                                "Maximum": "/* Low | Medium | High */",                                                                                                "Request": "/* Low | Medium | High */"},
                           {"Name": "GPU:Number",           "Minimum": "/* integer, 0=all */",                                                                                                     "Maximum": "/* integer, 0=all */",                                                                                                     "Request": "/* integer, 0=all */"},
                           {"Name": "GPU:CUDA:Class",       "Minimum": "/* SM10|SM11|SM12|SM13|SM20|SM21|SM30|SM32|SM35|SM37|SM50|SM52|SM53|SM60|SM61|SM62|SM70|SM72|SM75|SM80|SM86|SM87|SM90 */", "Maximum": "/* SM10|SM11|SM12|SM13|SM20|SM21|SM30|SM32|SM35|SM37|SM50|SM52|SM53|SM60|SM61|SM62|SM70|SM72|SM75|SM80|SM86|SM87|SM90 */", "Request": "/* SM10|SM11|SM12|SM13|SM20|SM21|SM30|SM32|SM35|SM37|SM50|SM52|SM53|SM60|SM61|SM62|SM70|SM72|SM75|SM80|SM86|SM87|SM90 */"},
                           {"Name": "GPU:CUDA:FrameBuffer", "Minimum": "/* float_GB_GDDR|GDDR2|GDDR3|GDDR4|GDDR5|GDDR5X|GDDR6|GDDR6X */",                                                          "Maximum": "/* float_GB_GDDR|GDDR2|GDDR3|GDDR4|GDDR5|GDDR5X|GDDR6|GDDR6X */",                                                          "Request": "/* float_GB_GDDR|GDDR2|GDDR3|GDDR4|GDDR5|GDDR5X|GDDR6|GDDR6X */"},
                           {"Name": "GPU:CUDA:MemorySpeed", "Minimum": "/* float_GHz */",                                                                                                          "Maximum": "/* float_GHz */",                                                                                                          "Request": "/* float_GHz */"}],

  "DataXMData":           { },

  "Documentation":        [{ "Type": "Tutorial", "URI": "https://mpai.community/standards/mpai-mmc/v2-5/" }] }
