Package org.mmisw.orrclient.core.ontmodel

Source Code of org.mmisw.orrclient.core.ontmodel.OntModelUtil

package org.mmisw.orrclient.core.ontmodel;

import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.mmisw.ont.JenaUtil2;
import org.mmisw.orrclient.core.MdHelper;

import com.hp.hpl.jena.ontology.OntDocumentManager;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.ontology.Ontology;
import com.hp.hpl.jena.ontology.impl.OntModelImpl;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.ResourceFactory;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;

/**
* Some utilities to create and update OntModel objects.
*
* @author Carlos Rueda
*/
public class OntModelUtil {

  private static final Log log = LogFactory.getLog(OntModelUtil.class);
 

  /**
   * Creates a basic OntModel with an Ontology resource whose URI is the
   * given URI.
   *
   * @param ontUri URI for the Ontology resource.
   * @param model Base model; can be null.
   * @return the created OntModel
   */
  public static OntModel createOntModel(String ontUri, OntModel model) {
   
    if ( model == null ) {
      model = createDefaultOntModel();
    }
    OntModelImpl newOntModel = new OntModelImpl(model.getSpecification(), model);
    String ns_ = JenaUtil2.appendFragment(ontUri);
    String base_ = JenaUtil2.removeTrailingFragment(ontUri);
   
    // set NS prefixes:
    newOntModel.setNsPrefix("", ns_);
    Map<String, String> preferredPrefixMap = MdHelper.getPreferredPrefixMap();
    for ( String uri : preferredPrefixMap.keySet() ) {
      String prefix = preferredPrefixMap.get(uri);
      newOntModel.setNsPrefix(prefix, uri);
    }

    newOntModel.createOntology(base_);
    if ( log.isDebugEnabled() ) {
      log.debug("New ontology created with namespace " + ns_ + " base " + base_);
    }

    return newOntModel;
  }
 
  /**
   * Adds properties to the (first) ontology resource in the given ontModel.
   * @param ontModel
   * @param propValues (propUri, PropValue) pairs
   * @return ontModel
   */
  public static OntModel addProperties(OntModel ontModel, Map<String, String> propValues) {
    return setOrAddProperties(ontModel, false, propValues);
  }
 
  /**
   * Sets properties to the (first) ontology resource, if any, in the given ontModel.
   * @param ontModel
   * @param propValues (propUri, PropValue) pairs
   * @return ontModel
   */
  public static OntModel setProperties(OntModel ontModel, Map<String, String> values) {
    return setOrAddProperties(ontModel, true, values);
  }
 
 
  private static OntModel setOrAddProperties(OntModel ontModel, boolean doSet, Map<String, String> values) {
    ExtendedIterator<Ontology> iter = ontModel.listOntologies();
    if ( iter.hasNext() ) {
      Ontology ont = (Ontology) iter.next();
      for ( String uri : values.keySet() ) {
        String value = values.get(uri);
        if ( value.trim().length() > 0 ) {
          Property prop = ResourceFactory.createProperty(uri);
          if ( doSet  &&  ont.getPropertyValue(prop) != null ) {
            ont.removeAll(prop);
          }
          ont.addProperty(prop, value.trim());
        }
      }
    }
    return ontModel;
  }
 
 
  private static OntModel createDefaultOntModel() {
    OntModelSpec spec = new OntModelSpec(OntModelSpec.OWL_MEM);
    OntDocumentManager docMang = new OntDocumentManager();
    spec.setDocumentManager(docMang);
    OntModel model = ModelFactory.createOntologyModel(spec, null);
    // removeNotNeccesaryNamespaces(model);

    return model;
  }

  private OntModelUtil() {}
}
TOP

Related Classes of org.mmisw.orrclient.core.ontmodel.OntModelUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.