2017-04-19 2 views
0

Ich baue ein Maven Projekt mit OWL und SWRL APIs. Ich möchte alle Regeln in einer .owl Datei gespeichert sind, abzurufen mit dem Code unten:SWRL API Fehler: keine registrierten SWRL Regelengines

import org.semanticweb.owlapi.apibinding.OWLManager; 
import org.semanticweb.owlapi.model.OWLOntology; 
import org.semanticweb.owlapi.model.OWLOntologyCreationException; 
import org.semanticweb.owlapi.model.OWLOntologyManager; 
import org.swrlapi.core.SWRLAPIRule; 
import org.swrlapi.core.SWRLRuleEngine; 
import org.swrlapi.factory.SWRLAPIFactory; 

import java.io.*; 
import java.util.Set; 

public class ManagingRules { 

    public static void main(String[] args) throws OWLOntologyCreationException { 

     OWLOntologyManager m = OWLManager.createOWLOntologyManager(); 
     OWLOntology ontology = m.loadOntologyFromOntologyDocument(new File("pwidasFinale.owl")); 

     //taking SWRLs list 
     SWRLRuleEngine ruleEngine = SWRLAPIFactory.createSWRLRuleEngine(ontology); 

     // Get SWRL rules 
     Set<SWRLAPIRule> sets = ruleEngine.getSWRLRules(); 

     for(SWRLAPIRule item : sets){ 
      System.out.println(item.toString()); 
     } 
    } 
} 

Es gibt keine Kompilierung-Fehler. Aber wenn ich diese Klasse laufen, bekam ich diese Benachrichtigung

Exception in thread "main" org.swrlapi.exceptions.NoRegisteredSWRLRuleEnginesException: no registered SWRL rule engines 
    at org.swrlapi.factory.DefaultSWRLRuleAndQueryEngineFactory.createSWRLRuleEngine(DefaultSWRLRuleAndQueryEngineFactory.java:47) 
    at org.swrlapi.factory.SWRLAPIFactory.createSWRLRuleEngine(SWRLAPIFactory.java:39) 
    at ManagingRules.main(ManagingRules.java:20) 

In der Tat, in der .owl Datei gibt es 15 gespeicherten Regeln.

Bitte zeigen Sie mir, wo ich es beheben kann.

Ich habe ein praktisches Tutorial oder FAQ von SWRL API, einschließlich this gesucht. Aber es scheint, dass es nicht so viel hilft.

P.S. meine Coding-Fähigkeit ist schlecht

Antwort

0

Das Problem liegt nicht in der Eingabedatei, sondern in der Tatsache, dass keine registrierten SWRL-Regel-Engines verfügbar sind. Diese Konfiguration wird sehr wahrscheinlich in Protege ausgeführt, bevor SWRLAPIFactory verwendet wird.

Diese Anforderung ist hier beschrieben: https://github.com/protegeproject/swrlapi/

If you'd like to be able to execute SWRL rules or SQWRL queries you will need a SWRLAPI-based rule engine implementation. Currently, a Drools-based SWRL rule engine implementation is provided. This implementation is also hosted on Maven Central.

Ich glaube, Sie die Abhängigkeiten in dieser Seite zu Ihrem Projekt beschrieben hinzufügen müssen.

+0

Hallo @ignazio, ich habe die Abhängigkeiten hinzugefügt und der Fehler ändert sich jetzt, ich werde es in einem anderen Beitrag fragen. Danke –

Verwandte Themen