package org.drools.semantics.builder.model.hierarchy;
import org.drools.semantics.builder.model.Concept;
import org.drools.semantics.builder.model.OntoModel;
import org.drools.semantics.utils.NameUtils;
import org.semanticweb.owlapi.model.IRI;
import org.w3._2002._07.owl.Thing;
public class VariantModelProcessor implements ModelHierarchyProcessor {
public void process( OntoModel model ) {
Concept thing = model.getConcept( Thing.IRI );
String rootName = NameUtils.capitalize( model.getName() ) + "Root";
Concept localRoot = new Concept( IRI.create( NameUtils.separatingName( model.getDefaultNamespace() ), rootName ),
rootName,
false );
// localRoot.setChosenSuper( Thing.class.getName() );
localRoot.setChosenSuperConcept( thing );
thing.getChosenSubConcepts().add( localRoot );
for ( Concept con : model.getConcepts() ) {
for ( String propKey : con.getProperties().keySet() ) {
if ( ! localRoot.getChosenProperties().containsKey( propKey ) ) {
localRoot.getChosenProperties().put( propKey, con.getProperty( propKey ) );
}
}
con.getChosenProperties().clear();
if ( ! Thing.class.getName().equals( con.getFullyQualifiedName() ) ) {
// con.setChosenSuper( localRoot.getFullyQualifiedName() );
con.setChosenSuperConcept( localRoot );
localRoot.getChosenSubConcepts().add( con );
} else {
con.setChosenSuperConcept( con );
// con.setChosenSuper( con.getFullyQualifiedName() );
}
}
model.addConcept( localRoot );
}
}