Skip to content

SopranoModule Inference loop #34

@niniemann

Description

@niniemann

initial situation

Rule:
[equivalentSymmetric: (?a owl:equivalentClass ?b) -> (?b owl:equivalentClass ?a)]

Model:
(foo owl:equivalentClass bar)
(bar owl:equivalentClass foo) << inferred

what I did

remove the first statement

what happened

Model:
(foo owl:equivalentClass bar) << inferred
(bar owl:equivalentClass foo) << inferred

what to do?

The commit 01e2f4b fixes this problem for my special use case, but makes everything slower -- every insert and removal takes longer, as well as every sparql query. Where before only the first query was slow, and all removals/insertions were fast.

The problem seems to be the consecutive call of performInference(), which is still called when rules are added/removed! The documentation says this should be fine, though:

Normally inferencing is done once new statements are added to the model or statements are removed. This method performs inferencing on the whole model. It is useful for initializing a model that already contains statements or update the model if it has been modified bypassing this filter model.

I don't really know how to solve this yet, or why it's so slow...

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions