Hello,
We are using Stardog 2.2.2 (community edition) in the context of our bachelor thesis and
think we stumbled upon some bug when trying to reach a conclusion based on SWRL-rules.
Hereinafter a simplified version of the situation.
We defined the dataProperties
provides
with a certain range, which is a list of strings
{"a", "b", "c"}
Based on this dataProperty, we defined the following rule
Rule: provides(?x, "a") -> provides(?x, "b")
We then assigned the dataProperty
x provides "a"
to an individual
x. So, we would expect
that the Reasoner (Pellet, bundled with Stardog) would reach the conclusion,
that the individual
x also disposes of the dataProperty
x provides "b"
which is not the case.
When we, however, modeled the same situation using another dataProperty as conclusion,
the individual
x disposed of the dataProperty, e.g.
Rule: requires(?x, "a") -> provides(?x, "b")
x provides "b"
We did all the modeling (including the definition of rules and so on) within Stanford Protégé (5.0.0 build beta-15 resp. build beta-16), exported the ontology as RDF/XML
and imported it within Stardog. We dropped and re-created the database every time.
The expected conclusion, as described in the first scenario, is reached within Protégé, in which we use Pellet for reasoning as well. Therefeore
we assume it has to be an issue within Stardog, and not the reasoning.
Any help is kindly appreciated. If you have any questions or if we shall provide further data, we are at disposal at any time.
Yours faithfully,
Sven Osterwalder