2017-05-23 4 views
0

vorauszusetzen, dass ich eine Daten Eigenschaft fooType mit 2 möglichen Werte {"Low", "High"} genannt haben:Get aufgezählten Werte mit einem reasoner

<DataPropertyRange> 
    <DataProperty IRI="#fooType"/> 
    <DataOneOf> 
     <Literal datatypeIRI="http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral">Low</Literal> 
     <Literal datatypeIRI="http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral">High</Literal> 
    </DataOneOf> 
</DataPropertyRange> 

Wie kann ich owlapi verwenden und eine reasoner zu:

  1. Holen Sie sich alle Bereiche von Dateneigenschaft fooType (erhält "Low" und "High")
  2. Erhalten Sie alle fooType-Werte einer bestimmten Person?

Bisher habe ich versucht und stucked:

// 1. How to get "Low" and "High" strings in the next step? 
OWLDataProperty dataProperty = ... 
Set<OWLDataPropertyRangeAxiom> dataPropertyRangeAxioms = ontology.getDataPropertyRangeAxioms(dataProperty); 

// 2. How to get fooType's values in the next step? 
OWLIndividual individual = ... 
Set<OWLLiteral> literals = reasoner.getDataPropertyValues(individual, dataProperty); 

Antwort

1

A reasoner nicht notwendig ist, alle aufgezählten Werte zur Liste - zum Beispiel, wird es nicht Werte aufgelistet, die nicht verwendet werden, aber erlaubt verwendet werden in der Aufzählung.

Um alle Bereiche und deren Komponenten zugreifen:

OWLOntology o = ... 
OWLDataProperty p = ... 
o.dataPropertyRangeAxioms(p) 
    .map(OWLDataPropertyRangeAxiom::getRange) 
    .forEach((OWLDataRange range) -> 
     // this is where you can visit all ranges 
     // using an OWLDataRangeVisitor 
    ) 
);