Skip to content

ontocast.tool.agg.match_models

Shared models for RDF graph matching and evaluation.

Attributes

RdfUriRef = Annotated[URIRef, _RdfUriRefAnnotation()] module-attribute

Classes

EntityAlignmentResult

Bases: BaseModel

Source code in ontocast/tool/agg/match_models.py
class EntityAlignmentResult(BaseModel):
    regime: MatchRegime
    similarity_threshold: float
    entity_count: int
    cluster_count: int
    clusters: list[EntityCluster] = Field(default_factory=list)

    model_config = ConfigDict(arbitrary_types_allowed=True)

Attributes

cluster_count instance-attribute
clusters = Field(default_factory=list) class-attribute instance-attribute
entity_count instance-attribute
model_config = ConfigDict(arbitrary_types_allowed=True) class-attribute instance-attribute
regime instance-attribute
similarity_threshold instance-attribute

EntityCluster

Bases: BaseModel

Source code in ontocast/tool/agg/match_models.py
class EntityCluster(BaseModel):
    members: list[GraphEntityMember] = Field(default_factory=list)

    model_config = ConfigDict(arbitrary_types_allowed=True)

Attributes

members = Field(default_factory=list) class-attribute instance-attribute
model_config = ConfigDict(arbitrary_types_allowed=True) class-attribute instance-attribute

EntityMatch

Bases: BaseModel

Source code in ontocast/tool/agg/match_models.py
class EntityMatch(BaseModel):
    predicted_entity: RdfUriRef
    gt_entity: RdfUriRef
    similarity: float

    model_config = ConfigDict(arbitrary_types_allowed=True)

Attributes

gt_entity instance-attribute
model_config = ConfigDict(arbitrary_types_allowed=True) class-attribute instance-attribute
predicted_entity instance-attribute
similarity instance-attribute

GraphEntityMember

Bases: BaseModel

Source code in ontocast/tool/agg/match_models.py
class GraphEntityMember(BaseModel):
    graph_id: str
    entity: RdfUriRef
    similarity: float | None = None

    model_config = ConfigDict(arbitrary_types_allowed=True)

Attributes

entity instance-attribute
graph_id instance-attribute
model_config = ConfigDict(arbitrary_types_allowed=True) class-attribute instance-attribute
similarity = None class-attribute instance-attribute

MatchMetrics

Bases: BaseModel

Triple, fact and entity scores; a ratio is None where undefined.

Source code in ontocast/tool/agg/match_models.py
class MatchMetrics(BaseModel):
    """Triple, fact and entity scores; a ratio is ``None`` where undefined."""

    precision: float | None
    recall: float | None
    f1: float | None
    true_positives: int
    false_positives: int
    false_negatives: int
    predicted_count: int
    ground_truth_count: int
    entity_precision: float | None
    entity_recall: float | None
    entity_f1: float | None
    entity_true_positives: int
    entity_false_positives: int
    entity_false_negatives: int
    domain_entity_matches: int
    fact_precision: float | None
    fact_recall: float | None
    fact_f1: float | None
    fact_true_positives: int
    fact_false_positives: int
    fact_false_negatives: int
    fact_predicted_count: int
    fact_ground_truth_count: int

Attributes

domain_entity_matches instance-attribute
entity_f1 instance-attribute
entity_false_negatives instance-attribute
entity_false_positives instance-attribute
entity_precision instance-attribute
entity_recall instance-attribute
entity_true_positives instance-attribute
f1 instance-attribute
fact_f1 instance-attribute
fact_false_negatives instance-attribute
fact_false_positives instance-attribute
fact_ground_truth_count instance-attribute
fact_precision instance-attribute
fact_predicted_count instance-attribute
fact_recall instance-attribute
fact_true_positives instance-attribute
false_negatives instance-attribute
false_positives instance-attribute
ground_truth_count instance-attribute
precision instance-attribute
predicted_count instance-attribute
recall instance-attribute
true_positives instance-attribute

MatchRegime

Bases: StrEnum

Source code in ontocast/tool/agg/match_models.py
class MatchRegime(StrEnum):
    ONTOLOGY_LOOSE = "ontology_loose"
    ONTOLOGY_STRICT = "ontology_strict"

Attributes

ONTOLOGY_LOOSE = 'ontology_loose' class-attribute instance-attribute
ONTOLOGY_STRICT = 'ontology_strict' class-attribute instance-attribute

TaggedGraph

Bases: BaseModel

Source code in ontocast/tool/agg/match_models.py
class TaggedGraph(BaseModel):
    id: str
    graph: RDFGraph

    model_config = ConfigDict(arbitrary_types_allowed=True)

Attributes

graph instance-attribute
id instance-attribute
model_config = ConfigDict(arbitrary_types_allowed=True) class-attribute instance-attribute

Functions:

as_uri_ref(value)

Normalize a graph or match term to URIRef for rdflib-safe equality.

Source code in ontocast/tool/agg/match_models.py
def as_uri_ref(value: URIRef | str) -> URIRef:
    """Normalize a graph or match term to URIRef for rdflib-safe equality."""
    return coerce_uri_ref(value)

coerce_uri_ref(value)

Source code in ontocast/tool/agg/match_models.py
def coerce_uri_ref(value: Any) -> URIRef:
    if isinstance(value, URIRef):
        return value
    if isinstance(value, str):
        return URIRef(value)
    raise TypeError(f"Expected URIRef or str, got {type(value).__name__}")