.owl
Java でファイルを読み取り、その内容を表示するにはどうすればよいですか?
6 に答える
ソースフォージ(http://owlapi.sourceforge.net/)のOWL APIにはすべての基本的な機能がありますが、ドキュメントはほとんど不十分です。例に示されていない複雑な関数がどのように機能するかを理解するのに時間を浪費することになりかねません。
OWLファイル用のProtegeAPIを使用することをお勧めします。(http://protegewiki.stanford.edu/wiki/ProtegeOWL_API_Programmers_Guide /)。このAPIには優れたドキュメントがあり、Wikiは簡単にナビゲートできます。OWLファイルは、その意味的な性質のために回避するのは簡単ではなく、独自のAPIを構築するのは簡単ではないかもしれません。公理とルールを処理する場合、ProtegeにはSWRLAPIもあります。
OWL APIを使用します。
文脈は何ですか?OWL は、 http://protege.stanford.edu/によって読み取られるオントロジー形式です。
いくつかのオプションがあります。
.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 のサブクラスにすることができ、B は A のサブクラスにすることができる C のサブクラスにすることができます。
JAVA で jena api を使用する方法はもう 1 つありますが、特定の OWL ファイルに対して SDB または TDB ファイルを作成する必要があります。次に、SPARQL を使用してクエリを実行できます。ジェナ API
以下は、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();
}
}