Hi,

   The marmotta documentation states that its rule engine can implement
RDFS and a subset of OWL semantics. Is there a rule file with rules for OWL
2 RL or RDFS+?
   I tried to write one myself, but the marmotta db began to grow to
gigabytes (for a small triple set). That is the rule set I used for RDFS+:

@prefix owl: <http://www.w3.org/2002/07/owl#>
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>

/*Rules*/

cax-eqc1: ($c1 owl:equivalentClass $c2), ($x rdf:type $c1) -> ($x rdf:type
$c2)

cax-eqc2: ($c1 owl:equivalentClass $c2), ($x rdf:type $c2) -> ($x rdf:type
$c1)

cax-sco: ($c1 rdfs:subClassOf $c2), ($x rdf:type $c1) -> ($x rdf:type $c2)

eq-rep-o: ($o owl:sameAs $o2), ($s $p $o) -> ($s $p $o2)

eq-rep-p: ($p owl:sameAs $p2), ($s $p $o) -> ($s $p2 $o)

eq-rep-s: ($s owl:sameAs $s2), ($s $p $o) -> ($s2 $p $o)

eq-sym: ($x owl:sameAs $y) -> ($y owl:sameAs $x)

eq-trans: ($x owl:sameAs $y), ($y owl:sameAs $z) -> ($x owl:sameAs $z)

prp-dom: ($p rdfs:domain $c), ($x $p $y) -> ($x rdf:type $c)

prp-eqp1: ($p1 owl:equivalentProperty $p2), ($x $p1 $y) -> ($x $p2 $y)

prp-eqp2: ($p1 owl:equivalentProperty $p2), ($x $p2 $y) -> ($x $p1 $y)

prp-fp: ($p rdf:type owl:FunctionalProperty), ($x $p $y1), ($x $p $y2)
/*FILTER (?y1 != ?y2)*/ -> ($y1 owl:sameAs $y2)

prp-ifp: ($p rdf:type owl:InverseFunctionalProperty), ($x1 $p $y), ($x2 $p
$y) /*FILTER (?x1 != ?x2)*/ -> ($x1 owl:sameAs $x2)

prp-inv1: ($p1 owl:inverseOf $p2), ($x $p1 $y) -> ($y $p2 $x)

prp-inv2: ($p1 owl:inverseOf $p2), ($x $p2 $y) -> ($y $p1 $x)

prp-rng: ($p rdfs:range $c), ($x $p $y) -> ($y rdf:type $c)

prp-spo1: ($p1 rdfs:subPropertyOf $p2), ($x $p1 $y) -> ($x $p2 $y)

prp-symp: ($p rdf:type owl:SymmetricProperty), ($x $p $y) -> ($y $p $x)

prp-trp: ($p rdf:type owl:TransitiveProperty), ($x $p $y), ($y $p $z) ->
($x $p $z)

scm-clsa: ($c rdf:type owl:Class) -> ($c rdfs:subClassOf $c)
scm-clsb: ($c rdf:type owl:Class) -> ($c owl:equivalentClass $c)
scm-clsc: ($c rdf:type owl:Class) -> ($c rdfs:subClassOf owl:Thing)
scm-clsb: ($c rdf:type owl:Class) -> (owl:Nothing rdfs:subClassOf $c)

scm-dom1: ($p rdfs:domain $c1), ($c1 rdfs:subClassOf $c2) -> ($p
rdfs:domain $c2)

scm-dom2: ($p2 rdfs:domain $c), ($p1 rdfs:subPropertyOf $p2) -> ($p1
rdfs:domain $c)

scm-dpa: ($p rdf:type owl:DatatypeProperty) -> ($p rdfs:subPropertyOf $p)
scm-dpb: ($p rdf:type owl:DatatypeProperty) -> ($p owl:equivalentProperty
$p)

scm-eqc1a: ($c1 owl:equivalentClass $c2) -> ($c1 rdfs:subClassOf $c2)
scm-eqc1b: ($c1 owl:equivalentClass $c2) -> ($c2 rdfs:subClassOf $c1)

scm-eqc2: ($c1 rdfs:subClassOf $c2), ($c2 rdfs:subClassOf $c1) -> ($c1
owl:equivalentClass $c2)

scm-eqp1a: ($p1 owl:equivalentProperty $p2) -> ($p1 rdfs:subPropertyOf $p2)
scm-eqp1b: ($p1 owl:equivalentProperty $p2) -> ($p2 rdfs:subPropertyOf $p1)

scm-eqp2: ($p1 rdfs:subPropertyOf $p2), ($p2 rdfs:subPropertyOf $p1) ->
($p1 owl:equivalentProperty $p2)

scm-opa: ($p rdf:type owl:ObjectProperty) -> ($p rdfs:subPropertyOf $p)
scm-opb: ($p rdf:type owl:ObjectProperty) -> ($p owl:equivalentProperty $p)

scm-rng1: ($p rdfs:range $c1), ($c1 rdfs:subClassOf $c2) -> ($p rdfs:range
$c2)

scm-rng2: ($p2 rdfs:range $c), ($p1 rdfs:subPropertyOf $p2) -> ($p1
rdfs:range $c)

scm-sco: ($c1 rdfs:subClassOf $c2), ($c2 rdfs:subClassOf $c3) -> ($c1
rdfs:subClassOf $c3)

scm-spo: ($p1 rdfs:subPropertyOf $p2), ($p2 rdfs:subPropertyOf $p3) -> ($p1
rdfs:subPropertyOf $p3)

   Any idea about what went wrong?

--
Dilvan de Abreu Moreira, Ph.D.     dil...@gmail.com
http://java.icmc.usp.br
Warning: I use a spam filter, some emails sent to me CAN be lost!

Reply via email to