Hey,
is it possible to express such condition using Jena rules:
"Subclasses inherit parameter arguments from superclasses, unless an
argument with the same predicate already is a subclass parameter"?
For example
# 1
:SuperClass ldt:param [ a ldt:Argument ; spl:predicate foaf:name ],
[ a ldt:Argument ; spl:predicate dct:title ] .
:SubClass rdfs:subClassOf :SuperClass .
should infer new triples:
:SubClass ldt:param [ a ldt:Argument ; spl:predicate foaf:name ],
[ a ldt:Argument ; spl:predicate dct:title ] .
# 2
:SuperClass ldt:param [ a ldt:Argument ; spl:predicate foaf:name ],
[ a ldt:Argument ; spl:predicate dct:title ] .
:SubClass rdfs:subClassOf :SuperClass ;
ldt:param [ a ldt:Argument ; spl:predicate dct:title ] ,
[ a ldt:Argument ; spl:predicate sioc:name ] .
should infer new triples:
:SubClass ldt:param [ a ldt:Argument ; spl:predicate foaf:name ] .
# no dct:title param inferred, because it exists already
What I use currently is this:
[arg1: (?template rdf:type <http://www.w3.org/ns/ldt#Template>),
(?template <http://www.w3.org/ns/ldt#param> ?arg), (?arg rdf:type
<http://www.w3.org/ns/ldt#Argument>), (?subTemplate rdfs:subClassOf
?template), (?subTemplate rdf:type
<http://www.w3.org/ns/ldt#Template>), noValue(?subTemplate
<http://www.w3.org/ns/ldt#param>) -> (?subTemplate
<http://www.w3.org/ns/ldt#param> ?arg)]
[arg2: (?template rdf:type <http://www.w3.org/ns/ldt#Template>),
(?template <http://www.w3.org/ns/ldt#param> ?arg), (?arg rdf:type
<http://www.w3.org/ns/ldt#Argument>), (?subTemplate rdfs:subClassOf
?template), (?subTemplate rdf:type
<http://www.w3.org/ns/ldt#Template>), (?arg
<http://spinrdf.org/spl#predicate> ?predicate), (?subTemplate
<http://www.w3.org/ns/ldt#param> ?subArg), noValue(?template
<http://www.w3.org/ns/ldt#param> ?subArg), noValue(?subArg
<http://spinrdf.org/spl#predicate> ?predicate) -> (?subTemplate
<http://www.w3.org/ns/ldt#param> ?arg)]
Sometimes I get desired results, sometimes only a single param is inferred.
Are the rules wrong or is this can't be done with monotonic rules?
Thanks,
Martynas