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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions