Abrufen alle Vorfahren einer rdf: Klasse
-
12-09-2019 - |
Frage
Stellen Sie sich folgende Taxonomie (azyklisch & gerichteten Graphen):
<my:Eukaryota> <rdfs:subClassOf> <my:Organism>.
<my:Mammal> <rdfs:subClassOf> <my:Eukaryota>.
<my:Primate> <rdfs:subClassOf> <my:Mammal>.
<my:HomoSapiens> <rdfs:subClassOf> <my:Primate>.
<my:Bacteria> <rdfs:subClassOf> <my:Organism>.
<my:Escherichia> <rdfs:subClassOf> <my:Bacteria>.
1) Ist es möglich, mit dem Jena OWL API zu überprüfen, ob eine bestimmte Ressource (zB Homo Sapiens) ist eine Unterklasse von ‚Säugetier‘ ohne alle Eltern Knoten rekursiv abzurufen?
2) Die gleiche Frage mit SPARQL .
Danke
Lösung
Wenn Sie bereits Jena verwenden, können Sie den Einsatz Pellet die SPARQL-DL-Abfrage-Engine , die lassen sollten Sie Personen in einer Ontologie-aware Art und Weise abgefragt werden.
Alternativ können Sie Jena benutzen InfModel
statt Model
Schnittstelle, fügen sie eine Reasoner (und Ontologie), um es, und führen sie dann die Abfrage RobV erwähnt. Sie können Pellet des reasoner dafür verwenden, wenn man wollte. Sie brauchen nicht die OntModel
zu verwenden, wenn Sie nur Argumentation tun wollen.
Andere Tipps
SPARQL 1.1 hat beliebige Tiefe Graph Traversal. Welche kann hierfür verwendet werden. Siehe ähnliche Frage an BioStar
ASK { rdfs Homo Sapiens: subClassOf +: Mammal }