OWL-RL icon indicating copy to clipboard operation
OWL-RL copied to clipboard

(RDFS) Closure is flushed to the graph

Open JanKalo opened this issue 4 years ago • 1 comments

import owlrl

rdfs = owlrl.RDFSClosure.RDFS_Semantics(g, False, False, False)
rdfs.closure()

result = g.query("""
PREFIX s: <http://example.org/>
SELECT ?x
WHERE{
    ?x rdf:type s:Example .
} 
""")

print(g.serialize())

When I understood the documentation correctly, calling rdfs.closure() should only store the inferred triples in a temporary set. They should only be added to the graph when calling the flush_stored_triples() method. However, this method is already called at the end of the closure() method.

Is there a possibility to not add the triples directly to the graph? Is this behavior on purpose?

JanKalo avatar Nov 23 '21 16:11 JanKalo

@JanKalo I believe this is a documentation error. Due to the cyclic nature of the way the RDFSClosure (and OWLRLClosure) patterns work in this library, it is necessary for the tool to flush all triples to the graph at the end of each cycle, so they can be available in the graph for the subsequent cycle.

I do plan to add a new feature in OWL-RL in the coming weeks, that will allow you to specify a separate named graph within an rdflib Dataset where all new triples will be added.

ashleysommer avatar Aug 12 '24 02:08 ashleysommer