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

Reply via email to