package org.openprovenance.prov.model;
/**
* <p> Interface for a PROV attribute-value pair.
* <p> Attribute-value pairs are meant to provide further descriptions to (most) {@link Statement}.
*
* @author lavm
*
*/
public interface Attribute extends TypedValue {
/**
* Enumerated type for all types of attributes. Some are predefined PROV attributes.
* All the others are classed as "OTHER".
*
* @author lavm
*
*/
public enum AttributeKind {
PROV_TYPE,
PROV_LABEL,
PROV_ROLE,
PROV_LOCATION,
PROV_VALUE,
PROV_KEY,
OTHER
}
public abstract QualifiedName getQualifiedName(AttributeKind kind);
public abstract AttributeKind getAttributeKind(QualifiedName q);
public abstract QualifiedName getElementName();
public abstract AttributeKind getKind();
/** Get the type of an Attribute
* @return possible object of {@link String}, {@link QualifiedName}, {@link LangString}
*/
public abstract Object getValue();
/** Get the type of an Attribute
* @return possible instance of {@link QualifiedName}
*/
public abstract QualifiedName getType();
/** A method to generate the prov-n representation of an attribute ex:attr="value" %% xsd:type */
public abstract String toNotationString();
/** Returns the value of an Attribute as a Java Object. */
public Object getConvertedValue();
}