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!