diff --git a/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Constraint.kt b/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Constraint.kt
index 2358dba0672c0a5cb276b7974ed84b722257983a..bdb8639d12442d5184d6446c85d6d7cb2017db3e 100644
--- a/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Constraint.kt
+++ b/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Constraint.kt
@@ -24,6 +24,7 @@ class Constraint(): Labelled {
         CANDIDATE_KEY,
         SURROGATE_KEY,
         FUNCTIONAL,
+        MULTIVALUED,
         DOUBLE_INCLUSION,
         INCLUSION,
         PARTITION,
diff --git a/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Schema.kt b/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Schema.kt
index ac679a190f8a59ea1e7c263675f7ce1a2b8dd446..03ade1bda12aa05111322d5aff675b1fa50f7033 100644
--- a/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Schema.kt
+++ b/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Schema.kt
@@ -132,6 +132,12 @@ class Schema () {
         return addFunctional(tableName,setExpression)
     }
 
+    fun addMultivalued(commandArgs:String): Schema {
+        val tableName:String = commandArgs.split(":")[0]
+        val setExpression: String= commandArgs.split(":")[1]
+        return addMultivalued(tableName,setExpression)
+    }
+
     fun addTable(commandArgs:String) : Schema {
         val table = SchemaCmdParser.parseTable(commandArgs)
         tables().add(table)
@@ -176,6 +182,18 @@ class Schema () {
         return this
     }
 
+    fun addMultivalued(tableName:String, setExpression: String): Schema {
+        val constraintsToAdd = Constraint.set(setExpression)
+        for (constraint in constraintsToAdd) {
+            constraint.name=tableName+".multivalued"
+            constraint.type=Constraint.TYPE.MULTIVALUED.name
+            constraint.source.table=tableName
+            constraint.target.table=tableName
+        }
+        constraints().addAll(constraintsToAdd)
+        return this
+    }
+
     fun addKey(commandArgs:String):Schema {
         val tableName:String = commandArgs.split(":")[0]
         val attributeNames = commandArgs.split(":")[1]