5.3 KiB
Ontology
Automated ontology generation, validation, and management system.
🎯 Overview
-
:material-factory:{ .lg .middle } Automated Generation
6-stage pipeline to generate OWL ontologies from raw data
-
:material-sitemap:{ .lg .middle } Inference Engine
Infer classes, properties, and hierarchies from entity patterns
-
:material-check-decagram:{ .lg .middle } Validation
Symbolic reasoning (HermiT/Pellet) for consistency checking
-
:material-recycle:{ .lg .middle } Reuse Management
Import and align with standard ontologies (FOAF, Schema.org)
-
:material-chart-bar:{ .lg .middle } Evaluation
Assess ontology quality using coverage, completeness, and granularity metrics
-
:material-file-code:{ .lg .middle } OWL/RDF Export
Export to Turtle, RDF/XML, and JSON-LD formats
!!! tip "When to Use" - Schema Design: When defining the structure of your Knowledge Graph - Data Modeling: To formalize domain concepts and relationships - Interoperability: To ensure your data follows standard semantic web practices - Validation: To enforce constraints on your data
⚙️ Algorithms Used
6-Stage Generation Pipeline
- Semantic Network Parsing: Extract concepts and patterns from raw entity/relationship data.
- YAML-to-Definition: Transform patterns into intermediate class definitions.
- Definition-to-Types: Map definitions to OWL types (
owl:Class,owl:ObjectProperty). - Hierarchy Generation: Build taxonomy trees using transitive closure and cycle detection.
- TTL Generation: Serialize to Turtle format using
rdflib. - Symbolic Validation: Run reasoner to check for logical inconsistencies.
Inference Algorithms
- Class Inference: Clustering entities by type and attribute similarity.
- Property Inference: Determining domain/range based on connected entity types.
- Hierarchy Inference:
A is_a Bdetection based on subset relationships.
Validation
- Symbolic Reasoning: Uses HermiT or Pellet to check satisfiability.
- Constraint Checking: Validates cardinality, domain, and range constraints.
- Hallucination Detection: LLM-based verification of generated concepts.
Main Classes
OntologyGenerator
Main entry point for the generation pipeline.
Methods:
| Method | Description |
|---|---|
generate_ontology(data) |
Run full pipeline |
generate_from_schema(schema) |
Generate from explicit schema |
Example:
from semantica.ontology import OntologyGenerator
generator = OntologyGenerator(base_uri="http://example.org/onto/")
ontology = generator.generate_ontology({
"entities": entities,
"relationships": relationships
})
print(ontology.serialize(format="turtle"))
OntologyValidator
Validates ontology consistency.
Methods:
| Method | Description |
|---|---|
validate(ontology) |
Run symbolic reasoner |
check_constraints(ontology) |
Check structural rules |
OntologyEvaluator
Scores ontology quality.
Methods:
| Method | Description |
|---|---|
evaluate(ontology) |
Calculate all metrics |
check_competency(questions) |
Verify coverage |
ReuseManager
Manages external dependencies.
Methods:
| Method | Description |
|---|---|
import_ontology(uri) |
Load external ontology |
align_concepts(source, target) |
Map equivalent classes |
Convenience Functions
from semantica.ontology import generate_ontology, validate_ontology
# Quick generation
onto = generate_ontology(data, method="default")
# Quick validation
is_valid, report = validate_ontology(onto)
Configuration
Environment Variables
export ONTOLOGY_BASE_URI="http://my-org.com/ontology/"
export ONTOLOGY_REASONER="hermit"
export ONTOLOGY_STRICT_MODE=true
YAML Configuration
ontology:
base_uri: "http://example.org/"
generation:
min_class_size: 5
infer_hierarchy: true
validation:
reasoner: hermit
timeout: 60
Integration Examples
Schema-First Knowledge Graph
from semantica.ontology import OntologyGenerator
from semantica.kg import KnowledgeGraph
# 1. Generate Ontology from Sample Data
generator = OntologyGenerator()
ontology = generator.generate_ontology(sample_data)
# 2. Initialize KG with Ontology
kg = KnowledgeGraph(schema=ontology)
# 3. Add Data (Validated against Ontology)
kg.add_entities(full_dataset) # Will raise error if violates schema
Best Practices
- Reuse Standard Ontologies: Don't reinvent
PersonorOrganization; import FOAF or Schema.org usingReuseManager. - Validate Early: Run validation during generation to catch logical errors before populating the graph.
- Use Competency Questions: Define what questions your ontology should answer and use
OntologyEvaluatorto verify. - Version Control: Treat ontologies like code. Use
VersionManagerto track changes.
See Also
- Knowledge Graph Module - The instance data following the ontology
- Reasoning Module - Uses the ontology for inference
- Visualization Module - Visualizing the class hierarchy