81 lines
2.3 KiB
Python
81 lines
2.3 KiB
Python
"""ASV benchmarks for UKO ontology loader performance.
|
|
|
|
Suites:
|
|
- UKOLoadSuite: time_load_ttl, time_parse_prefixes, time_parse_nodes
|
|
- UKOValidationSuite: time_validate_ontology, time_resolve_inheritance
|
|
- UKOLayerSuite: time_get_layer_0, time_get_layer_3
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import importlib
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
_SRC = str(Path(__file__).resolve().parents[1] / "src")
|
|
if _SRC not in sys.path:
|
|
sys.path.insert(0, _SRC)
|
|
|
|
import cleveragents # noqa: E402
|
|
|
|
importlib.reload(cleveragents)
|
|
|
|
from cleveragents.application.services.uko_loader import UKOLoader # noqa: E402
|
|
|
|
_TTL_PATH = Path(__file__).resolve().parents[1] / "docs" / "ontology" / "uko.ttl"
|
|
_TTL_TEXT = _TTL_PATH.read_text(encoding="utf-8")
|
|
|
|
|
|
class UKOLoadSuite:
|
|
"""Benchmark TTL loading and parsing throughput."""
|
|
|
|
def setup(self) -> None:
|
|
self.loader = UKOLoader()
|
|
|
|
def time_load_ttl(self) -> None:
|
|
"""Benchmark loading uko.ttl from disk."""
|
|
self.loader.load(_TTL_PATH)
|
|
|
|
def time_parse_prefixes(self) -> None:
|
|
"""Benchmark prefix-line parsing."""
|
|
self.loader._parse_prefixes(_TTL_TEXT)
|
|
|
|
def time_parse_nodes(self) -> None:
|
|
"""Benchmark full string parsing."""
|
|
self.loader.load_from_string(_TTL_TEXT)
|
|
|
|
|
|
class UKOValidationSuite:
|
|
"""Benchmark validation and inheritance resolution."""
|
|
|
|
def setup(self) -> None:
|
|
self.loader = UKOLoader()
|
|
self.ontology = self.loader.load(_TTL_PATH)
|
|
|
|
def time_validate_ontology(self) -> None:
|
|
"""Benchmark ontology validation."""
|
|
self.loader.validate(self.ontology)
|
|
|
|
def time_resolve_inheritance(self) -> None:
|
|
"""Benchmark uko-oo:Class inheritance chain resolution."""
|
|
self.loader.resolve_inheritance(
|
|
self.ontology,
|
|
"https://cleveragents.ai/ontology/uko/oo#Class",
|
|
)
|
|
|
|
|
|
class UKOLayerSuite:
|
|
"""Benchmark layer-filtered node retrieval."""
|
|
|
|
def setup(self) -> None:
|
|
self.loader = UKOLoader()
|
|
self.ontology = self.loader.load(_TTL_PATH)
|
|
|
|
def time_get_layer_0(self) -> None:
|
|
"""Benchmark Layer 0 node retrieval."""
|
|
self.loader.get_layer_nodes(self.ontology, 0)
|
|
|
|
def time_get_layer_3(self) -> None:
|
|
"""Benchmark Layer 3 node retrieval."""
|
|
self.loader.get_layer_nodes(self.ontology, 3)
|