code: package it.unibz.inf.ontop.docker.mysql;
  
  /*
   * #%L
   * ontop-quest-owlapi
   * %%
   * Copyright (C) 2009 - 2014 Free University of Bozen-Bolzano
   * %%
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   * #L%
   */
  
  import it.unibz.inf.ontop.injection.OntopSQLOWLAPIConfiguration;
  
  import it.unibz.inf.ontop.owlapi.OntopOWLEngine;
  import it.unibz.inf.ontop.owlapi.connection.OntopOWLConnection;
  import it.unibz.inf.ontop.owlapi.connection.OntopOWLStatement;
  import it.unibz.inf.ontop.owlapi.impl.SimpleOntopOWLEngine;
  import it.unibz.inf.ontop.owlapi.resultset.OWLBindingSet;
  import it.unibz.inf.ontop.owlapi.resultset.TupleOWLResultSet;
  import org.junit.Test;
  import org.semanticweb.owlapi.model.OWLObject;
  
  
  public class QuestOWLExampleNotLatinTest {
  	
  	/*
  	 * Use the sample database using H2 from
  	 * https://github.com/ontop/ontop/wiki/InstallingTutorialDatabases
  	 * 
  	 * Please use the pre-bundled H2 server from the above link
  	 *
  	 * Test with not latin Character
  	 * 
  	 */
  	private static final String owlFile = "/mysql/example/exampleBooksNotLatin.owl";
  	private static final String obdaFile = "/mysql/example/exampleBooksNotLatin.obda";
  	private static final String propertyFile = "/mysql/example/exampleBooksNotLatin.properties";
  
      @Test
  	public void runQuery() throws Exception {
  
  		String owlFileName =  this.getClass().getResource(owlFile).toString();
  		String obdaFileName =  this.getClass().getResource(obdaFile).toString();
  		String propertyFileName =  this.getClass().getResource(propertyFile).toString();
  
  		/*
  		 * Create the instance of Quest OWL reasoner.
  		 */
          OntopSQLOWLAPIConfiguration config = OntopSQLOWLAPIConfiguration.defaultBuilder()
  				.nativeOntopMappingFile(obdaFileName)
  				.ontologyFile(owlFileName)
  				.propertyFile(propertyFileName)
  				.enableTestMode()
  				.build();
          OntopOWLEngine reasoner = new SimpleOntopOWLEngine(config);
  
  		/*
  		 * Prepare the data connection for querying.
  		 */
  		OntopOWLConnection conn = reasoner.getConnection();
  		OntopOWLStatement st = conn.createStatement();
  
  		/*
  		 * Get the book information that is stored in the database
  		 */
  		String sparqlQuery =
  				"PREFIX : <http://meraka/moss/exampleBooks.owl#> \n" +
  				"SELECT DISTINCT ?x ?title ?author ?y ?genre ?edition \n" +
  				"WHERE { ?x a :книга; :title ?title; :النوع ?genre; :writtenBy ?y; :hasÉdition ?z. \n" +
  				"		 ?y a :作者; :name ?author. \n" +
  				"		 ?z a :Édition; :editionNumber ?edition }";
  
  		try {
              long t1 = System.currentTimeMillis();
  			TupleOWLResultSet rs = st.executeSelectQuery(sparqlQuery);
  			while (rs.hasNext()) {
  				final OWLBindingSet bindingSet = rs.next();
  				System.out.print(bindingSet + "\n");
  			}
  			rs.close();
              long t2 = System.currentTimeMillis();
  
  			/*
  			 * Print the query summary
  			 */
  			OntopOWLStatement qst = st;
  
  			System.out.println();
  			System.out.println("The input SPARQL query:");
  			System.out.println("=======================");
  			System.out.println(sparqlQuery);
  			System.out.println();
  			
  			System.out.println("The output SQL query:");
  			System.out.println("=====================");
  			System.out.println(qst.getExecutableQuery(sparqlQuery));
  
              System.out.println("Query Execution Time:");
              System.out.println("=====================");
              System.out.println((t2-t1) + "ms");
  			
  		} finally {
  			
  			/*
  			 * Close connection and resources
  			 */
  			if (st != null && !st.isClosed()) {
  				st.close();
  			}
  			if (conn != null && !conn.isClosed()) {
  				conn.close();
  			}
  			reasoner.close();
  		}
  	}
  
  	/**
  	 * Main client program
  	 */
  	public static void main(String[] args) {
  		try {
  			QuestOWLExampleNotLatinTest example = new QuestOWLExampleNotLatinTest();
  			example.runQuery();
  		} catch (Exception e) {
  			e.printStackTrace();
  		}
  	}
  }
  