我是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