Как я могу перечислить все свойства объекта, связанные с экземпляром в Йене?
Например: Человек имеет свойство объекта под названием hasVehicle, которое связано с классом Транспортное средство.
Как я могу перечислить все свойства объекта, связанные с экземпляром в Йене?
Например: Человек имеет свойство объекта под названием hasVehicle, которое связано с классом Транспортное средство.
Подходящий метод Йены - OntClass.listDeclaredProperties
. Следует помнить о некоторых нюансах; Подробно объясняется RDF-фреймы в Йене.
Обновить
Хорошо, я просмотрел ваш образец кода, прочитал ваше описание и, боюсь, я не понимаю, что вы хотите сделать. Что я сделал, так это переписал ваш образец кода, чтобы он делал то, что, как я предполагаю, может вам понадобиться, исходя из вашего описания в комментарии:
package test;
import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.util.FileManager;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;
public class LeandroTest
{
public static String NS = "http://www.owl-ontologies.com/TestProject.owl#";
public static void main( String[] args ) {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM, null );
FileManager.get().readModel( m, "./src/main/resources/project-test.owl" );
OntClass equipe = m.getOntClass( NS + "Equipe" );
OntProperty nome = m.getOntProperty( NS + "nome" );
for (ExtendedIterator<? extends OntResource> instances = equipe.listInstances(); instances.hasNext(); ) {
OntResource equipeInstance = instances.next();
System.out.println( "Equipe instance: " + equipeInstance.getProperty( nome ).getString() );
// find out the resources that link to the instance
for (StmtIterator stmts = m.listStatements( null, null, equipeInstance ); stmts.hasNext(); ) {
Individual ind = stmts.next().getSubject().as( Individual.class );
// show the properties of this individual
System.out.println( " " + ind.getURI() );
for (StmtIterator j = ind.listProperties(); j.hasNext(); ) {
Statement s = j.next();
System.out.print( " " + s.getPredicate().getLocalName() + " -> " );
if (s.getObject().isLiteral()) {
System.out.println( s.getLiteral().getLexicalForm() );
}
else {
System.out.println( s.getObject() );
}
}
}
}
}
}
Это дает следующий результат: сначала перечисляются все ресурсы rdf:type
#Equipe
, затем для каждого из них перечисляются ресурсы в модели, которые связывают с этим Equipe, а затем для этих связанных ресурсов перечисляются все RDF свойства. Я не думаю, что это особенно полезно, но, надеюсь, он покажет вам некоторые шаблоны для обхода графов RDF в Йене.
Equipe instance: Erica
Equipe instance: Etiene
http://www.owl-ontologies.com/TestProject.owl#EtapaExecucao_01
EtapaExecucao_DataModificao -> 2010-03-29T10:54:05
caso_de_teste -> http://www.owl-ontologies.com/TestProject.owl#CasoDeTeste_01
EtapaExecucao_StatusTeste -> Passou
EtapaExecucao_Reprodutibilidade -> Sempre
type -> http://www.owl-ontologies.com/TestProject.owl#EtapaExecucao
EtapaExecucao_VersaoDefeitoSurgiu -> Release ICAMMH_01.00
EtapaExecucao_Severidade -> Minimo
EtapaExecucao_VersaoDefeitoCorrigiu -> Release ICAMMH_02.00
DataExecucao -> 2009-07-10T09:42:02
EtapaExecucao_StatusDoDefeito -> Nao sera corrigido
EtapaExecucao_DataSubmissao -> 2009-06-30T09:43:01
Tipos_Fases -> http://www.owl-ontologies.com/TestProject.owl#FaseTesteExecucao
EtapaExecucao_Resolucao -> Fechado
executor_do_teste -> http://www.owl-ontologies.com/TestProject.owl#Etiene
EtapaExecucao_PrioridadeCorrecao -> Normal
Equipe instance: Fabio
Equipe instance: Melis
Некоторые общие предложения, особенно если у вас есть дополнительные вопросы: