# Ontology Quickstart
> Step-by-step guide to using OWL ontologies to ground Cognee knowledge graphs
A minimal guide to using OWL ontologies to ground Cognee's knowledge graphs. You'll point Cognee at an ontology file during cognify and then ask ontology-aware questions.
**Before you start:**
* Complete [Quickstart](getting-started/quickstart) to understand basic operations
* Read [Ontologies](../core-concepts/further-concepts/ontologies) to understand the concepts
* Ensure you have [LLM Providers](setup-configuration/llm-providers) configured
* Have an OWL ontology file (`.owl`) in RDF/XML format
* Have some text or files relevant to the ontology's domain
## What Ontology Support Does
* Grounds entities and relations to your OWL ontology (classes, individuals, properties)
* Validates types via ontology domains/ranges and class hierarchy
* Improves graph completion answers for domain-specific queries
## Step 1: Prepare an Ontology File
Start from a simple OWL file. Minimal ingredients:
* Classes (e.g., `TechnologyCompany`, `Car`)
* Individuals (e.g., `Apple`, `Audi`)
* Object properties with domain/range (e.g., `produces` with `domain=CarManufacturer`, `range=Car`)
Example ontology files:
* `examples/python/ontology_input_example/basic_ontology.owl`
* `examples/python/ontology_input_example/enriched_medical_ontology_with_classes.owl`
Use any RDF/OWL editor (Protégé) to edit .owl files.
This example uses a simple ontology for demonstration. In practice, you can work with larger, more complex ontologies - the same approach works regardless of ontology size or complexity.
## Step 2: Add Your Data
Add either raw text or a directory. Keep it relevant to your ontology.
```python theme={null}
import cognee
texts = [
"Audi produces the R8 and e-tron.",
"Apple develops iPhone and MacBook."
]
await cognee.add(texts)
# or: await cognee.add("/path/to/folder/of/files")
```
This simple example uses a list of strings for demonstration. In practice, you can add multiple documents, files, or entire datasets - the ontology processing works the same way across all your data.
## Step 3: Cognify Your Data + Ontologies
Create the `config` which contains the information about the ontology,
to ground extracted entities/relations to the ontology.
Then, simply pass the `config` to the `cognify` operation.
```python theme={null}
import os
from cognee.modules.ontology.ontology_config import Config
from cognee.modules.ontology.rdf_xml.RDFLibOntologyResolver import RDFLibOntologyResolver
ontology_path = os.path.join(
os.path.dirname(os.path.abspath(__file__)), "ontology_input_example/basic_ontology.owl"
)
# Create full config structure manually
config: Config = {
"ontology_config": {
"ontology_resolver": RDFLibOntologyResolver(ontology_file=ontology_path)
}
}
await cognee.cognify(config=config)
```
If omitted, Cognee builds a graph without ontology grounding. With an ontology, Cognee aligns nodes to classes/individuals and enforces property domain/range.
## Step 4: Ask Ontology-aware Questions
Use `SearchType.GRAPH_COMPLETION` to get answers that leverage ontology structure.
```python theme={null}
from cognee.api.v1.search import SearchType
result = await cognee.search(
query_type=SearchType.GRAPH_COMPLETION,
query_text="What cars and their types are produced by Audi?",
)
print(result)
```
Phrase questions using ontology terms (class names, individual names, property language like "produces", "develops"). If results feel generic, check that the ontology contains the expected classes/individuals and that your data mentions them.
## Code in Action
* Small cars/tech demo: `examples/python/ontology_demo_example.py`
* Medical comparison demo: `examples/python/ontology_demo_example_2.py`
Understand ontology fundamentals
Explore ontology API endpoints
---
> To find navigation and other pages in this documentation, fetch the llms.txt file at: https://docs.cognee.ai/llms.txt