package de.tu_dresden.lat.proofs.interfaces;

import java.util.List;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import de.tu_dresden.lat.proofs.data.Inference;
import de.tu_dresden.lat.proofs.json.JsonAxiom2StringConverter;
import de.tu_dresden.lat.proofs.json.JsonString2AxiomConverter;
import org.semanticweb.owlapi.model.OWLAxiom;

import com.fasterxml.jackson.annotation.JsonPropertyOrder;

/**
 * @author Christian Alrabbaa
 *
 */
@JsonDeserialize(as = Inference.class)
@JsonPropertyOrder({ "conclusion", "ruleName", "premises" })
public interface IInference {

	@JsonSerialize(converter = JsonAxiom2StringConverter.class)
	@JsonDeserialize(converter = JsonString2AxiomConverter.class)
	OWLAxiom getConclusion();

	String getRuleName();

	@JsonSerialize(contentConverter = JsonAxiom2StringConverter.class)
	@JsonDeserialize(contentConverter = JsonString2AxiomConverter.class)
	List<? extends OWLAxiom> getPremises();
}
