A short evaluation of Bibframe against selected requirements:

Simple cardinality is covered by BIBFRAME:

"propertyTemplate": [
         { ... },
         {
              "propertyURI": "http://bibframe.org/vocab/titleStatement",
              "propertyLabel": "Title",
              "mandatory": "true",
              "repeatable": "true",
              "type": "literal"
         },
         { ... }
      ]

Allowed values are not covered by BIBFRAME. They may be introduced for valueConstraints as follows:

"propertyTemplates": [
         { ... },
         {
              "propertyURI": "http://bibframe.org/vocab/subject",
              "propertyLabel": "Subject",
              "type": "resource",
              "valueConstraint": {
                   "allowedValues": [ "value 1","value 2","value 3" ]
              }
         },
         { ... }
     ]

Valid datatypes may be covered by BIBFRAME as this is an implementation issue. One can state constraints on datatypes for literals in BIBFRAME:

"propertyTemplates": [
         { ... },
         {
              "propertyURI": "http://bibframe.org/vocab/vra/beginDate",
              "propertyLabel": "Begin Date",
              "type": "literal",
              "valueConstraint": {
                   "valueDataType": {
                       "dataTypeURI": "http://bibframe.org/vocab/proposed/ISO8601",
                       "dataTypeLabel": "ISO 8601",
                       "dataTypeLabelHint": "ISO"
                   }
              }
         },
         { ... }
      ]

What is needed here is to implement to check for each datatype if the literal is valid. Regular expressions may be used here in the background when SPARQL is used for the actual implementation.

Property/class grouping (e.g. propertyX is used for classY) is covered by BIBFRAME, as property templates are referenced within resource templates:

"resourceTemplate": [
    {
       "id": "bfp:Work:Book",
       "resourceLabel": "Book",
       "resourceURI": "http://bibframe.org/vocab/Text",
       "propertyTemplates": [
             { ... }
       ]
    }