OWL-API 5.1.6 Генерация правил SWRL и RDFXMLDocumentFormat: правила объединяются

Какие:

Я сталкиваюсь с тем, что я называю проблемой, но, вероятно, это не так.

Для некоторых нужд я создаю серию правил swrl через OWL API, которые после сериализации будут добавлены в хранилище stardog путем простой загрузки файла.

Например, я адаптировал свой код для генерации двух очень простых аксиом правила swrl: для заданного списка терминов, если элемент имеет все термины, он должен классифицироваться как класс классификации в параметре.

Здесь я выбрал

  • помидор -> о овощах
  • обезьяна, осел -> о животных

Как:

Я использую эту версию:

[отредактировано согласно подсказке Игнацио]

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

Итак, у меня есть что-то подобное для создания аксиом правила swrl:

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 StackruExemple {

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;
}

}

Что не так:

Проблема заключается в выводе, правила swrl объединены.

Выходной файл содержит два правила, это нормально, но если вы посмотрите на первое, оно содержит второе или что-то в этом роде.

Содержимое выходного файла (только часть правила swrl):

<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>

Помогите:

Очевидно, я вижу две возможности:

  • Я неправильно использую библиотеку (я уже успешно использовал этот код:/)
  • Есть проблема с библиотекой (с сериализацией)

Итак, если у вас есть какие-либо подсказки, вы столкнулись с подобной проблемой или просто видите, как я ошибаюсь, я буду рад, если вы сможете поделиться им:-)

Спасибо

2 ответа

Owlapi 3.5.0 древний. Кажется, что результат, который вы видите, является проблемой при рендеринге RDF/XML.

Две вещи, чтобы попробовать:

  • вместо этого используйте функциональный синтаксис или OWL/XML, чтобы увидеть, помогает ли это

  • используйте более новую версию owlapi. Ваш код должен компилироваться с 5.1.6 с небольшими изменениями, большинство из которых должно быть только в именах пакетов.

Изменить: как обсуждалось, фактически использовалась версия 5.1.6. Видимой проблемой была ошибка, исправленная в версии 5.1.7.

Решение

Как упоминалось в комментариях Игнацио, он исправил ошибку в выпуске 5.1.7

Предыдущее частичное решение (проблема возникла в любом случае с более важным набором правил для сериализации)

Пока у меня не было много времени, чтобы разобраться, что происходит не так, я решил использовать другой формат сериализации, поскольку проблема возникает не со всеми доступными форматами сериализации...

Таким образом, проблема не связана с этими двумя форматами:

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>
Другие вопросы по тегам