Maven SWRL API错误:没有注册的SWRL规则引擎

Maven SWRL API错误:没有注册的SWRL规则引擎,maven,swrlapi,Maven,Swrlapi,我正在用OWL和SWRL API构建一个Maven项目。 我想使用以下代码检索.owl文件中存储的所有规则: import org.semanticweb.owlapi.apibinding.OWLManager; import org.semanticweb.owlapi.model.OWLOntology; import org.semanticweb.owlapi.model.OWLOntologyCreationException; import org.semanticweb.owla

我正在用OWL和SWRL API构建一个Maven项目。 我想使用以下代码检索.owl文件中存储的所有规则:

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());
        }   
    }
}
事实上,在.owl文件中,存储了15条规则

请告诉我在哪里修理

我一直在搜索SWRLAPI的便捷教程或常见问题解答,包括。但是,这似乎没有多大帮助


另外,我的编码技能很差

问题不在于输入文件,而在于没有可用的已注册SWRL规则引擎。此设置很可能在使用SWRLAPIFactory之前在Protege中执行

这一要求如下所述:

如果希望能够执行SWRL规则或SQWRL查询,则需要基于SWRLAPI的规则引擎实现。目前,提供了一个基于Drools的SWRL规则引擎实现。此实现也托管在Maven Central上。


我相信您需要将该页面中描述的依赖项添加到您的项目中。

Hi@ignazio,我已经添加了依赖项,错误现在发生了变化,我将在另一篇文章中询问。谢谢
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)