// Path: src/main/java/org/nanopub/Nanopub.java
// public interface Nanopub {
// 
// 	// URIs in the nanopub namespace:
// 	public static final IRI NANOPUB_TYPE_URI = SimpleValueFactory.getInstance().createIRI("http://www.nanopub.org/nschema#Nanopublication");
// 	public static final IRI HAS_ASSERTION_URI = SimpleValueFactory.getInstance().createIRI("http://www.nanopub.org/nschema#hasAssertion");
// 	public static final IRI HAS_PROVENANCE_URI = SimpleValueFactory.getInstance().createIRI("http://www.nanopub.org/nschema#hasProvenance");
// 	public static final IRI HAS_PUBINFO_URI = SimpleValueFactory.getInstance().createIRI("http://www.nanopub.org/nschema#hasPublicationInfo");
// 
// 	// URIs that link nanopublications:
// 	public static final IRI SUPERSEDES = SimpleValueFactory.getInstance().createIRI("http://purl.org/nanopub/x/supersedes");
// 
// 	public IRI getUri();
// 
// 	public IRI getHeadUri();
// 
// 	public Set<Statement> getHead();
// 
// 	public IRI getAssertionUri();
// 
// 	public Set<Statement> getAssertion();
// 
// 	public IRI getProvenanceUri();
// 
// 	public Set<Statement> getProvenance();
// 
// 	public IRI getPubinfoUri();
// 
// 	public Set<Statement> getPubinfo();
// 
// 	public Set<IRI> getGraphUris();
// 
// 	// TODO: Now that we have SimpleCreatorPattern and SimpleTimestampPattern,
// 	// we might not need the following three methods anymore...
// 
// 	public Calendar getCreationTime();
// 
// 	public Set<IRI> getAuthors();
// 
// 	public Set<IRI> getCreators();
// 
// 	public int getTripleCount();
// 
// 	public long getByteCount();
// 
// }


import java.util.Map;
import org.eclipse.rdf4j.model.IRI;
import org.eclipse.rdf4j.model.Resource;
import org.eclipse.rdf4j.model.Statement;
import org.eclipse.rdf4j.model.Value;
import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
import org.eclipse.rdf4j.rio.RDFHandler;
import org.eclipse.rdf4j.rio.RDFHandlerException;
import org.nanopub.Nanopub;
package org.nanopub.trusty;



/**
 * You can use temporary URIs for your nanopublications that start with
 * "http://purl.org/nanopub/temp/". These then become "http://purl.org/np/ARTIFACTCODE-PLACEHOLDER/"
 * before being transformed to trusty nanopublications, and as final trusty nanopublications have
 * the actual artifact code instead of the placeholder.
 *
 * @author Tobias Kuhn
 */
public class TempUriReplacer implements RDFHandler {

	public static final String tempUri = "http://purl.org/nanopub/temp/";
	public static final String normUri = "http://purl.org/np/ARTIFACTCODE-PLACEHOLDER/";

	private String uriPrefix;
	private RDFHandler nestedHandler;
	private Map<Resource,IRI> transformMap;

// Path: src/main/java/org/nanopub/Nanopub.java
// public interface Nanopub {
// 
// 	// URIs in the nanopub namespace:
// 	public static final IRI NANOPUB_TYPE_URI = SimpleValueFactory.getInstance().createIRI("http://www.nanopub.org/nschema#Nanopublication");
// 	public static final IRI HAS_ASSERTION_URI = SimpleValueFactory.getInstance().createIRI("http://www.nanopub.org/nschema#hasAssertion");
// 	public static final IRI HAS_PROVENANCE_URI = SimpleValueFactory.getInstance().createIRI("http://www.nanopub.org/nschema#hasProvenance");
// 	public static final IRI HAS_PUBINFO_URI = SimpleValueFactory.getInstance().createIRI("http://www.nanopub.org/nschema#hasPublicationInfo");
// 
// 	// URIs that link nanopublications:
// 	public static final IRI SUPERSEDES = SimpleValueFactory.getInstance().createIRI("http://purl.org/nanopub/x/supersedes");
// 
// 	public IRI getUri();
// 
// 	public IRI getHeadUri();
// 
// 	public Set<Statement> getHead();
// 
// 	public IRI getAssertionUri();
// 
// 	public Set<Statement> getAssertion();
// 
// 	public IRI getProvenanceUri();
// 
// 	public Set<Statement> getProvenance();
// 
// 	public IRI getPubinfoUri();
// 
// 	public Set<Statement> getPubinfo();
// 
// 	public Set<IRI> getGraphUris();
// 
// 	// TODO: Now that we have SimpleCreatorPattern and SimpleTimestampPattern,
// 	// we might not need the following three methods anymore...
// 
// 	public Calendar getCreationTime();
// 
// 	public Set<IRI> getAuthors();
// 
// 	public Set<IRI> getCreators();
// 
// 	public int getTripleCount();
// 
// 	public long getByteCount();
// 
// }


// Path: src/main/java/org/nanopub/trusty/TempUriReplacer.java
import java.util.Map;
import org.eclipse.rdf4j.model.IRI;
import org.eclipse.rdf4j.model.Resource;
import org.eclipse.rdf4j.model.Statement;
import org.eclipse.rdf4j.model.Value;
import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
import org.eclipse.rdf4j.rio.RDFHandler;
import org.eclipse.rdf4j.rio.RDFHandlerException;
import org.nanopub.Nanopub;

package org.nanopub.trusty;



/**
 * You can use temporary URIs for your nanopublications that start with
 * "http://purl.org/nanopub/temp/". These then become "http://purl.org/np/ARTIFACTCODE-PLACEHOLDER/"
 * before being transformed to trusty nanopublications, and as final trusty nanopublications have
 * the actual artifact code instead of the placeholder.
 *
 * @author Tobias Kuhn
 */
public class TempUriReplacer implements RDFHandler {

	public static final String tempUri = "http://purl.org/nanopub/temp/";
	public static final String normUri = "http://purl.org/np/ARTIFACTCODE-PLACEHOLDER/";

	private String uriPrefix;
	private RDFHandler nestedHandler;
	private Map<Resource,IRI> transformMap;

	public TempUriReplacer(Nanopub np, RDFHandler nestedHandler, Map<Resource,IRI> transformMap) {