Я искал хороший синтаксический анализатор для онтологий 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 час назад Детали