Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Public editor: https://aurint.ca/ari-editor/
This repository contains the curated autoimmune disease data, ontology artifacts, and generated reports that support the ARI Disease Metadata Manager v2 shown on the public site.
The editor is the main interface for reviewing and maintaining autoimmune disease metadata. It presents the curated registry as a searchable, editable catalog with disease detail panels and source-linked outputs.
This repository supports the curated disease model behind the editor:
| Path | Purpose | In git? |
|---|---|---|
data/0-archive/ | Superseded working material | no |
data/1-master/ | The curated master list, and a snapshot of the registry site's symptom lists | yes |
data/2-databases/ | Large raw ontology release dumps — local scratch, re-downloadable | no |
data/3-meta-database-sources/ | Supporting source tables | yes |
data/4-reports/ | Generated report outputs | yes |
data_model/ | Reference spreadsheets and model snapshots | yes |
mappings/ | Every curated cross-reference judgment | yes |
notebook/ | Notebook-driven data preparation and grounding scripts | yes |
ontologies/ | The ARI ontology — the sole authority — as modules (see Ontology modules) | yes |
sparql/ | SPARQL queries and generated term sets | yes |
data/ mixes both kinds, which is worth knowing before going looking for
something: 2-databases/ holds roughly 11 GB of downloaded release dumps and is
git-ignored in full, while its siblings are curated and tracked. See
data/2-databases/README.md.
data/4-reports/1_Core_ARI_Diseases.xlsxdata/4-reports/2_Proposed_Diseases.xlsxdata/4-reports/3_Proposed_Changes.xlsxdata/4-reports/4_Additional_Info_Index.xlsxdata/4-reports/5_DOID_Mapping.xlsxdata/4-reports/6_DOID_Matches_All.xlsxdata/4-reports/7_SNOMED_Matches_All.xlsxdata/4-reports/10_Master_List_Comparison.xlsxdata/4-reports/12_Research_Gaps.xlsx — what each disease still needs, field by field against the data modeldata/4-reports/13_Non_Symptom_Review.tsv — every entry judged not a symptom, for a curator to decide what becomes of itThe grounding pipeline in notebook/ari-grounding/ builds local DOID and SNOMED matches
from repository data only.
Scripts run in this order:
parse_doid_local.pyground_doid.pyground_snomed.pymake_match_reports.pyPrimary inputs are the master list in data/1-master/ and the supporting files in
data/3-meta-database-sources/, ontologies/, mappings/, and sparql/results/.
.github/scripts/validate_mappings.py checks the two mapping exports against each other
and against the ontology. It needs only the standard library:
python .github/scripts/validate_mappings.py
Add --since main to report only the rows a branch changed. Two workflows run it:
| Workflow | Trigger | Scope |
|---|---|---|
Validate mappings | pull requests touching mappings/ or ontologies/ | rows the branch added or rewrote — fails the check |
Audit mappings | Mondays 07:00 UTC, or on demand | every row, so the standing backlog stays visible |
OWL format | pull requests touching ontologies/ or tools/ | every ontologies/*.owl is in the canonical layout (see below) |
What it catches:
curie_map.mesh:null and other placeholders, doubled
prefixes such as MONDO:MONDO:0014523, ids that do not fit their vocabulary's shape,
and ICD-9 codes filed under the icd10cm prefix.ari.sssom.tsv and ari.equivalencies.tsv, which is how spreadsheet
round-trips show up: 362.50 losing its trailing zero, 0111157 losing its leading
ones.ARI_SynonymWithdrawn marker on the same disease, shaped
<synonym> | <reason> | <note> where <reason> is subtype, broader, distinct or
non-disease; the marker is itself append-only, so the review stays on record.ARI_ID has seven digits (ARI:0001234).
A disease is renumbered by changing its ARI_ID and adding an ARI_FormerID holding the
old one, so the deletion check follows the record to its new id. ARI_FormerID is
append-only, and a former id may not still be in use.The validator reads the ontology as XML, not line by line, so it works on any RDF/XML
layout. With --since, an ontology finding counts as new only when the statement on its
line (subject, property, value) is new, so re-laying-out the file reports nothing.
The ontology is a set of files in ontologies/, one per domain. Each opens on its own in Protégé
and loads in owlready2 with its imports. Open ari_disease.owl: it imports the rest.
| File | Holds | Edited by |
|---|---|---|
ari_core.owl | The key classes and every property declaration | curators (Protégé) |
ari_disease.owl | Diseases and their per-disease entries (symptoms, antibodies, antigens, biomarkers, tissues) | the editor app, curators |
ari_symptoms.owl | One ARIS_… class per symptom, linked to SYMP and HPO | curators (Protégé) |
ari_anatomy.owl | Tissue and system classes, linked to UBERON | curators (Protégé) |
ari_biomarkers.owl | Biomarker concepts (empty for now; see notebook/biomarker-concepts/) | curators (Protégé) |
ari_symp.owl, ari_uberon.owl | Slices of SYMP and UBERON, generated, never edited by hand | the builder scripts |
ari_pr.owl, ari_chebi.owl, ari_hgnc.owl, ari_loinc.owl | Slices of the Protein Ontology, ChEBI, HGNC and LOINC, generated, never edited by hand | build_biomarker_slices.py |
A per-disease entry points at its shared concept with sharedConcept. Every property is declared
once, in the core. notebook/ontology-modules/README.md
covers opening, loading and which tool writes which file; the design is in
docs/superpowers/specs/2026-10-18-ontology-modules-design.md.
The app (owlready2), Protégé and scripts each write RDF/XML in their own layout. So that
a diff only ever shows content, every ontologies/*.owl is kept in one layout: the one
ROBOT writes, at the version pinned in
tools/robot.version. Same content, same bytes, whichever tool
saved the file.
tools/format-owl.sh ontologies/ari_disease.owl # format in place
tools/format-owl.sh --check ontologies/*.owl # exit 1 if any would change
It needs Java 11 or newer on PATH (Protégé's bundled Java does not count), and it
downloads the pinned ROBOT jar into .cache/robot/ on first use. Imports resolve
through ontologies/catalog-v001.xml, which Protégé
also reads.
| Where | What runs |
|---|---|
| Your clone | The pre-commit hook formats any staged ontologies/*.owl. Install it once: git config core.hooksPath .githooks |
| The editor app | Formats the file before it pushes a curator's PR branch |
OWL format workflow | Pull requests touching ontologies/ or tools/ — fails if a file is not in the canonical layout |
If the check fails, run tools/format-owl.sh on the file it names and push again.
Scripts that change the ontology edit it as XML and leave the layout to the formatter.
Bumping tools/robot.version re-lays-out every file, so do it in its own PR with that
reformat commit, and bump the app's deploy/install-robot.sh to the same release.
.env files unless explicitly authorized.