Here a MoDisco query API example is provided. For more information please refer to the JavaDoc.
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gmt.modisco.infra.query.ModelQuery;
import org.eclipse.gmt.modisco.infra.query.ModelQuerySet;
import org.eclipse.gmt.modisco.infra.query.core.AbstractModelQuery;
import org.eclipse.gmt.modisco.infra.query.core.ModelQuerySetCatalog;
import org.eclipse.gmt.modisco.infra.query.runtime.ModelQueryResult;
public class Example {
  public Integer main(EObject context) throws Exception {
    // Get the model query set catalog.
    ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton(); 
    // Get the query set named "My".
    ModelQuerySet modelQuerySet = catalog.getModelQuerySet("My");
    // Select in the "My" query set a query named "myQuery".
    // modelQueryDescription is a model element.
    ModelQuery modelQueryDescription = null;
    for (ModelQuery modelQuery : modelQuerySet.getQueries()) {
      if (modelQuery.getName().equals("myQuery")) {
        modelQueryDescription = modelQuery;
        break;
      }
    }
    if (modelQueryDescription == null) {
      throw new Exception();
    }
    //Get a java instance of the querySet
    AbstractModelQuery myModelQuery = catalog
        .getModelQueryImpl(modelQueryDescription);
    //the model query set evaluation
    ModelQueryResult result = myModelQuery.evaluate(context);
    if (result.getException() != null) {
      throw new Exception();
    }
    return (Integer) result.getValue();
  }
}
		To package a query set in a plug-in, an extension must be added in the file plugin.xml (contained in the query set's project). The extension point to use is: org.eclipse.gmt.modisco.infra.query.registration. Here is an example of a query set declaration:
 <plugin>
    <extension
          point="org.eclipse.gmt.modisco.infra.query.registration">
       <modelqueryset
             file="_example_jdkAndEclipseQuerySet.querySet">
       </modelqueryset>
    </extension>
 </plugin>
		Thanks to this extension declaration, The MoDisco project is ready to be exported as a plug-in.
			 
		
ModelQuerySet is the root of the query model. One root per query model is expected.
ModelQuerySet::name must be unique (in the Eclipse platform) and equal to the containing file name. We recommend to use a name prefix with a namespace, for example: org.eclipse.gmt.modisco.example1.querySet1.
ModelQuerySet::isEditable is true if the query can be edited. If the query is stored into a compiled file then ModelQuerySet::isEditable is false.
ModelQuerySet::getQuery(EString) returns the contained ModelQuery having the requested name.
ModelQuerySet::associatedMetamodels points to the meta-models used by the contained queries.
ModelQuerySet::queries refers to the contained queries.
ModelQuery is an abstract class representing a query.
ModelQuery::name is the query name. In each query set the query names must be unique.
ModelQuery::parameters a set of ModelQueryParameter instances describing the query parameters.
ModelQuery::returnType is an ecore::DataType representing the query return type.
ModelQuery::scope is the set of types on which the query is applicable. Those types are represented by ecore::DataType instances.
ModelQueryParameter is a class representing the query parameters.
ModelQueryParameter::type is an ecore::DataType representing the query parameter type.
ModelQueryParameter::name is the parameter name. In each query the parameter names must be unique.
ModelQuery::isExternalContextDependent must be true if two evaluations of the same query with the same context and parameters can return different results.
JavaModelQuery is a sub class of ModelQuery which points to a Java implemented query.
JavaModelQuery::implemenationClassName contains the qualified name of the class implementing the query. This class must be a sub class of org.eclipse.gmt.modisco.infra.query.core.java.IJavaModelQuery. The Java implementation class must be stored in the same plug-in (or plug-in project) as the query model.
OCLModelQuery::query is the OCL query string.