// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/constants/PropertyAllSomeValue.java
// public enum PropertyAllSomeValue {
// 	ALL, SOME;
// }
// 
// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/constants/PropertyType.java
// public class PropertyType {
// 	public static final String OBJECT = "owl:objectProperty";
// 	public static final String DATATYPE = "owl:datatypeProperty";
// 	public static final String SUBCLASS = "rdfs:SubClassOf";
// 	public static final String DISJOINT = "owl:disjointWith";
// 	public static final String RDF = "rdf:Property";
// 	public static final String ALL_VALUES = "owl:allValuesFrom";
// 	public static final String SOME_VALUES = "owl:someValuesFrom";
// 	public static final String TYPEOF = RDF;
// }
// 
// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/constants/VowlAttribute.java
// public enum VowlAttribute {
// 	INTERSECTION("intersection"),
// 	OBJECT("object"),
// 	DEPRECATED("deprecated"),
// 	EXTERNAL("external"),
// 	RDF("rdf"),
// 	UNION("union"),
// 	COMPLEMENT("complement"),
// 	DATATYPE("datatype"),
// 	TRANSITIVE("transitive"),
// 	FUNCTIONAL("functional"),
// 	INVERSE_FUNCTIONAL("inverse functional"),
// 	SYMMETRIC("symmetric"),
// 	EQUIVALENT("equivalent"),
// 	IRREFLEXIVE("irreflexive"),
// 	ASYMMETRIC("asymmetric"),
// 	REFLEXIVE("reflexive"),
// 	IMPORTED("external"),
// 	ANONYMOUS("anonymous"),
// 	DISJOINTUNION("disjointUnion"),
// 	KEY("key"),
// 	ALL_VALUES("allValues"),
// 	SOME_VALUES("someValues");
// 
// 	private final String value;
// 
// 	VowlAttribute(String value) {
// 
// 		this.value = value;
// 	}
// 
// 	@JsonValue
// 	public String getValue() {
// 		return value;
// 	}
// }
// 
// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/model/entities/HasReference.java
// public interface HasReference {
// 
// 	IRI getReferenceIri();
// 
// 	void setReferenceIri(IRI referenceIri);
// }


import de.uni_stuttgart.vis.vowl.owl2vowl.constants.PropertyAllSomeValue;
import de.uni_stuttgart.vis.vowl.owl2vowl.constants.PropertyType;
import de.uni_stuttgart.vis.vowl.owl2vowl.constants.VowlAttribute;
import de.uni_stuttgart.vis.vowl.owl2vowl.model.entities.HasReference;
import org.semanticweb.owlapi.model.IRI;
package de.uni_stuttgart.vis.vowl.owl2vowl.model.entities.properties;


public class DatatypeValueReference extends VowlDatatypeProperty implements HasReference {
	private PropertyAllSomeValue value;
	private IRI referenceIri;

	public DatatypeValueReference(IRI iri, IRI referencedIri) {
		super(iri);
		this.referenceIri = referencedIri;
	}

	public PropertyAllSomeValue getValue() {
		return value;
	}

	public void setValue(PropertyAllSomeValue value) {
		this.value = value;

		if (value == PropertyAllSomeValue.ALL) {
			addAttribute(VowlAttribute.ALL_VALUES);
// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/constants/PropertyAllSomeValue.java
// public enum PropertyAllSomeValue {
// 	ALL, SOME;
// }
// 
// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/constants/PropertyType.java
// public class PropertyType {
// 	public static final String OBJECT = "owl:objectProperty";
// 	public static final String DATATYPE = "owl:datatypeProperty";
// 	public static final String SUBCLASS = "rdfs:SubClassOf";
// 	public static final String DISJOINT = "owl:disjointWith";
// 	public static final String RDF = "rdf:Property";
// 	public static final String ALL_VALUES = "owl:allValuesFrom";
// 	public static final String SOME_VALUES = "owl:someValuesFrom";
// 	public static final String TYPEOF = RDF;
// }
// 
// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/constants/VowlAttribute.java
// public enum VowlAttribute {
// 	INTERSECTION("intersection"),
// 	OBJECT("object"),
// 	DEPRECATED("deprecated"),
// 	EXTERNAL("external"),
// 	RDF("rdf"),
// 	UNION("union"),
// 	COMPLEMENT("complement"),
// 	DATATYPE("datatype"),
// 	TRANSITIVE("transitive"),
// 	FUNCTIONAL("functional"),
// 	INVERSE_FUNCTIONAL("inverse functional"),
// 	SYMMETRIC("symmetric"),
// 	EQUIVALENT("equivalent"),
// 	IRREFLEXIVE("irreflexive"),
// 	ASYMMETRIC("asymmetric"),
// 	REFLEXIVE("reflexive"),
// 	IMPORTED("external"),
// 	ANONYMOUS("anonymous"),
// 	DISJOINTUNION("disjointUnion"),
// 	KEY("key"),
// 	ALL_VALUES("allValues"),
// 	SOME_VALUES("someValues");
// 
// 	private final String value;
// 
// 	VowlAttribute(String value) {
// 
// 		this.value = value;
// 	}
// 
// 	@JsonValue
// 	public String getValue() {
// 		return value;
// 	}
// }
// 
// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/model/entities/HasReference.java
// public interface HasReference {
// 
// 	IRI getReferenceIri();
// 
// 	void setReferenceIri(IRI referenceIri);
// }


// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/model/entities/properties/DatatypeValueReference.java
import de.uni_stuttgart.vis.vowl.owl2vowl.constants.PropertyAllSomeValue;
import de.uni_stuttgart.vis.vowl.owl2vowl.constants.PropertyType;
import de.uni_stuttgart.vis.vowl.owl2vowl.constants.VowlAttribute;
import de.uni_stuttgart.vis.vowl.owl2vowl.model.entities.HasReference;
import org.semanticweb.owlapi.model.IRI;

package de.uni_stuttgart.vis.vowl.owl2vowl.model.entities.properties;


public class DatatypeValueReference extends VowlDatatypeProperty implements HasReference {
	private PropertyAllSomeValue value;
	private IRI referenceIri;

	public DatatypeValueReference(IRI iri, IRI referencedIri) {
		super(iri);
		this.referenceIri = referencedIri;
	}

	public PropertyAllSomeValue getValue() {
		return value;
	}

	public void setValue(PropertyAllSomeValue value) {
		this.value = value;

		if (value == PropertyAllSomeValue.ALL) {
			addAttribute(VowlAttribute.ALL_VALUES);
			setType(PropertyType.ALL_VALUES);