add toValidName
diff --git a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/ManagementType.scala b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/ManagementType.scala
index 1475280..1275ca7 100644
--- a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/ManagementType.scala
+++ b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/ManagementType.scala
@@ -68,8 +68,8 @@
   import org.apache.s2graph.graphql.types.StaticTypes._
 
   lazy val serviceColumnOnServiceWithPropInputObjectFields = repo.services().map { service =>
-    InputField(service.serviceName, OptionInputType(InputObjectType(
-      s"Input_${service.serviceName}_ServiceColumn_Props",
+    InputField(service.serviceName.toValidName, OptionInputType(InputObjectType(
+      s"Input_${service.serviceName.toValidName}_ServiceColumn_Props",
       description = "desc here",
       fields = List(
         InputField("columnName", makeServiceColumnEnumTypeOnService(service)),
@@ -79,8 +79,8 @@
   }
 
   lazy val serviceColumnOnServiceInputObjectFields = repo.services().map { service =>
-    InputField(service.serviceName, OptionInputType(InputObjectType(
-      s"Input_${service.serviceName}_ServiceColumn",
+    InputField(service.serviceName.toValidName, OptionInputType(InputObjectType(
+      s"Input_${service.serviceName.toValidName}_ServiceColumn",
       description = "desc here",
       fields = List(
         InputField("columnName", makeServiceColumnEnumTypeOnService(service))
@@ -94,14 +94,14 @@
       s"Enum_${service.serviceName}_ServiceColumn",
       description = Option("desc here"),
       values = dummyEnum +: columns.map { column =>
-        EnumValue(column.columnName, value = column.columnName)
+        EnumValue(column.columnName.toValidName, value = column.columnName.toValidName)
       }
     )
   }
 
   lazy val labelPropsInputFields = repo.labels().map { label =>
-    InputField(label.label, OptionInputType(InputObjectType(
-      s"Input_${label.label}_props",
+    InputField(label.label.toValidName, OptionInputType(InputObjectType(
+      s"Input_${label.label.toValidName}_props",
       description = "desc here",
       fields = List(
         InputField("props", ListInputType(InputPropType))
@@ -136,7 +136,7 @@
     description = Option("desc here"),
     values =
       dummyEnum +: repo.services().map { service =>
-        EnumValue(service.serviceName, value = service.serviceName)
+        EnumValue(service.serviceName.toValidName, value = service.serviceName)
       }
   )
 
@@ -145,7 +145,7 @@
     description = Option("desc here"),
     values =
       dummyEnum +: repo.serviceColumns().map { serviceColumn =>
-        EnumValue(serviceColumn.columnName, value = serviceColumn.columnName)
+        EnumValue(serviceColumn.columnName.toValidName, value = serviceColumn.columnName)
       }
   )
 
@@ -154,7 +154,7 @@
     description = Option("desc here"),
     values =
       dummyEnum +: repo.labels().map { label =>
-        EnumValue(label.label, value = label.label)
+        EnumValue(label.label.toValidName, value = label.label)
       }
   )
 
@@ -222,7 +222,7 @@
     arguments = List(ServiceNameArg),
     resolve = { c =>
       c.argOpt[String]("name") match {
-        case Some(name) => c.ctx.services().filter(_.serviceName == name)
+        case Some(name) => c.ctx.services().filter(_.serviceName.toValidName == name)
         case None => c.ctx.services()
       }
     }
diff --git a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala
index 1324126..a18fc4e 100644
--- a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala
+++ b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala
@@ -72,24 +72,24 @@
     val inputFields = service.serviceColumns(false).map { serviceColumn =>
       val idField = InputField("id", toScalarType(serviceColumn.columnType))
       val propFields = serviceColumn.metasWithoutCache.filter(ColumnMeta.isValid).map { lm =>
-        InputField(lm.name, OptionInputType(toScalarType(lm.dataType)))
+        InputField(lm.name.toValidName, OptionInputType(toScalarType(lm.dataType)))
       }
 
       val vertexMutateType = InputObjectType[Map[String, Any]](
-        s"Input_${service.serviceName}_${serviceColumn.columnName}_vertex_mutate",
+        s"Input_${service.serviceName.toValidName}_${serviceColumn.columnName.toValidName}_vertex_mutate",
         description = "desc here",
         () => idField :: propFields
       )
 
-      InputField[Any](serviceColumn.columnName, OptionInputType(ListInputType(vertexMutateType)))
+      InputField[Any](serviceColumn.columnName.toValidName, OptionInputType(ListInputType(vertexMutateType)))
     }
 
     inputFields
   }
 
   def makeInputFieldsOnLabel(label: Label): Seq[InputField[Any]] = {
-    val propFields = label.labelMetaSet.toList.map { lm =>
-      InputField(lm.name, OptionInputType(toScalarType(lm.dataType)))
+    val propFields = label.labelMetaSet.toList.filterNot(_.name == "timestamp").map { lm =>
+      InputField(lm.name.toValidName, OptionInputType(toScalarType(lm.dataType)))
     }
 
     val labelFields = List(
@@ -112,7 +112,7 @@
     val inLabels = diffLabel.filter(l => column == l.tgtColumn).distinct.toList
     val inOutLabels = sameLabel.filter(l => l.srcColumn == column && l.tgtColumn == column)
 
-    lazy val columnFields = (reservedFields ++ columnMetasKv).map { case (k, v) => makeGraphElementField(k, v) }
+    lazy val columnFields = (reservedFields ++ columnMetasKv).map { case (k, v) => makeGraphElementField(k.toValidName, v) }
 
     lazy val outLabelFields: List[Field[GraphRepository, Any]] = outLabels.map(l => makeLabelField("out", l, allLabels))
     lazy val inLabelFields: List[Field[GraphRepository, Any]] = inLabels.map(l => makeLabelField("in", l, allLabels))
@@ -132,7 +132,7 @@
         () => fields[GraphRepository, Any](serviceColumnFields: _*)
       )
 
-      Field(column.columnName,
+      Field(column.columnName.toValidName,
         ListType(ColumnType),
         arguments = List(
           Argument("id", OptionInputType(toScalarType(column.columnType))),
@@ -162,11 +162,11 @@
     val column = if (dir == "out") label.tgtColumn else label.srcColumn
 
     lazy val labelFields: List[Field[GraphRepository, Any]] =
-      (labelReserved ++ labelProps).map { case (k, v) => makeGraphElementField(k, v) }
+      (labelReserved ++ labelProps).map { case (k, v) => makeGraphElementField(k.toValidName, v) }
 
-    lazy val labelPropField = wrapField(s"Label_${label.label}_props", "props", labelFields)
+    lazy val labelPropField = wrapField(s"Label_${label.label.toValidName}_props", "props", labelFields)
 
-    lazy val labelColumnType = ObjectType(s"Label_${label.label}_${column.columnName}",
+    lazy val labelColumnType = ObjectType(s"Label_${label.label.toValidName}_${column.columnName.toValidName}",
       () => makeServiceColumnFields(column, allLabels)
     )
 
@@ -178,7 +178,7 @@
     })
 
     lazy val EdgeType = ObjectType(
-      s"Label_${label.label}_${column.columnName}_${dir}",
+      s"Label_${label.label.toValidName}_${column.columnName.toValidName}_${dir}",
       () => fields[GraphRepository, Any](
         List(serviceColumnField, labelPropField) ++ labelFields.filterNot(_.name == column.columnName): _*)
     )
@@ -190,11 +190,11 @@
     }
 
     val idxNames = label.indices.map { idx =>
-      EnumValue(idx.name, value = idx.name)
+      EnumValue(idx.name.toValidName, value = idx.name.toValidName)
     }
 
     val indexEnumType = EnumType(
-      s"Label_Index_${label.label}",
+      s"Label_Index_${label.label.toValidName}",
       description = Option("desc here"),
       values = idxNames
     )
@@ -207,7 +207,7 @@
     )
 
     lazy val edgeTypeField: Field[GraphRepository, Any] = Field(
-      s"${label.label}",
+      s"${label.label.toValidName}",
       ListType(EdgeType),
       arguments = dirArgs ++ paramArgs,
       description = Some("fetch edges"),
@@ -239,12 +239,12 @@
     lazy val serviceFields = DummyObjectTypeField :: makeServiceField(service, repo.labels())
 
     lazy val ServiceType = ObjectType(
-      s"Service_${service.serviceName}",
+      s"Service_${service.serviceName.toValidName}",
       fields[GraphRepository, Any](serviceFields: _*)
     )
 
     Field(
-      service.serviceName,
+      service.serviceName.toValidName,
       ServiceType,
       description = Some(s"serviceName: ${service.serviceName}"),
       resolve = _ => service
@@ -259,10 +259,10 @@
       val serviceFields = DummyInputField +: makeInputFieldsOnService(service)
 
       val ServiceInputType = InputObjectType[List[AddVertexParam]](
-        s"Input_vertex_${service.serviceName}_param",
+        s"Input_vertex_${service.serviceName.toValidName}_param",
         () => serviceFields.toList
       )
-      Argument(service.serviceName, OptionInputType(ServiceInputType))
+      Argument(service.serviceName.toValidName, OptionInputType(ServiceInputType))
     }
 
     serviceArguments
@@ -272,11 +272,11 @@
     val labelArguments = repo.labels().map { label =>
       val labelFields = DummyInputField +: makeInputFieldsOnLabel(label)
       val labelInputType = InputObjectType[AddEdgeParam](
-        s"Input_label_${label.label}_param",
+        s"Input_label_${label.label.toValidName}_param",
         () => labelFields.toList
       )
 
-      Argument(label.label, OptionInputType(ListInputType(labelInputType)))
+      Argument(label.label.toValidName, OptionInputType(ListInputType(labelInputType)))
     }
 
     labelArguments
diff --git a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/package.scala b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/package.scala
index 1f43edd..bea8bc4 100644
--- a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/package.scala
+++ b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/package.scala
@@ -31,12 +31,28 @@
 
   def toScalarType(from: String): ScalarType[_] = from match {
     case "string" => StringType
-    case "int" => IntType
-    case "integer" => IntType
+    case "int" | "integer" => IntType
     case "long" => LongType
-    case "float" => FloatType
-    case "double" => FloatType
-    case "boolean" => BooleanType
-    case "bool" => BooleanType
+    case "float" | "double" => FloatType
+    case "bool" | "boolean" => BooleanType
   }
+
+  val validateRegEx = "/^[_a-zA-Z][_a-zA-Z0-9]*$/.".r
+
+  val ints = (0 to 9).map(_.toString).toSet
+
+  implicit class StringOps(val s: String) extends AnyVal {
+    def toValidName: String = {
+      val newS = s
+        .replaceAll("-", "_HYPHEN_")
+        .replaceAll("-", "_DASH_")
+        .replaceAll(":", "_COLON_")
+        .replaceAll(" ", "_SPACE_")
+        .trim
+
+      if (ints.contains(newS.head.toString)) s"NUMBER_${newS}"
+      else newS
+    }
+  }
+
 }