2011-04-14 17 views

Respuesta

9

Olvídate de XPath para extraer triples, es mucho más fácil y menos problemático con Jena.

Puede usar la interfaz SimpleSelector junto con model.listStatements de Jena.

En este ejemplo, estoy usando SimpleSelector para encontrar todas las tripletas con una sola propiedad pero puede implementar cualquier búsqueda que necesite mediante la personalización del método selects.

FileManager fManager = FileManager.get(); 
Model model = fManager.loadModel("some_file.rdf"); 

Property someRelevantProperty = 
    model. createProperty("http://your.data.org/ontology/", 
          "someRelevantProperty"); 

SimpleSelector selector = new SimpleSelector(null, null, (RDFNode)null) { 
    public boolean selects(Statement s) 
     { return s.getPredicate().equals(someRelevantProperty);} 
} 

StmtIterator iter = model.listStatements(selector); 
while(it.hasNext()) { 
    Statement stmt = iter.nextStatement(); 
    System.out.print(stmt.getSubject().toString()); 
    System.out.print(stmt.getPredicate().toString()); 
    System.out.println(stmt.getObject().toString()); 
} 

Encontrará más información here.

Si describes un poco más sobre la ontología que estás utilizando y el tipo de búsqueda que necesitas, podríamos ayudarte más.

+0

Algunas notas más sobre por qué [no usar XPath para trabajar con RDF o OWL] (http://stackoverflow.com/a/17052385/1281433) de una pregunta unos años después. –

Cuestiones relacionadas