robotte
robotte

Reputation: 103

OWL-API 5.1.6 SWRL rule generation and RDFXMLDocumentFormat : rules are merged

What:

I'm facing what i'm calling an issue, but it's probably not.

For some needs, i'm creating a serie of swrl rules through OWL API, which after been serialized will be added to a stardog repository by simple file upload.

For example purpose, i have adapted my code to generate two very simple swrl rule axioms: for a given list of terms, if a an item has all the terms, it must be classified as the classification class in parameter.

Here, i choosed

How:

I use this version:

[edited accordingly to Ignazio hint]

compile group: 'net.sourceforge.owlapi', name: 'owlapi-distribution', version: '5.1.6'

So i have something like that to produce the swrl rule axioms:

import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.formats.RDFXMLDocumentFormat;
import org.semanticweb.owlapi.model.*;

import java.io.File;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class StackOverflowExemple {

private final static String BASE_IRI          = "http://foo.bar/exemple.owl";
private final static String CLASS_ITEM        = BASE_IRI + "#Item";
private final static String CLASS_TERM        = BASE_IRI + "#Term";
private final static String PROP_ISCLASSIFIED = BASE_IRI + "#isClassified";
private final static String PROP_HASTERM      = BASE_IRI + "#hasTerm";
private final static String IND_IT            = BASE_IRI + "#it";

public static void main(String[] args) throws Exception {
   OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
   OWLOntology onto = manager.createOntology();

   SWRLRule rule1 = createRule(manager, Arrays.asList(new String[]{"tomato"}), BASE_IRI + "#aboutVegetables");
   manager.applyChange(new AddAxiom(onto, rule1));

   SWRLRule rule2 = createRule(manager, Arrays.asList(new String[]{"monkey", "donkey"}), BASE_IRI + "#aboutAnimals");
   manager.applyChange(new AddAxiom(onto, rule2));

   File output = new File("foo.rdf");
   OWLDocumentFormat format = new RDFXMLDocumentFormat();
   manager.saveOntology(onto, format, IRI.create(output));
}

private static SWRLRule createRule(OWLOntologyManager manager,
                                   List<String> inputWords,
                                   String classificationClass) throws Exception {

   OWLDataFactory factory = manager.getOWLDataFactory();

   OWLClass classItem = factory.getOWLClass(IRI.create(CLASS_ITEM));
   OWLClass classTerm = factory.getOWLClass(IRI.create(CLASS_TERM));

   /**
    * Prepararing andecedent (has term conditions)
    */
   SWRLVariable varItem = factory.getSWRLVariable(IRI.create(IND_IT));
   OWLObjectProperty propHasTerm = factory.getOWLObjectProperty(IRI.create(PROP_HASTERM));

   Set<SWRLAtom> antecedent = new HashSet<>();

   for (String term : inputWords) {
      OWLNamedIndividual termInd = factory.getOWLNamedIndividual(IRI.create(BASE_IRI + "#" + term));
      SWRLIndividualArgument termIndArg = factory.getSWRLIndividualArgument(termInd);
      SWRLObjectPropertyAtom propAtom = factory.getSWRLObjectPropertyAtom(propHasTerm,
                                                                          varItem,
                                                                          termIndArg);
      antecedent.add(propAtom);
      antecedent.add(factory.getSWRLClassAtom(classTerm, termIndArg));
      antecedent.add(factory.getSWRLClassAtom(classItem, varItem));
   }

   /**
    * Building consequent part
    */
   OWLNamedIndividual classificationIndividual = factory.getOWLNamedIndividual(IRI.create(classificationClass));

   OWLObjectProperty propClassified = factory.getOWLObjectProperty(IRI.create(PROP_ISCLASSIFIED));

   SWRLObjectPropertyAtom propClassifiedAtom = factory.getSWRLObjectPropertyAtom(propClassified,
                                                                                 varItem,
                                                                                 factory.getSWRLIndividualArgument(classificationIndividual));

   Set<SWRLAtom> consequent = new HashSet<>();
   consequent.add(propClassifiedAtom);

   /**
    * Create the swrl rule
    */
   SWRLRule rule = factory.getSWRLRule(antecedent,
                                       consequent);

   return rule;
}

}

What's going wrong:

The problem lies with the output, the swrl rules are merged.

The output file contains two rules, it's ok, but if you look at the first one, it contains the second one, or something like that.

Output file content (the swrl rule part only) :

<rdf:Description>
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#Imp"/>
    <swrl:body>
        <rdf:Description>
            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
            <rdf:first>
                <rdf:Description>
                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
                    <swrl:propertyPredicate rdf:resource="http://foo.bar/exemple.owl#hasTerm"/>
                    <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#it"/>
                    <swrl:argument2 rdf:resource="http://foo.bar/exemple.owl#tomato"/>
                </rdf:Description>
            </rdf:first>
            <rdf:rest>
                <rdf:Description>
                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                    <rdf:first>
                        <rdf:Description>
                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
                            <swrl:classPredicate rdf:resource="http://foo.bar/exemple.owl#Term"/>
                            <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#tomato"/>
                        </rdf:Description>
                    </rdf:first>
                    <rdf:rest>
                        <rdf:Description>
                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                            <rdf:first>
                                <rdf:Description>
                                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#Imp"/>
                                    <swrl:body>
                                        <rdf:Description>
                                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                                            <rdf:first>
                                                <rdf:Description>
                                                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
                                                    <swrl:classPredicate rdf:resource="http://foo.bar/exemple.owl#Term"/>
                                                    <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#monkey"/>
                                                </rdf:Description>
                                            </rdf:first>
                                            <rdf:rest>
                                                <rdf:Description>
                                                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                                                    <rdf:first>
                                                        <rdf:Description>
                                                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
                                                            <swrl:propertyPredicate rdf:resource="http://foo.bar/exemple.owl#hasTerm"/>
                                                            <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#it"/>
                                                            <swrl:argument2 rdf:resource="http://foo.bar/exemple.owl#monkey"/>
                                                        </rdf:Description>
                                                    </rdf:first>
                                                    <rdf:rest>
                                                        <rdf:Description>
                                                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                                                            <rdf:first>
                                                                <rdf:Description>
                                                                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
                                                                    <swrl:propertyPredicate rdf:resource="http://foo.bar/exemple.owl#hasTerm"/>
                                                                    <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#it"/>
                                                                    <swrl:argument2 rdf:resource="http://foo.bar/exemple.owl#donkey"/>
                                                                </rdf:Description>
                                                            </rdf:first>
                                                            <rdf:rest>
                                                                <rdf:Description>
                                                                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                                                                    <rdf:first>
                                                                        <rdf:Description>
                                                                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
                                                                            <swrl:classPredicate rdf:resource="http://foo.bar/exemple.owl#Term"/>
                                                                            <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#donkey"/>
                                                                        </rdf:Description>
                                                                    </rdf:first>
                                                                    <rdf:rest>
                                                                        <rdf:Description>
                                                                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                                                                            <rdf:first>
                                                                                <rdf:Description>
                                                                                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
                                                                                    <swrl:classPredicate rdf:resource="http://foo.bar/exemple.owl#Item"/>
                                                                                    <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#it"/>
                                                                                </rdf:Description>
                                                                            </rdf:first>
                                                                            <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
                                                                        </rdf:Description>
                                                                    </rdf:rest>
                                                                </rdf:Description>
                                                            </rdf:rest>
                                                        </rdf:Description>
                                                    </rdf:rest>
                                                </rdf:Description>
                                            </rdf:rest>
                                        </rdf:Description>
                                    </swrl:body>
                                    <swrl:head>
                                        <rdf:Description>
                                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                                            <rdf:first>
                                                <rdf:Description>
                                                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
                                                    <swrl:propertyPredicate rdf:resource="http://foo.bar/exemple.owl#isClassified"/>
                                                    <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#it"/>
                                                    <swrl:argument2 rdf:resource="http://foo.bar/exemple.owl#aboutAnimals"/>
                                                </rdf:Description>
                                            </rdf:first>
                                            <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
                                        </rdf:Description>
                                    </swrl:head>
                                </rdf:Description>
                            </rdf:first>
                            <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
                        </rdf:Description>
                    </rdf:rest>
                </rdf:Description>
            </rdf:rest>
        </rdf:Description>
    </swrl:body>
    <swrl:head>
        <rdf:Description>
            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
            <rdf:first>
                <rdf:Description>
                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
                    <swrl:propertyPredicate rdf:resource="http://foo.bar/exemple.owl#isClassified"/>
                    <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#it"/>
                    <swrl:argument2 rdf:resource="http://foo.bar/exemple.owl#aboutVegetables"/>
                </rdf:Description>
            </rdf:first>
            <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
        </rdf:Description>
    </swrl:head>
</rdf:Description>
<rdf:Description>
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#Imp"/>
    <swrl:body>
        <rdf:Description>
            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
            <rdf:first>
                <rdf:Description>
                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
                    <swrl:classPredicate rdf:resource="http://foo.bar/exemple.owl#Term"/>
                    <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#monkey"/>
                </rdf:Description>
            </rdf:first>
            <rdf:rest>
                <rdf:Description>
                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                    <rdf:first>
                        <rdf:Description>
                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
                            <swrl:propertyPredicate rdf:resource="http://foo.bar/exemple.owl#hasTerm"/>
                            <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#it"/>
                            <swrl:argument2 rdf:resource="http://foo.bar/exemple.owl#monkey"/>
                        </rdf:Description>
                    </rdf:first>
                    <rdf:rest>
                        <rdf:Description>
                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                            <rdf:first>
                                <rdf:Description>
                                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
                                    <swrl:propertyPredicate rdf:resource="http://foo.bar/exemple.owl#hasTerm"/>
                                    <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#it"/>
                                    <swrl:argument2 rdf:resource="http://foo.bar/exemple.owl#donkey"/>
                                </rdf:Description>
                            </rdf:first>
                            <rdf:rest>
                                <rdf:Description>
                                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                                    <rdf:first>
                                        <rdf:Description>
                                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
                                            <swrl:classPredicate rdf:resource="http://foo.bar/exemple.owl#Term"/>
                                            <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#donkey"/>
                                        </rdf:Description>
                                    </rdf:first>
                                    <rdf:rest>
                                        <rdf:Description>
                                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                                            <rdf:first>
                                                <rdf:Description>
                                                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
                                                    <swrl:classPredicate rdf:resource="http://foo.bar/exemple.owl#Item"/>
                                                    <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#it"/>
                                                </rdf:Description>
                                            </rdf:first>
                                            <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
                                        </rdf:Description>
                                    </rdf:rest>
                                </rdf:Description>
                            </rdf:rest>
                        </rdf:Description>
                    </rdf:rest>
                </rdf:Description>
            </rdf:rest>
        </rdf:Description>
    </swrl:body>
    <swrl:head>
        <rdf:Description>
            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
            <rdf:first>
                <rdf:Description>
                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
                    <swrl:propertyPredicate rdf:resource="http://foo.bar/exemple.owl#isClassified"/>
                    <swrl:argument1 rdf:resource="http://foo.bar/exemple.owl#it"/>
                    <swrl:argument2 rdf:resource="http://foo.bar/exemple.owl#aboutAnimals"/>
                </rdf:Description>
            </rdf:first>
            <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
        </rdf:Description>
    </swrl:head>
</rdf:Description>

Help:

Obviously i see two possibilities:

So, if you have any hint, have encountered similar issue, or simply see how i'm wrong, i'll be pleased if you can share it :-)

Thanks

Upvotes: 0

Views: 335

Answers (2)

robotte
robotte

Reputation: 103

Solution

As mentionned in the comments by Ignazio, he fixed the bug in 5.1.7 release

Previous partial solution (The problem happened anyway with a more important set of rules to serialize)

As long as i didn't have much time to explore what's going wrong, i choose to use another format of serialization, since the issue is not coming with all the available serialization formats...

So the issue didn't comes with at least with this two formats:

OWLXMLDocumentFormat

<DLSafeRule>
    <Body>
        <ClassAtom>
            <Class IRI="http://foo.bar/exemple.owl#Term"/>
            <NamedIndividual IRI="http://foo.bar/exemple.owl#monkey"/>
        </ClassAtom>
        <ObjectPropertyAtom>
            <ObjectProperty IRI="http://foo.bar/exemple.owl#hasTerm"/>
            <Variable IRI="http://foo.bar/exemple.owl#it"/>
            <NamedIndividual IRI="http://foo.bar/exemple.owl#monkey"/>
        </ObjectPropertyAtom>
        <ObjectPropertyAtom>
            <ObjectProperty IRI="http://foo.bar/exemple.owl#hasTerm"/>
            <Variable IRI="http://foo.bar/exemple.owl#it"/>
            <NamedIndividual IRI="http://foo.bar/exemple.owl#donkey"/>
        </ObjectPropertyAtom>
        <ClassAtom>
            <Class IRI="http://foo.bar/exemple.owl#Term"/>
            <NamedIndividual IRI="http://foo.bar/exemple.owl#donkey"/>
        </ClassAtom>
        <ClassAtom>
            <Class IRI="http://foo.bar/exemple.owl#Item"/>
            <Variable IRI="http://foo.bar/exemple.owl#it"/>
        </ClassAtom>
    </Body>
    <Head>
        <ObjectPropertyAtom>
            <ObjectProperty IRI="http://foo.bar/exemple.owl#isClassified"/>
            <Variable IRI="http://foo.bar/exemple.owl#it"/>
            <NamedIndividual IRI="http://foo.bar/exemple.owl#aboutAnimals"/>
        </ObjectPropertyAtom>
    </Head>
</DLSafeRule>
<DLSafeRule>
    <Body>
        <ObjectPropertyAtom>
            <ObjectProperty IRI="http://foo.bar/exemple.owl#hasTerm"/>
            <Variable IRI="http://foo.bar/exemple.owl#it"/>
            <NamedIndividual IRI="http://foo.bar/exemple.owl#tomato"/>
        </ObjectPropertyAtom>
        <ClassAtom>
            <Class IRI="http://foo.bar/exemple.owl#Term"/>
            <NamedIndividual IRI="http://foo.bar/exemple.owl#tomato"/>
        </ClassAtom>
        <ClassAtom>
            <Class IRI="http://foo.bar/exemple.owl#Item"/>
            <Variable IRI="http://foo.bar/exemple.owl#it"/>
        </ClassAtom>
    </Body>
    <Head>
        <ObjectPropertyAtom>
            <ObjectProperty IRI="http://foo.bar/exemple.owl#isClassified"/>
            <Variable IRI="http://foo.bar/exemple.owl#it"/>
            <NamedIndividual IRI="http://foo.bar/exemple.owl#aboutVegetables"/>
        </ObjectPropertyAtom>
    </Head>
</DLSafeRule>

RioRDFXMLDocumentFormat

<rdf:Description rdf:about="http://foo.bar/exemple.owl#it">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#Variable"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid15">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#Imp"/>
    <body xmlns="http://www.w3.org/2003/11/swrl#" rdf:nodeID="genid19"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid19">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
    <rdf:first rdf:nodeID="genid20"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid20">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
    <propertyPredicate xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#hasTerm"/>
    <argument1 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#it"/>
    <argument2 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#tomato"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid19">
    <rdf:rest rdf:nodeID="genid17"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid17">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
    <rdf:first rdf:nodeID="genid18"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid18">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
    <classPredicate xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#Term"/>
    <argument1 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#tomato"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid17">
    <rdf:rest rdf:nodeID="genid16"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid16">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
    <rdf:first rdf:nodeID="genid2"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid2">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#Imp"/>
    <body xmlns="http://www.w3.org/2003/11/swrl#" rdf:nodeID="genid11"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid11">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
    <rdf:first rdf:nodeID="genid12"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid12">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
    <classPredicate xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#Term"/>
    <argument1 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#monkey"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid11">
    <rdf:rest rdf:nodeID="genid9"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid9">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
    <rdf:first rdf:nodeID="genid10"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid10">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
    <propertyPredicate xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#hasTerm"/>
    <argument1 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#it"/>
    <argument2 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#monkey"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid9">
    <rdf:rest rdf:nodeID="genid7"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid7">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
    <rdf:first rdf:nodeID="genid8"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid8">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
    <propertyPredicate xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#hasTerm"/>
    <argument1 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#it"/>
    <argument2 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#donkey"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid7">
    <rdf:rest rdf:nodeID="genid5"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid5">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
    <rdf:first rdf:nodeID="genid6"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid6">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
    <classPredicate xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#Term"/>
    <argument1 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#donkey"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid5">
    <rdf:rest rdf:nodeID="genid3"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid3">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
    <rdf:first rdf:nodeID="genid1"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid1">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
    <classPredicate xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#Item"/>
    <argument1 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#it"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid3">
    <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid2">
    <head xmlns="http://www.w3.org/2003/11/swrl#" rdf:nodeID="genid13"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid13">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
    <rdf:first rdf:nodeID="genid14"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid14">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
    <propertyPredicate xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#isClassified"/>
    <argument1 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#it"/>
    <argument2 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#aboutAnimals"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid13">
    <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid16">
    <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid15">
    <head xmlns="http://www.w3.org/2003/11/swrl#" rdf:nodeID="genid21"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid21">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
    <rdf:first rdf:nodeID="genid22"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid22">
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
    <propertyPredicate xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#isClassified"/>
    <argument1 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#it"/>
    <argument2 xmlns="http://www.w3.org/2003/11/swrl#" rdf:resource="http://foo.bar/exemple.owl#aboutVegetables"/>
</rdf:Description>

<rdf:Description rdf:nodeID="genid21">
    <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
</rdf:Description>

Upvotes: 0

Ignazio
Ignazio

Reputation: 10659

Owlapi 3.5.0 is ancient. The result you're seeing seems to be an issue in RDF/XML rendering.

Two things to try:

  • use Functional Syntax or OWL/XML instead, to see if this helps

  • use a newer owlapi version. Your code should compile with 5.1.6 with minor changes, most of which should be only on package names.

Edit: as discussed, the version actually used was 5.1.6. The problem seen was a bug, fixed in version 5.1.7.

Upvotes: 1

Related Questions