1

私は Openllet 推論器を使用するつもりでしたが、他の利用可能な推論器と同様です。ただし、この推論は、OWL API 5.XX ディストリビューションとのみ互換性があります。SWRL ルールを含む xxx.owl ファイルがあります。既存の SWRL API は OWL API 5 と互換性がないため、Ignazio Palmisanoは、OWL API 5.XX ディストリビューションと互換性があるように、必要な変更を加えたフォークされたリポジトリを親切に作成しました。その結果、SWRL API と drools エンジンに関連する依存関係を削除しました。代わりに、「zip」ファイルをダウンロードしてローカルにビルドしました。

現在、SWRL API の「.jar」ファイルと Drools が intelliJ のプロジェクトにロードされているため、次のエラーが表示されます。

Exception in thread "main" org.swrlapi.exceptions.SWRLRuleEngineException: Error creating rule engine Drools. Exception: java.lang.NoClassDefFoundError. Message: org/drools/runtime/rule/AgendaFilter
    at org.swrlapi.factory.DefaultSWRLRuleAndQueryEngineFactory.createSWRLRuleEngine(DefaultSWRLRuleAndQueryEngineFactory.java:71)
    at org.swrlapi.factory.DefaultSWRLRuleAndQueryEngineFactory.createSWRLRuleEngine(DefaultSWRLRuleAndQueryEngineFactory.java:41)
    at org.swrlapi.factory.SWRLAPIFactory.createSWRLRuleEngine(SWRLAPIFactory.java:38)
    at SWRLrules.main(SWRLrules.java:61)

Caused by: java.lang.NoClassDefFoundError: org/drools/runtime/rule/AgendaFilter
    at org.swrlapi.drools.core.DroolsSWRLRuleEngineCreator.create(DroolsSWRLRuleEngineCreator.java:27)
    at org.swrlapi.factory.DefaultSWRLRuleAndQueryEngineFactory.createSWRLRuleEngine(DefaultSWRLRuleAndQueryEngineFactory.java:59)
    ... 3 more

Caused by: java.lang.ClassNotFoundException: org.drools.runtime.rule.AgendaFilter
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 5 more code here

ここでは、 pom.xml ファイルに依存関係も添付しています。

<dependencies>

    <dependency>
        <groupId>net.sourceforge.owlapi</groupId>
        <artifactId>owlapi-osgidistribution</artifactId>
        <version>5.1.4</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
    </dependency>
    <dependency>
        <groupId>com.github.galigator.openllet</groupId>
        <artifactId>openllet-owlapi</artifactId>
        <version>2.6.3</version>
    </dependency>

</dependencies>

<build>

    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>org.swrlapi.example.SWRLAPIExample</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>org.swrlapi.example.SWRLAPIExample</mainClass>
            </configuration>
        </plugin>

    </plugins>

</build>

PS : swrl api と drools エンジンをローカルでビルドし、jar ファイルをプロジェクトにインポートしました。

4

1 に答える 1