{"id":48926380,"url":"https://github.com/ihtsdo/snomed-owl-toolkit","last_synced_at":"2026-04-17T07:02:51.254Z","repository":{"id":29200652,"uuid":"120470194","full_name":"IHTSDO/snomed-owl-toolkit","owner":"IHTSDO","description":"The official SNOMED CT OWL Toolkit. OWL conversion, classification and authoring support.","archived":false,"fork":false,"pushed_at":"2025-07-28T15:51:04.000Z","size":654,"stargazers_count":103,"open_issues_count":6,"forks_count":20,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-07-28T17:41:17.147Z","etag":null,"topics":["classification","java","owl-ontology","snomed-ct"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IHTSDO.png","metadata":{"files":{"readme":"readme.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-02-06T14:30:22.000Z","updated_at":"2025-07-28T15:50:01.000Z","dependencies_parsed_at":"2023-09-29T10:32:42.570Z","dependency_job_id":"b8f7ad8c-c886-407d-a53c-7d2d0927f42e","html_url":"https://github.com/IHTSDO/snomed-owl-toolkit","commit_stats":{"total_commits":327,"total_committers":12,"mean_commits":27.25,"dds":0.2018348623853211,"last_synced_commit":"9cfa11bde5abed254223d6114610b21d2f2168eb"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/IHTSDO/snomed-owl-toolkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IHTSDO%2Fsnomed-owl-toolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IHTSDO%2Fsnomed-owl-toolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IHTSDO%2Fsnomed-owl-toolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IHTSDO%2Fsnomed-owl-toolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IHTSDO","download_url":"https://codeload.github.com/IHTSDO/snomed-owl-toolkit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IHTSDO%2Fsnomed-owl-toolkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31918838,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["classification","java","owl-ontology","snomed-ct"],"created_at":"2026-04-17T07:02:50.849Z","updated_at":"2026-04-17T07:02:51.244Z","avatar_url":"https://github.com/IHTSDO.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Snomed OWL Toolkit [![codecov](https://codecov.io/gh/IHTSDO/snomed-owl-toolkit/branch/master/graph/badge.svg)](https://codecov.io/gh/IHTSDO/snomed-owl-toolkit)\n\nAn Open Source Toolkit to make SNOMED CT to OWL conversion and classification simple.\n\nThis toolkit is used within the SNOMED International Authoring Environment. It is backward compatible with all past RF2 releases and will be forward compatible with all future releases. New versions of this tool will be produced as new description logic features are added to SNOMED CT.\n\nA classification REST API using this toolkit is available, see the [Classification Service](https://github.com/IHTSDO/classification-service).\n\n## Java Library Capabilities\n- Convert Snomed RF2 to an OWL Ontology\n  - Works on the command line\n  - Uses MRCM Attribute Domain Reference Set for grouping information\n  - Uses OWL Axiom Reference Set\n  - Includes all descriptions:\n    - Fully Specified Names as rdfs:label\n    - Preferred Synonyms as skos:prefLabel\n    - Other Synonyms as skos:altLabel\n    - Text Definitions as skos:definition\n    - Language and dialect markup\n  - Support for Snomed Editions and Extensions\n  - *For Java integration see RF2ToOWLService.java*\n- Classify Snomed\n  - Uses RF2 to OWL conversion\n    - Optionally load an RF2 Delta archive on top of the Snapshot\n  - RF2 delta output of relationship changes (no identifier generation)\n  - Any OWL API Reasoner supported (default is ELK)\n  - *See SnomedReasonerService.java*\n- Authoring Environment UI Support\n  - Convert relationships to axioms\n  - Convert axioms to relationships\n  - Support for General Concept Axioms\n  - *See AxiomRelationshipConversionService.java*\n\n### Stated Relationships and Axioms\nThe toolkit is capable of working with stated relationships and/or axioms from the OWL Axiom reference set.\n\n_These should only be used when modelling concepts.\nThe inferred relationships should nearly always be used in SNOMED CT implementations. The inferred relationships contain the attributes of any stated relationships or axioms present._\n\nConcept model information will be loaded from all active relationships and all active axioms. Either format can be used or both in combination.\nAll the stated relationships of a single concept will form a single new axiom. If there are any axioms in the reference set for the same concept these will be treated as additional axioms.\nStated relationships are never merged into an axiom from the reference set.\n\nIf there are only axioms in the International Edition and only stated relationships in an extension then classification or conversion to the OWL file will still work.\nThe extension can add modelling for its own concepts using stated relationships or axioms. If the extension wants to override the modelling of an International Axiom then a new\nstate of that entire axiom must be in the extension using the same OWL Axiom reference set member id.\n\n## Documentation\n* [Calculating the Necessary Normal Form](documentation/calculating-necessary-normal-form.md)\n\n## Command Line Use\n\nThis toolkit has been developed for use in other Java applications as a library but some functionality\ncan be used via the command line.\n\nThe 'executable' jar file is available on the [latest release](https://github.com/IHTSDO/snomed-owl-toolkit/releases) page for use on the command line.\n\nThis library is tested against Java 11. It will work with Java 17 and later versions but the following arguments must be added directly after the `java` command: `--add-opens java.base/java.lang=ALL-UNNAMED`. This permits a feature that is required by the OWL reasoner, otherwise there will be an `InvocationTargetException`.\n\nCommand line options:\n```\nUsage:\n -help                                  Print this help message.\n\n -classify                              Run classification process.\n                                        Results are written to an RF2 delta archive.\n\n -rf2-to-owl                            (Default mode) Convert RF2 to OWL Functional Syntax.\n                                        Results are written to an .owl file.\n\n -rf2-stated-to-complete-owl            Convert RF2 snapshot stated relationships to complete OWL Axiom reference set preview.\n                                        Stated relationships are converted to OWL Axiom reference set entries.\n                                        Existing stated relationships are marked as inactive.\n                                        Results are written to a zip file containing:\n                                         - OWL Axiom reference set delta of all axioms which were previously stated relationships\n                                         - Stated relationship delta with all relationships which were previously active marked as inactive.\n\n -rf2-snapshot-archives \u003cpath\u003e          Comma separated paths of zip files containing RF2 Snapshot files to be loaded.\n                                        At least one Snapshot archive is required.\n\n -rf2-authoring-delta-archive \u003cpath\u003e    (Optional) Path to a zip file containing RF2 Delta files to be applied on top\n                                        of the Snapshots. This is helpful during an authoring cycle.\n\n -debug                                 Additional output for debugging.\n\n\nOptional parameters for OWL conversion:\n -uri \u003curi\u003e                             (Optional) URI for the ontology identifier.\n                                        Defaults to the id within the header entry of the OWL Ontology reference set.\n                                        If no entry found defaults to http://snomed.info/sct/900000000000207008.\n\n -version \u003cversion\u003e                     (Optional) Date for the ontology version e.g. 20180731.\n                                        Defaults to today's date.\n\n -without-annotations                   (Optional) Flag to omit description annotations from the ontology\n                                        resulting in a smaller file size.\n```\n\n### Snomed RF2 to OWL File Conversion\nConvert Snomed RF2 files to an OWL ontology file with functional syntax.\n\nUsing the executable jar supply a zip file which contains RF2 snapshot files as an argument.\n```bash\njava -Xms4g -jar snomed-owl-toolkit*executable.jar -rf2-to-owl -rf2-snapshot-archives SnomedCT_InternationalRF2.zip\n```\nAfter about a minute the OWL ontology file will be written to `ontology-xxxx.owl` including a timestamp in the name.\n\nDescription dialects will be set for language reference sets included in the [language-refset-dialect-map.properties](src/main/resources/language-refset-dialect-map.properties) file. \nThe jar file will need rebuilding in order for changes to that file to be included. Feel free to raise a pull request to add your language reference sets to this project.\n\n### Snomed RF2 Classification\nRun the classification process.\n\nUsing the executable jar supply a zip file which contains RF2 snapshot files as an argument.\n```bash\njava -Xms4g -jar snomed-owl-toolkit*executable.jar -classify -rf2-snapshot-archives SnomedCT_InternationalRF2.zip\n```\nAfter about one and a half minutes an RF2 delta archive will be written to `classification-results-xxxx.zip` including a timestamp in the name.\n\nThis archive contains a relationship file with active rows for new inferences and inactive rows for redundant relationships.\n\nThe archive also has a reference set containing any sets of concepts which the reasoner found to be logically equivalent. This refset should be empty.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fihtsdo%2Fsnomed-owl-toolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fihtsdo%2Fsnomed-owl-toolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fihtsdo%2Fsnomed-owl-toolkit/lists"}