解析方法OWLAPI(构建AST)中参数的含义

时间:2018-05-31 10:21:26

标签: owl-api

我一直在为OWL本体寻找一个好的解析器 - 最初是在Python中,因为我对Java的经验非常有限。据我所知,似乎OWLAPI是最好的选择,而且 Java。

所以,我正在尝试解析.owl文件并从中构建AST。我下载了owlapi并且我遇到了问题,因为它似乎没有太多的文档。

我的基本问题是 - 例如 - OWLXMLParser()的两个第一个参数是什么,代表: - 文档源:这是.owl文件读取为流(在下面的getDocument中)? - root本体论:这里有什么?最初我认为这个 .owl文件的去处,似乎并非如此。

parse方法是构造AST还是我咆哮错误的树?

我正在粘贴下面的一些意图 - 其中有更多意思但是我试图减少冗长:)

[我得到的错误就是这个 - 如果有人关心 - 虽然问题更为基础:

java.lang.NullPointerException:stream不能为null     at org.semanticweb.owlapi.util.OWLAPIPreconditions.checkNotNull(OWLAPIPreconditions.java:102)     在org.semanticweb.owlapi.io.StreamDocumentSourceBase。(StreamDocumentSourceBase.java:107)     在org.semanticweb.owlapi.io.StreamDocumentSource。(StreamDocumentSource.java:35)     at testontology.testparsers.OntologyParser.getDocument(App.java:72)     在testontology.testparsers.OntologyParser.test(App.java:77)     在testontology.testparsers.App.main(App.java:58)]

非常感谢你的帮助。

public class App 
{
    public static void main( String[] args )
    {
    OntologyParser o = new OntologyParser();
    try {
    OWLDocumentFormat p = o.test();
    } catch (Exception e) {
        e.printStackTrace();
        }
    }
}

class OntologyParser {
    private OWLOntology rootOntology;
    private OWLOntologyManager manager;

    private OWLOntologyDocumentSource getDocument() {
        System.out.println("access resource stream");
        return new StreamDocumentSource(getClass().getResourceAsStream(
                "/home/mmarines/Desktop/WORK/mooly/smart-cities/data/test.owl"));
    }

   public OWLDocumentFormat test() throws Exception {
        OWLOntologyDocumentSource documentSource = getDocument();
        OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
        OWLOntology rootOntology = manager.loadOntologyFromOntologyDocument (new FileDocumentSource(new File("/home/mmarines/Desktop/WORK/mooly/smart-cities/data/test.owl")));
        OWLDocumentFormat doc = parseOnto(documentSource, rootOntology);
       return doc;
    }

    private OWLDocumentFormat parseOnto(
            @Nonnull OWLOntologyDocumentSource initialDocumentSource,
            @Nonnull OWLOntology initialOntology) throws IOException {
        OWLParser initialParser = new OWLXMLParser();
        OWLOntologyLoaderConfiguration config = new OntologyConfigurator().buildLoaderConfiguration();

       //// option 1:
        //final OWLOntologyManager managerr = new OWLOntologyManagerImpl(new OWLDataFactoryImpl(), new ReentrantReadWriteLock(true));
        //final IRI iri = IRI.create("testasdf");
        //final IRI version = IRI.create("0.0.1");
        //OWLOntologyDocumentSource source = new FileDocumentSource(new File("/home/mmarines/Desktop/WORK/mooly/smart-cities/data/test.owl"));
        //final OWLOntology onto = new OWLOntologyImpl(managerr, new OWLOntologyID(iri,version));
        //return initialParser.parse(initialDocumentSource, onto, config);
        ////

        //option 2: 
        return initialParser.parse(initialDocumentSource, initialOntology, config);
    }

点击此处回复或转发 使用115 GB的15.32 GB(13%) 管理 条款 - 隐私 上次帐户活动:1小时前 细节

1 个答案:

答案 0 :(得分:0)

owlapi解析器设计用于OWLOntologyManager实现,这些实现由OWLManager单例管理(除非您正在编写新的owlapi实现)。关于如何在维基页面中使用该类的大量示例。

owlapi发行版中包含的所有解析器都是为了在OWLOntology中创建OWLAxiom实例,而不是创建owl文件的AST - 文件的语法形状取决于特定格式,编写器的首选项等等。虽然api的目的是为调用者提供本体操作功能。可以调整输出格式的细节,但将它们暴露给调用者不是主要设计的一部分。