значение параметров в методе разбора OWLAPI (построение AST) - PullRequest
0 голосов
/ 31 мая 2018

Я искал хороший синтаксический анализатор для онтологий OWL - изначально на Python, так как у меня очень ограниченный опыт работы с Java.Насколько я могу судить, OWLAPI - лучший выбор, и, ну, в общем, - это Java.

Итак, я пытаюсь проанализировать файл .owl и построить из него AST.Я скачал owlapi, и у меня возникли проблемы с ним, так как он, кажется, не имеет большого количества документации.

Мой самый основной вопрос заключается в том, что означают два первых параметра - скажем, - OWLXMLParser (),означает: - источник документа: этот файл .owl читается как поток (в getDocument ниже)?- корневая онтология: что здесь происходит?Первоначально я думал, что это это , куда идет файл .owl, похоже, это не тот случай.

Создает ли метод синтаксического анализа AST или я лаю неправильное дерево?

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

[Ошибка, которую я получаю, заключается в следующем - если кого-то волнует- хотя вопрос является более фундаментальным:

java.lang.NullPointerException: поток не может быть нулевым в 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) в testontology.testparsers.OntologyParser.getDocument (App.java:72partest.serar.test (App.java:77) at 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);
    }

Нажмите здесь, чтобыОтветить илиВперед 15,32 ГБ (13%) из 115 ГБ использованных Управление Условиями - Конфиденциальность Последняя активность в учетной записи: 1 час назад Детали

1 Ответ

0 голосов
/ 01 июня 2018

Парсеры owlapi предназначены для использования реализациями OWLOntologyManager, которыми управляет (если вы не пишете новую реализацию owlapi) синглтон OWLManager.Существует множество примеров использования этого класса на вики-страницах.

Все парсеры, включенные в дистрибутив owlapi, предназначены для создания экземпляров OWLAxiom в OWLOntology, а не для создания AST файла owl - синтаксической формы.количество файлов зависит от конкретного формата, предпочтений автора и т. д., в то время как целью API является предоставление функции манипулирования онтологией вызывающей стороне.Детали формата вывода могут быть изменены, но предоставление их вызывающей стороне не является частью основного дизайна.

...