{"id":37070865,"url":"https://github.com/oncodash/ontoweaver","last_synced_at":"2026-01-14T08:16:40.801Z","repository":{"id":221740916,"uuid":"755094509","full_name":"oncodash/ontoweaver","owner":"oncodash","description":"Easy integration of heterogeneous iterable data within Semantic Knowledge Graphs databases.","archived":false,"fork":false,"pushed_at":"2026-01-06T14:29:37.000Z","size":1847,"stargazers_count":15,"open_issues_count":6,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-08T08:07:35.138Z","etag":null,"topics":["biocypher","csv","graph-database","knowledge-graph","ontologies","pandas-dataframe","python","semantic-knowledge-graphs","skg","tables","yaml"],"latest_commit_sha":null,"homepage":"https://ontoweaver.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oncodash.png","metadata":{"files":{"readme":"README.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-09T12:41:53.000Z","updated_at":"2026-01-06T14:29:40.000Z","dependencies_parsed_at":"2026-01-02T19:00:52.914Z","dependency_job_id":null,"html_url":"https://github.com/oncodash/ontoweaver","commit_stats":{"total_commits":138,"total_committers":5,"mean_commits":27.6,"dds":0.4565217391304348,"last_synced_commit":"794775f26e7010ef823c0179249775185379b476"},"previous_names":["jdreo/ontoweaver"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/oncodash/ontoweaver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oncodash%2Fontoweaver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oncodash%2Fontoweaver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oncodash%2Fontoweaver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oncodash%2Fontoweaver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oncodash","download_url":"https://codeload.github.com/oncodash/ontoweaver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oncodash%2Fontoweaver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28413748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T05:26:33.345Z","status":"ssl_error","status_checked_at":"2026-01-14T05:21:57.251Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["biocypher","csv","graph-database","knowledge-graph","ontologies","pandas-dataframe","python","semantic-knowledge-graphs","skg","tables","yaml"],"created_at":"2026-01-14T08:16:40.145Z","updated_at":"2026-01-14T08:16:40.793Z","avatar_url":"https://github.com/oncodash.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OntoWeaver\n\nOntoWeaver is a tool for transforming iterable data (like tables)\nin Semantic Knowledge Graphs (SKG) databases.\n\nOntoWeaver allows writing a simple declarative mapping to express how columns from\na table should be converted as typed nodes, edges or properties in an SKG.\n\n![Diagram showing that OntoWeaver needs ontologies, tabular data and graph schema to produce a Semantic Knowledge Graph.](https://raw.githubusercontent.com/oncodash/ontoweaver/refs/heads/main/docs/OntoWeaver__simple-summary.svg)\n\n\nSKG databases allows for an easy integration of very heterogeneous data, and\nOntoWeaver brings a reproducible approach to building them.\n\nWith OntoWeaver, you can very easily implement a script that will allow you\nto automatically reconfigure a new SKG from the input data, each time you need it.\n\nOntoWeaver has been tested on large scale biomedical use cases\n(think: millions of nodes), and we can guarantee that it is simple to operate\nby anyone having a basic knowledge of programming.\n\n\n## Basics\n\n### Mapping data\n\nOntoWeaver provides a simple layer of abstraction on top of [BioCypher](https://biocypher.org),\nwhich remains responsible for doing the ontology alignment,\nsupporting several graph database backends,\nand allowing reproducible \u0026 configurable builds.\n\nWith a pure Biocypher approach, you would have to write a whole adapter by hand,\nwith OntoWeaver, you just have to express a mapping in YAML, looking like:\n```yaml\nrow: # The meaning of an entry in the input table.\n   map:\n      column: \u003ccolumn name in your CSV\u003e\n      to_subject: \u003contology node type to use for representing a row\u003e\n\ntransformers: # How to map cells to nodes and edges.\n    - map: # Map a column to a node.\n        column: \u003ccolumn name\u003e\n        to_object: \u003contology node type to use for representing a column\u003e\n        via_relation: \u003cedge type for linking subject and object nodes\u003e\n    - map: # Map a column to a property.\n        column: \u003canother name\u003e\n        to_property: \u003cproperty name\u003e\n        for_object: \u003ctype holding the property\u003e\n\nmetadata: # Optional properties added to every node and edge.\n    - source: \"My OntoWeaver adapter\"\n    - version: \"v1.2.3\"\n```\n\nOntoWeaver can read anything that [Pandas](https://pandas.pydata.org/) can load,\nwhich means a lot of tabular formats. It can also parse graphs from OWL files.\n\n\n### Usage\n\nTo configure your SKG, you need input data, a mapping (see above), but also\na BioCyhper configuration: a [schema.yaml](https://biocypher.org/BioCypher/learn/tutorials/tutorial001_basics/#schema-configuration) and a [ibiocypher_config.yaml](https://biocypher.org/BioCypher/reference/biocypher-config/).\n\nIn most cases, you will just need to call the `ontoweave` command to build-up\nthe SKG you prepared:\n\n```sh\nontoweave my_data.csv:my_mapping.yaml --import-script-run\n```\n\nIf you're using OntoWeaver from its Git repository, you will have to indicate\nthe path to the command:\n\n```sh\n./bin/ontoweave data_A.csv:map_A.yaml data_B.tsv:map_B.yaml\n```\n\nThe `ontoweave` command is very configurable, see `ontoweave --help` for more\ndetails.\n\nDetailed documentation with tutorials and a more detailed installation guide is available\n[on the OntoWeaver website](https://ontoweaver.readthedocs.io/en/latest/).\n\n\n### Installation\n\nThe project is written in Python and is tested with the\n[UV](https://docs.astral.sh/uv/) environment manager.\nYou can install the necessary dependencies in a virtual environment like this:\n\n```\ngit clone https://github.com/oncodash/ontoweaver.git\ncd ontoweaver\nuv venv\nuv pip install .\n```\n\nUV will create a virtual environment according to your configuration (either\ncentrally or in the project folder).\n\nYou can then run any script by calling it directly (.e.g. `uv run ontoweave`),\nand it should just work. If you want to call scripts from anywhere in your\nsystem, you will have to add the `…/ontoweaver/src/ontoweaver` directory to your PATH:\n\n```sh\n# Put this in your ~/.bashrc or ~/.zshrc\nexport PATH=\"$PATH:$HOME/\u003cyour path\u003e/ontoweaver/src/ontoweaver/\n```\n\nThe package can also be used in a [Poetry](https://python-poetry.org/) environment. Just run:\n\n```poetry install\n```\n\nPoetry will create a virtual environment according to your configuration, and you can call the CLI with:\n\n```poetry run ontoweave\n```\n\nTheoretically, OntoWeaver can export a knowledge graph in any of the formats\nsupported by BioCypher (Neo4j, ArangoDB, CSV, RDF, PostgreSQL, SQLite, NetworkX, …\nsee [BioCypher's documentation](https://biocypher.org/output/index.html)).\n\n\n## Development\n\n### Tests\n\nTests are located in the `tests/` subdirectory and may be a good starting point\nto see OntoWeaver in practice. You may start with `tests/test_simplest.py` which\nshows the simplest example of mapping tabular data through BioCypher.\n\nTo run tests, use `pytest`:\n```\nuv run pytest\n```\n\n\n### Contributing\n\nIn case of any questions or improvements feel free to open an issue or a pull request!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foncodash%2Fontoweaver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foncodash%2Fontoweaver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foncodash%2Fontoweaver/lists"}