package injection.sample3_RDQL_Injection;

import injection.SampleBase;

import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.query.Syntax;
import com.hp.hpl.jena.rdf.model.Model;

public class Sample3code extends SampleBase {
	private final String FILE_PATH = "files/injection.owl";
	
	public static void main(String [] args) throws Exception{
		Sample3code sample = new Sample3code();
		String result = sample.run("Pablo Orduna");
		System.out.println(result);
	}
	
	public String run(String name) throws Exception{
		Model model = this.loadModel(FILE_PATH);
		
		String queryString = 
			"SELECT ?name1 " +
			"WHERE " +
			"      (?p1, <rdf:type>, <injection:Person>), " +
			"      (?p2, <rdf:type>, <injection:Person>), " +
			"      (?p1, <injection:fullName>, '" + name + "'), " +
			"      (?p1, <injection:isFriendOf>, ?p2), " +
			"      (?p1, <injection:fullName>, ?name1), " +
			"      (?p2, <injection:fullName>, ?name2) " +
			" " +
			"USING injection for <http://www.morelab.deusto.es/injection.owl#>, " +
			"      rdf for <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n";
		
		Query query = QueryFactory.create(queryString, Syntax.syntaxRDQL);
		QuerySolution solution = this.retrieveFirstResult(query, model);
		if(solution == null)
			return null;
		
		return solution.getLiteral("name1").getString();
	}
}
