Как я читаю .owl файлы в java и отображаю их содержимое? - PullRequest
6 голосов
/ 29 июля 2010

Как мне прочитать .owl файлы в java и показать их содержимое?

Ответы [ 6 ]

5 голосов
/ 31 января 2012

OWL API в исходной кузнице (http://owlapi.sourceforge.net/)) имеет все основные функции, хотя документации едва хватает. Возможно, вы потратите время на выяснение того, как сложные функции не показаны в примерах.

Я бы порекомендовал использовать API-интерфейс Protege для файлов OWL. (http://protegewiki.stanford.edu/wiki/ProtegeOWL_API_Programmers_Guide/). Этот API имеет хорошую документацию, и вики легко ориентироваться. С файлами OWL сложно работать из-за его семантической природы иСоздание собственного API может быть непростым. Protege также имеет SWRL API, если вы хотите обрабатывать аксиомы и правила.

2 голосов
/ 30 июля 2010

Использование API OWL .

1 голос
/ 29 июля 2010

Какой контекст? OWL - это формат онтологии, читаемый http://protege.stanford.edu/.

0 голосов
/ 22 апреля 2015

Существует еще один способ использования jena api в JAVA, но вы должны создать файлы SDB или TDB для данного файла OWL. Затем вы можете запросить с помощью SPARQL. JENA API

0 голосов
/ 22 апреля 2015

Вот пример для синтаксического анализа онтологии OWL с библиотекой API OWL:

import static org.semanticweb.owlapi.search.Searcher.annotations;
import static org.semanticweb.owlapi.vocab.OWLRDFVocabulary.RDFS_LABEL;

import java.util.ArrayList;
import java.util.List;

import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLAnnotation;
import org.semanticweb.owlapi.model.OWLAnnotationProperty;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLException;
import org.semanticweb.owlapi.model.OWLLiteral;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyManager;

public class OwlParser {

    private final OWLOntology ontology;
    private OWLDataFactory df;

    public OwlParser(OWLOntology ontology, OWLDataFactory df) {
        this.ontology = ontology;
        this.df = df;
    }

    public void parseOntology()
            throws OWLOntologyCreationException {

        for (OWLClass cls : ontology.getClassesInSignature()) {
            String id = cls.getIRI().toString();
            String label = get(cls, RDFS_LABEL.toString()).get(0);
            System.out.println(label + " [" + id + "]");
        }
    }

    private List<String> get(OWLClass clazz, String property) {
        List<String> ret = new ArrayList<>();

        final OWLAnnotationProperty owlProperty = df
                .getOWLAnnotationProperty(IRI.create(property));
        for (OWLOntology o : ontology.getImportsClosure()) {
            for (OWLAnnotation annotation : annotations(
                    o.getAnnotationAssertionAxioms(clazz.getIRI()), owlProperty)) {
                if (annotation.getValue() instanceof OWLLiteral) {
                    OWLLiteral val = (OWLLiteral) annotation.getValue();
                    ret.add(val.getLiteral());
                }
            }
        }
        return ret;
    }

    public static void main(String[] args) throws OWLException,
            InstantiationException, IllegalAccessException,
            ClassNotFoundException {

        String x = "http://ontology.neuinfo.org/NIF/Dysfunction/NIF-Dysfunction.owl";

        IRI documentIRI = IRI.create(x);
        OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
        OWLOntology ontology = manager
                .loadOntologyFromOntologyDocument(documentIRI);
        OwlParser parser = new OwlParser(ontology, manager.getOWLDataFactory());
        parser.parseOntology();
    }
}
0 голосов
/ 22 января 2011

У вас есть несколько вариантов.

.owl - это текстовые файлы, и вы можете отображать их таким образом.

.owl использует XML, поэтому вы можете обращаться с ним как с документом XML. Обратитесь к http://www.w3.org/TR/owl-xmlsyntax/ и http://www.w3.org/TR/owl2-overview/ для получения списка тегов и того, что они представляют.

Или вы можете использовать OWL API. Вы можете скачать его по адресу: http://owlapi.sourceforge.net/index.html, и несколько примеров по адресу http://owlapi.sourceforge.net/documentation.html

Отображение и OWL онтология представляет собой довольно сложную задачу, поскольку информация, которую вы хотите отобразить, может быть тесно связана, поэтому ее структура представляет собой структуру графика, а не последовательную или табличную. Для классов возможно быть подклассами многих других подклассов, и возможна циклическая классификация. То есть A может быть подклассом B, который может быть подклассом C, который может быть подклассом A.

...