https://github.com/sciknoworg/OntoLearner
OntoLearner: A Modular Python Library for Ontology Learning with LLMs https://pypi.org/project/OntoLearner/
https://github.com/sciknoworg/OntoLearner
benchmarking ontologies ontology-engineering ontology-learning python-library text2onto
Last synced: about 1 month ago
JSON representation
OntoLearner: A Modular Python Library for Ontology Learning with LLMs https://pypi.org/project/OntoLearner/
- Host: GitHub
- URL: https://github.com/sciknoworg/OntoLearner
- Owner: sciknoworg
- License: mit
- Created: 2025-01-08T14:04:31.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-05-04T17:34:49.000Z (3 months ago)
- Last Synced: 2026-05-04T18:36:21.962Z (3 months ago)
- Topics: benchmarking, ontologies, ontology-engineering, ontology-learning, python-library, text2onto
- Language: Python
- Homepage: https://ontolearner.readthedocs.io
- Size: 9.47 MB
- Stars: 36
- Watchers: 3
- Forks: 5
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Citation: CITATION.cff
Awesome Lists containing this project
- awesome - sciknoworg/OntoLearner - OntoLearner: A Modular Python Library for Ontology Learning with LLMs https://pypi.org/project/OntoLearner/ (Python)
- awesome-ontology - OntoLearner - A Python library for learning ontologies from data using large language models (LLMs). (Machine Learning)
README
OntoLearner: A Modular Python Library for Ontology Learning with LLMs
[](https://badge.fury.io/py/OntoLearner)
[](https://pepy.tech/projects/ontolearner)
[](https://opensource.org/licenses/MIT)
[](https://huggingface.co/collections/SciKnowOrg/)
[](https://github.com/pre-commit/pre-commit)
[](https://ontolearner.readthedocs.io/)
[](MAINTENANCE.md)
[](https://doi.org/10.5281/zenodo.15399773)
---
**OntoLearner** is a modular and extensible Python library for **ontology learning** powered by Large Language Models (LLMs). It provides a unified framework covering the full workflow β from loading and modularizing ontologies to training, predicting, and evaluating learner models across multiple ontology learning tasks.
The framework is built around three core components:
- π§© **Ontologizers** β load, parse, and modularize ontologies from 150+ ready-to-use sources across 20+ domains.
- π **Learning Tasks** β support for Term Typing, Taxonomy Discovery, Non-Taxonomic Relation Extraction, and Text2Onto.
- π€ **Learner Models** β plug-and-play LLM, Retriever, and RAG-based learners with a consistent `fit β predict β evaluate` interface.
---
## π§ͺ Installation
OntoLearner is available on [PyPI](https://pypi.org/project/OntoLearner/) and can be installed with `pip`:
```bash
pip install ontolearner
```
Verify the installation:
```python
import ontolearner
print(ontolearner.__version__)
```
> For additional installation options (e.g., from source, with optional dependencies), see the [Installation Guide](https://ontolearner.readthedocs.io/installation.html).
---
## π Essential Resources
| Resource | Description |
|:---------|:------------|
| **[π Documentation](https://ontolearner.readthedocs.io/)** | Full documentation website. |
| **[π€ Datasets on Hugging Face](https://huggingface.co/collections/SciKnowOrg/ontolearner-benchmarking-6823bcd051300c210b7ef68a)** | Curated, machine-readable ontology datasets. |
| **[π Quickstart](https://ontolearner.readthedocs.io/quickstart.html)** | Get started in minutes. |
| **[πΈοΈ Learning Tasks](https://ontolearner.readthedocs.io/learning_tasks/learning_tasks.html)** | Term Typing, Taxonomy Discovery, Relation Extraction, and Text2Onto. |
| **[π§ Learner Models](https://ontolearner.readthedocs.io/learners/llm.html)** | LLM, Retriever, and RAG-based learner models. |
| **[π Ontologies Documentation](https://ontolearner.readthedocs.io/benchmarking/benchmark.html)** | Browse 150+ benchmark ontologies across 20+ domains. |
| **[π§© Ontologizer Guide](https://ontolearner.readthedocs.io/ontologizer/ontology_modularization.html)** | How to modularize and preprocess ontologies. |
| **[π Metrics Dashboard](https://huggingface.co/spaces/SciKnowOrg/OntoLearner-Benchmark-Metrics)** | Explore benchmark ontology metrics and complexity scores. |
---
## β¨ Key Features
- **150+ Ontologizers** across 20+ domains (biology, medicine, agriculture, chemistry, law, finance, and more).
- **Multiple learning tasks**: Term Typing, Taxonomy Discovery, Non-Taxonomic Relation Extraction, and Text2Onto.
- **Three learner paradigms**: LLM-based, Retriever-based, and Retrieval-Augmented Generation (RAG).
- **Hugging Face integration**: auto-download ontologies and models directly from the Hub.
- **Unified API**: consistent `fit β predict β evaluate` interface across all learners.
- **LearnerPipeline**: end-to-end pipeline in a single call.
- **Extensible**: easily plug in custom ontologies, learners, or retrievers.
- **Text2Onto generation**: synthetic document generation now uses a direct `transformers` backend with ontology-aware context enrichment.
---
## π Quick Tour
### Loading an Ontology
Load any of the 150+ built-in ontologies and extract task datasets in just a few lines:
```python
from ontolearner import Wine
# Initialize an ontologizer
ontology = Wine()
# Auto-download from Hugging Face and load
ontology.load()
# Extract learning task datasets
data = ontology.extract()
# Inspect ontology metadata
print(ontology)
```
> Explore [150+ ready-to-use ontologies](https://ontolearner.readthedocs.io/benchmarking/benchmark.html) or learn [how to work with ontologizers](https://ontolearner.readthedocs.io/ontologizer/ontology_modularization.html).
---
### Retriever-Based Learner
Use a dense retriever model to perform non-taxonomic relation extraction:
```python
from ontolearner import AutoRetrieverLearner, AgrO, train_test_split, evaluation_report
# Load and extract ontology data
ontology = AgrO()
ontology.load()
ontological_data = ontology.extract()
# Split into train and test sets
train_data, test_data = train_test_split(ontological_data, test_size=0.2, random_state=42)
# Initialize and load a retriever-based learner
task = 'non-taxonomic-re'
ret_learner = AutoRetrieverLearner(top_k=5)
ret_learner.load(model_id='sentence-transformers/all-MiniLM-L6-v2')
# Fit on training data and predict on test data
ret_learner.fit(train_data, task=task)
predicts = ret_learner.predict(test_data, task=task)
# Evaluate predictions
truth = ret_learner.tasks_ground_truth_former(data=test_data, task=task)
metrics = evaluation_report(y_true=truth, y_pred=predicts, task=task)
print(metrics)
```
Other available learners:
- [LLM-Based Learner](https://ontolearner.readthedocs.io/learners/llm.html)
- [Retriever-Based Learner](https://ontolearner.readthedocs.io/learners/retrieval.html)
- [RAG-Based Learner](https://ontolearner.readthedocs.io/learners/rag.html)
- [LLMs4OL Challenge Learners](https://ontolearner.readthedocs.io/learners/llms4ol.html)
---
### LearnerPipeline
`LearnerPipeline` consolidates the entire workflow β initialization, training, prediction, and evaluation β into a single call:
```python
from ontolearner import LearnerPipeline, AgrO, train_test_split
# Load ontology and extract data
ontology = AgrO()
ontology.load()
train_data, test_data = train_test_split(
ontology.extract(),
test_size=0.2,
random_state=42
)
# Initialize the pipeline with a dense retriever
pipeline = LearnerPipeline(
retriever_id='sentence-transformers/all-MiniLM-L6-v2',
batch_size=10,
top_k=5
)
# Run: fit β predict β evaluate
outputs = pipeline(
train_data=train_data,
test_data=test_data,
evaluate=True,
task='non-taxonomic-re'
)
print("Metrics:", outputs['metrics'])
print("Elapsed time:", outputs['elapsed_time'])
```
---
## β Contribution
We welcome contributions of all kinds β bug reports, new features, documentation improvements, or new ontologies!
Please review our guidelines before getting started:
- [CONTRIBUTING.md](CONTRIBUTING.md) β contribution guidelines
- [MAINTENANCE.md](MAINTENANCE.md) β ongoing maintenance notes
For bugs or questions, please open an issue in the [GitHub Issue Tracker](https://github.com/sciknoworg/OntoLearner/issues).
---
## π‘ Acknowledgements
If OntoLearner is useful in your research or work, please consider citing one of our publications:
```bibtex
@inproceedings{babaei2023llms4ol,
title = {LLMs4OL: Large Language Models for Ontology Learning},
author = {Babaei Giglou, Hamed and D'Souza, Jennifer and Auer, S{\"o}ren},
booktitle = {International Semantic Web Conference},
pages = {408--427},
year = {2023},
organization = {Springer}
}
```
```bibtex
@software{babaei_giglou_2025_15399783,
author = {Babaei Giglou, Hamed and D'Souza, Jennifer and Aioanei, Andrei
and Mihindukulasooriya, Nandana and Auer, SΓΆren},
title = {OntoLearner: A Modular Python Library for Ontology Learning with LLMs},
month = may,
year = 2025,
publisher = {Zenodo},
version = {v1.3.0},
doi = {10.5281/zenodo.15399783},
url = {https://doi.org/10.5281/zenodo.15399783}
}
```
---
This software is archived on Zenodo under [](https://doi.org/10.5281/zenodo.15399773) and is licensed under [](https://opensource.org/licenses/MIT).