我是OWL 2的新手,我想用OWL API解析「.ttl」文件,但我發現OWL API與API I不同之前使用過。如果我想要在OWLAxiom或OWLEntity中獲取內容,似乎應該寫一個「訪問者」,等等。我已經閱讀了一些教程,但我沒有得到正確的方法來做到這一點。另外,我發現搜索到的教程是使用老版本的owl api。所以我想要一個詳細的例子來解析一個實例,並將內容存儲到一個Java類中。解析.ttl文件並將其映射到Java類
我做了一些嘗試,我的代碼如下,但我不知道繼續下去。是
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
File file = new File("./source.ttl");
OWLOntology localAcademic = manager.loadOntologyFromOntologyDocument(file);
Stream<OWLNamedIndividual> namedIndividualStream = localAcademic.individualsInSignature();
Iterator<OWLNamedIndividual> iterator = namedIndividualStream.iterator();
while (iterator.hasNext()) {
OWLNamedIndividual namedIndividual = iterator.next();
}
實例舉例如下。特別是,我想將「@en」存儲在「ecrm:P3_has_note」的對象中。是
<http://data.doremus.org/performance/4db95574-8497-3f30-ad1e-f6f65ed6c896>
a mus:M42_Performed_Expression_Creation ;
ecrm:P3_has_note "Créée par Teodoro Anzellotti, son commanditaire, en novembre 1995 à Rotterdam"@en ;
ecrm:P4_has_time-span <http://data.doremus.org/performance/4db95574-8497-3f30-ad1e-f6f65ed6c896/time> ;
ecrm:P9_consists_of [ a mus:M28_Individual_Performance ;
ecrm:P14_carried_out_by "Teodoro Anzellotti"
] ;
ecrm:P9_consists_of [ a mus:M28_Individual_Performance ;
ecrm:P14_carried_out_by "à Rotterdam"
] ;
efrbroo:R17_created <http://data.doremus.org/expression/2fdd40f3-f67c-30a0-bb03-f27e69b9f07f> ;
efrbroo:R19_created_a_realisation_of
<http://data.doremus.org/work/907de583-5247-346a-9c19-e184823c9fd6> ;
efrbroo:R25_performed <http://data.doremus.org/expression/b4bb1588-dd83-3915-ab55-b8b70b0131b5> .
我想要的內容如下:
class Instance{
String subject;
Map<String, Set<Object>> predicateToObject = new HashMap<String,Set<Object>>();
}
class Object{
String value;
String type;
String language = null;
}
我使用owlapi的版本是5.1.0。我從there下載了jar和doc。我只是想知道如何獲得我在java類中需要的內容。
如果有一些教程描述了實現方法,請告訴我。
非常感謝。
更新:我已經知道如何做到這一點,當我完成它,我會寫一個答案,我希望它能夠幫助OWLAPI的後來者。
再次感謝。
非常感謝。但我可以使用訪問者獲取數據,它的OWLAnnonatiomAssersionAxiom,我認爲OWLDataPropertyAssersionAxiom是存儲公理來描述數據屬性。我不確定,你的意見是什麼? – ciferlv
取決於您之後的屬性是註記屬性還是數據屬性。不同之處在於註釋屬性被reasoners忽略。 – Ignazio
我也有一個問題。如果我現在有一個人,我想知道每一個屬性和價值,有沒有一種快速的方法來獲得這些?你有沒有寫好現成的方法來做到這一點?非常感謝。 – ciferlv