package de.fuberlin.wiwiss.d2rq.engine;

import java.util.Collection;

import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.shared.PrefixMapping;
import com.hp.hpl.jena.shared.impl.PrefixMappingImpl;
import com.hp.hpl.jena.vocabulary.RDF;

import de.fuberlin.wiwiss.d2rq.D2RQTestSuite;
import de.fuberlin.wiwiss.d2rq.map.Mapping;
import de.fuberlin.wiwiss.d2rq.parser.MapParser;
import de.fuberlin.wiwiss.d2rq.vocab.D2RQ;
import de.fuberlin.wiwiss.d2rq.vocab.Test;

/**
 * Helper for loading mappings as test fixtures from N3 files.
 * 
 * @author Richard Cyganiak (richard@cyganiak.de)
 * @version $Id: MapFixture.java,v 1.1 2008/04/27 22:42:37 cyganiak Exp $
 */
public class MapFixture {
	private final static PrefixMapping prefixes = new PrefixMappingImpl() {{
		setNsPrefixes(PrefixMapping.Standard);
		setNsPrefix("d2rq", "http://www.wiwiss.fu-berlin.de/suhl/bizer/D2RQ/0.1#");
		setNsPrefix("jdbc", "http://d2rq.org/terms/jdbc/");
		setNsPrefix("test", "http://d2rq.org/terms/test#");
		setNsPrefix("ex", "http://example.org/");
		setNsPrefix("foaf", "http://xmlns.com/foaf/0.1/");
	}};
	
	public static PrefixMapping prefixes() {
		return prefixes;
	}
	
	public static Collection loadPropertyBridges(String mappingFileName) {
		Model m = ModelFactory.createDefaultModel();
		Resource dummyDB = m.getResource(Test.DummyDatabase.getURI());
		dummyDB.addProperty(RDF.type, D2RQ.Database);
		m.read(D2RQTestSuite.class.getResourceAsStream(mappingFileName), null, "N3");
		Mapping mapping = new MapParser(m, null).parse();
		return mapping.compiledPropertyBridges();
	}
}
