{"id":26055920,"url":"https://github.com/ncar/aircraft_vardb","last_synced_at":"2026-04-18T22:05:07.876Z","repository":{"id":41443330,"uuid":"88211710","full_name":"NCAR/aircraft_vardb","owner":"NCAR","description":"EOL/RAF variable database library and utilities.","archived":false,"fork":false,"pushed_at":"2025-02-14T19:18:23.000Z","size":732,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-02-14T20:19:02.681Z","etag":null,"topics":["aircraft","metadata","raf"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NCAR.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-13T22:32:05.000Z","updated_at":"2025-02-14T19:18:27.000Z","dependencies_parsed_at":"2023-11-10T20:24:36.693Z","dependency_job_id":"8d555c3b-e7b5-4bab-aeb6-2332c62c8737","html_url":"https://github.com/NCAR/aircraft_vardb","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCAR%2Faircraft_vardb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCAR%2Faircraft_vardb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCAR%2Faircraft_vardb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCAR%2Faircraft_vardb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NCAR","download_url":"https://codeload.github.com/NCAR/aircraft_vardb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242534651,"owners_count":20145128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aircraft","metadata","raf"],"created_at":"2025-03-08T10:25:34.837Z","updated_at":"2026-04-18T22:05:07.820Z","avatar_url":"https://github.com/NCAR.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"/**\n\n@mainpage VarDB Library\n\n## Introduction ##\n\nVDBFile is the main class for accessing XML variable databases.  The other\nclasses are VDBVar and VDBDictionary.\n\nThe classes use the Xerces-C++ Document Object Model API to manipulate the\nXML database, but that model is hidden by VarDB API.\n\n## Building ##\n\nThe vardb library uses eol_scons as the build tool.\n\n@code\nscons              # Build default targets\nscons test         # Run tests\nscons pytests      # Build the python module and run the python tests\nscons apidocs      # Generate HTML documentation with doxygen\n@endcode\n\n## Recent Changes\n\nHere are changes to the VarDB library since adding the XML format for the\nvariable database:\n\n1. Resolve the XSD schema from memory so it does not need to be installed\n   next to the vardb.xml file.  Likewise, force the validating schema to be\n   fixed (rather than varying according to the elements in the dictionary),\n   and force that schema to be used regardless of any schema specified in\n   the XML file.\n\n2. Improve the error reporting on parser errors.\n\n3. Keep the use of xerces hidden from the vardb public API rather than\n   exposing it in the vardb.hh header.\n\n4. Add testing.  The tests source directory contains tests written using\n   the Google test framework.  The tests verify things like API behavior\n   and preservation of XML comments across edits.\n\n5. Clean up and simplify vdb2xml.  The converter now uses the VDBFile API\n   to create a variable database rather than printing XML syntax directly.\n   The API directly modifies the DOM in memory as the database is changed,\n   and then that DOM can be streamed to a file as XML.\n\n6. All of the python artifacts for generating XML have been removed, such\n   as schemaMaker.py, standardNameCorrection.py, appendInfo.py, and the\n   vdb2xml.sh script.\n\nOriginally the schema was generated according to the contents of the\nDictionary file, meaning elements had to exist in the Dictionary before\nthey could be validated in an XML database file.  However, that introduces\npractical problems as far as where the Dictionary should be located, and it\nmeans each XML database also has its own specific schema file to which it\nmust refer.  Instead, the schema is now fixed and compiled into the code.\nThe dictionary is the part of the schema, and it can describe the variable\nattributes in the schema as well as attributes not in the schema.  However,\nthere is currently no way to validate an XML file with variable attributes\nwhich are only in the dictionary and not in the schema.  If we end up\nwanting to use Xerces to validate against the dictionary, then it may be\npossible to load the XML first without validation, find the dictionary\nelement, generate a schema in memory, and finally supply the generated\nschema to load the XML a second time and validate it.\n\nThe use of 'any' in XML Schema may also provide a cool solution for this.\nAs new elements are added, they could be defined in their own schemas, and\na vdb xml file can extend the basic schema with those new schemas.  New\nelements still cannot be added arbitarily though (ie, at runtime).\n\nAnother option is to drop schema validation completely.  Instead, load the\nXML without validation (meaning it is well-formed), then explicitly check\nthat all the variable attribute elements exist in the dictionary.\n\nFor the moment, though, there is not enough of a need to extend the\nvariable attributes in the database to warrant more complicated validation.\n\n## To Do ##\n\n### Rewrite the Graphical Editor ###\n\nWrap the C++ VDBFile interface in a python module and re-write the\nPython-Qt editor to use that interface.  (Presumably that would be easier\nthan porting the binary editor to the new API and a newer GUI toolkit.)\n\nProbably there needs to be a standalone vardb editor first, to facilitate\nreplacing the binary vardb files with XML, until the variable metadata\nediting can be incorporated into the config editor.\n\n### Implement a Validation Layer in the Library ###\n\nStart including and migrating \"business and validation logic\" into the\nVDBFile library, eg, the standard_name attribute must be in the list of\nstandard_names, likewise for category, some attributes take specific forms\nlike voltage ranges, and some must be numeric.  Some of that validation\ncould be done by the schema.\n\n### Incorporate Other Config Files as Possible ###\n\nSomehow reconcile the rest of the files in Configuration/ and the\nproject directory associated with variable metadata and processing, eg,\ninclude _projdir_/Lags in vardb.xml.  From _defaultprojdir_ include\nSumVars, LowRateVars, Despike, and BcastVars, MetaDataTable.  These and the\nDerivedNames and other cross-project defaults should be in one variable\ndatabase XML file, and then project-specific settings can be overridden\n(where they are not already exclusive to one domain or the other) in the\nproject file.\n\n\n### Consolidate Variable Metadata from XML File and Real-time Database ###\n\nThe database variable_list table contains the currently active real-time\nvariables and some of their metadata, so in real-time it should serve as\nthe most consistent and accessible source for variables and metadata.\nNormally it will be consistent with what is in the nidas XML file and the\nXML variable database (VDBFile), but it does not contain all the metadata\nfrom those files.  For example, the variable_list table does not contain\nthe min/max limits from the XML file, and those are needed for tools like\nreal-time qc checks.  Therefore this class provides a consolidated view of\nthe real-time variable metadata by augmenting the database variable_list\nwith the metadata from the VDB XML file.  Eventually this consolidated view\nshould also include the nidas XML file.  Either all of the requisite\nmetadata can be put in the variable_list table where other applications can\nget it, or there should be an API in both C++ and Python which provides a\nsingle, consistent, consolidated view of variables and metadata.  The\nlatter would be better, since it might be made to work the same for both\nreal-time and post-processing and encapsulate the SQL access.\n\nMore elaborate solutions for consolidated access to variable metadata could\nuse a web application with a SOAP or REST interface.  A web app which\nencapsulates variable metadata can run on the plane and in EOL and provide\naccess methods (and perhaps even editing) for both software and users.\n\n **/\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fncar%2Faircraft_vardb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fncar%2Faircraft_vardb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fncar%2Faircraft_vardb/lists"}