Sample validation rules XML

When adding validation rules for an algorithm function (standardization, comparison, bucketing, or generation), use this sample XML as a reference.

Validation rules are added to the algorithm-rules.xml file, located in the workbench install path\plugins\com.initiatesystems.workbench_11.6.x\rules directory. The following sample XML shows the validation rule syntax as well as the structure of the complete XML document after the InfoSphere® MDM Workbench algorithm editor retrieves it from the operational server database:

  <?xml version="1.0" encoding="UTF-8" ?> 
- <algorithm-rules version="1.0">
- <stdFunctions>
- <stdFunction name="ATTR" attrTypes="ANY" equiStrCode="Y" output="SIMPLE" 
anonStrCode="Y" cmapStrCode="N">
  <fldArgs maxFields="1" allowed="ANY" /> 
  </stdFunction>
- <stdFunction name="ATTRA" attrTypes="ANY" equiStrCode="Y" output="SIMPLE" 
anonStrCode="Y" cmapStrCode="N">
  <fldArgs maxFields="1" allowed="ANY" /> 
  </stdFunction>
- <stdFunction name="ATTRN" attrTypes="ANY" equiStrCode="Y" output="SIMPLE" 
anonStrCode="Y" cmapStrCode="N">
  <fldArgs maxFields="1" allowed="ANY" /> 
  </stdFunction>
+ <stdFunction name="EMAIL" attrTypes="MEMATTR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="attrval" /> 
  </stdFunction>
- <stdFunction name="PXNM" attrTypes="MEMNAME" equiStrCode="N" 
output="STRUCTURED" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs minFields="1" maxFields="6" 
allowed="onmlast,onmfirst,onmmiddle,onmprefix,onmsuffix,onmdegree~onmlast,o
nmfirst,onmmiddle,onmprefix,onmsuffix,onmtitle" /> 
  </stdFunction>
- <stdFunction name="BXNM" attrTypes="MEMNAME~MEMATTR" equiStrCode="N" 
output="STRUCTURED" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs maxFields="6" allowed="ANY" /> 
  </stdFunction>
- <stdFunction name="CXNM" attrTypes="MEMNAME~MEMATTR" equiStrCode="N" 
output="STRUCTURED" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs maxFields="1" allowed="ANY" /> 
  </stdFunction>
- <stdFunction name="USADDR" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs minFields="1" maxFields="4" 
allowed="stline1,stline2,stline3,stline4" /> 
  </stdFunction>
- <stdFunction name="CNADDR" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs minFields="1" maxFields="4" 
allowed="stline1,stline2,stline3,stline4" /> 
  </stdFunction>
- <stdFunction name="USADDR2" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs minFields="1" maxFields="7" 
allowed="stline1,stline2,stline3,stline4,city,state,zipcode" /> 
  </stdFunction>
- <stdFunction name="CNADDR2" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs minFields="1" maxFields="7" 
allowed="stline1,stline2,stline3,stline4,city,state,zipcode" /> 
  </stdFunction>
- <stdFunction name="NAADDR2" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs minFields="1" maxFields="7" 
allowed="stline1,stline2,stline3,stline4,city,state,zipcode" /> 
  </stdFunction>
- <stdFunction name="UKADDR2" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs minFields="1" maxFields="7" 
allowed="stline1,stline2,stline3,stline4,city,state,zipcode" /> 
  </stdFunction>
- <stdFunction name="INTADDR2" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs minFields="1" maxFields="7" 
allowed="stline1,stline2,stline3,stline4,city,state,zipcode" /> 
  </stdFunction>
- <stdFunction name="USZIP" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="zipcode" /> 
  </stdFunction>
- <stdFunction name="CNZIP" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="zipcode" /> 
  </stdFunction>
- <stdFunction name="NAZIP" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="zipcode" /> 
  </stdFunction>
- <stdFunction name="UKZIP" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="zipcode" /> 
  </stdFunction>
- <stdFunction name="INTZIP" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="zipcode" /> 
  </stdFunction>
- <stdFunction name="PHONEEND" attrTypes="MEMPHONE" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="phnumber" /> 
  </stdFunction>
- <stdFunction name="PHONE1" attrTypes="MEMPHONE" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="phnumber" /> 
  </stdFunction>
- <stdFunction name="PHONE2" attrTypes="MEMPHONE" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs minFields="1" maxFields="3" allowed="pharea,phnumber,phextn" /> 
  </stdFunction>
- <stdFunction name="INTPHONE1" attrTypes="MEMPHONE" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs minFields="1" maxFields="3" allowed="phicc,pharea,phnumber" /> 
  </stdFunction>
- <stdFunction name="INTPHONE2" attrTypes="MEMPHONE" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs minFields="1" maxFields="3" allowed="phicc,pharea,phnumber" /> 
  </stdFunction>
- <stdFunction name="AUSTPH" attrTypes="MEMPHONE" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="phnumber" /> 
  </stdFunction>
- <stdFunction name="AUSTPOST" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="zipcode" /> 
  </stdFunction>
- <stdFunction name="IDENT1" attrTypes="MEMIDENT" equiStrCode="Y" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="idnumber" /> 
  </stdFunction>
- <stdFunction name="IDENT1A" attrTypes="MEMIDENT" equiStrCode="Y" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="idnumber" /> 
  </stdFunction>
- <stdFunction name="IDENT1N" attrTypes="MEMIDENT" equiStrCode="Y" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="idnumber" /> 
  </stdFunction>
- <stdFunction name="IDENT2" attrTypes="MEMIDENT" equiStrCode="Y" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="idnumber" /> 
  </stdFunction>
- <stdFunction name="IDENT2A" attrTypes="MEMIDENT" equiStrCode="Y" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="idnumber" /> 
  </stdFunction>
- <stdFunction name="IDENT2N" attrTypes="MEMIDENT" equiStrCode="Y" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="idnumber" /> 
  </stdFunction>
- <stdFunction name="DATE1" attrTypes="MEMDATE" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="dateval" /> 
  </stdFunction>
- <stdFunction name="ABSCODE" attrTypes="MEMATTR" equiStrCode="N" 
output="STRUCTURED" anonStrCode="N" cmapStrCode="N">
  <fldArgs allowed="attrval" /> 
  </stdFunction>
- <stdFunction name="CJKCXNM" attrTypes="MEMNAME~MEMATTR" equiStrCode="N" 
output="STRUCTURED" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs maxFields="1" allowed="ANY" /> 
  </stdFunction>
- <stdFunction name="HAIRCOLOR" attrTypes="ANY" equiStrCode="Y" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs maxFields="1" allowed="ANY" /> 
  </stdFunction>
- <stdFunction name="EYECOLOR" attrTypes="ANY" equiStrCode="Y" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs maxFields="1" allowed="ANY" /> 
  </stdFunction>
- <stdFunction name="GEO" attrTypes="MEMATTR~MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="N" cmapStrCode="N">
  <fldArgs maxFields="1" allowed="ANY" /> 
  </stdFunction>
- <stdFunction name="RACE" attrTypes="ANY" equiStrCode="Y" output="SIMPLE" 
anonStrCode="Y" cmapStrCode="N">
  <fldArgs maxFields="1" allowed="ANY" /> 
  </stdFunction>
- <stdFunction name="HEIGHT" attrTypes="MEMATTR" equiStrCode="N" 
output="SIMPLE" anonStrCode="N" cmapStrCode="N">
  <fldArgs allowed="attrval" /> 
  </stdFunction>
- <stdFunction name="WEIGHT" attrTypes="MEMATTR" equiStrCode="N" 
output="SIMPLE" anonStrCode="N" cmapStrCode="N">
  <fldArgs allowed="attrval" /> 
  </stdFunction>
- <stdFunction name="AGE" attrTypes="MEMATTR" equiStrCode="N" 
output="SIMPLE" anonStrCode="N" cmapStrCode="N">
  <fldArgs allowed="attrval" /> 
  </stdFunction>
- <stdFunction name="GRDATE" attrTypes="MEMDATE" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs allowed="dateval" /> 
  </stdFunction>
- <stdFunction name="DATE2" attrTypes="MEMATTR~MEMDATE" equiStrCode="Y" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs maxFields="1" allowed="ANY" /> 
  </stdFunction>
- <stdFunction name="UCSFREQXNM" attrTypes="MEMNAME~MEMATTR" 
equiStrCode="N" output="STRUCTURED" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs maxFields="4" allowed="ANY" /> 
  </stdFunction>
- <stdFunction name="UCSFREQADDR" attrTypes="MEMADDR" equiStrCode="N" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="Y">
  <fldArgs minFields="1" maxFields="7" 
allowed="stline1,stline2,stline3,stline4,city,state,zipcode" /> 
  </stdFunction>
- <stdFunction name="PASSTHRU" attrTypes="ANY" equiStrCode="Y" 
output="SIMPLE" anonStrCode="Y" cmapStrCode="N">
  <fldArgs maxFields="1" allowed="ANY" /> 
  </stdFunction>
  </stdFunctions>
- <cmpFunctions>
- <cmpFunction name="DR1D1A">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR2D1A">
  <input role="1" allowed="SIMPLE" /> 
  <input role="2" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR3D1A">
  <input role="1" allowed="SIMPLE" /> 
  <input role="2" allowed="SIMPLE" /> 
  <input role="3" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR4D1A">
  <input role="1" allowed="SIMPLE" /> 
  <input role="2" allowed="SIMPLE" /> 
  <input role="3" allowed="SIMPLE" /> 
  <input role="4" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR1D1B">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR2D1B">
  <input role="1" allowed="SIMPLE" /> 
  <input role="2" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR3D1B">
  <input role="1" allowed="SIMPLE" /> 
  <input role="2" allowed="SIMPLE" /> 
  <input role="3" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR4D1B">
  <input role="1" allowed="SIMPLE" /> 
  <input role="2" allowed="SIMPLE" /> 
  <input role="3" allowed="SIMPLE" /> 
  <input role="4" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR1D1C">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR2D1C">
  <input role="1" allowed="SIMPLE" /> 
  <input role="2" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR3D1C">
  <input role="1" allowed="SIMPLE" /> 
  <input role="2" allowed="SIMPLE" /> 
  <input role="3" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR4D1C">
  <input role="1" allowed="SIMPLE" /> 
  <input role="2" allowed="SIMPLE" /> 
  <input role="3" allowed="SIMPLE" /> 
  <input role="4" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR1D2A">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR1D3A">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR1D4A">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR1D2B">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR1D3B">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR1D4B">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR1D2C">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR1D3C">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="DR1D4C">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="EQVD">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="EQVN">
  <input role="1" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="USZIP">
  <input role="1" allowed="USZIP" /> 
  </cmpFunction>
- <cmpFunction name="CXNM">
  <input role="1" allowed="CXNM~UCSFREQXNM" /> 
  </cmpFunction>
- <cmpFunction name="HXW">
  <input role="1" allowed="HEIGHT" /> 
  <input role="2" allowed="WEIGHT" /> 
  </cmpFunction>
- <cmpFunction name="ATTR2S">
  <input role="1" allowed="SIMPLE" /> 
  <input role="2" allowed="SIMPLE" /> 
  </cmpFunction>
- <cmpFunction name="VR1D1C_DATE">
  <input role="1" allowed="DATE1~GRDATE~ATTR" /> 
  </cmpFunction>
- <cmpFunction name="VR1D1C_DOBA">
  <input role="1" allowed="DATE1~GRDATE~AGE" /> 
  </cmpFunction>
- <cmpFunction name="DATE">
  <input role="1" allowed="DATE1~GRDATE~ATTR" /> 
  </cmpFunction>
- <cmpFunction name="DOBA">
  <input role="1" allowed="DATE1~GRDATE~AGE" /> 
  </cmpFunction>
- <cmpFunction name="PXNM">
  <input role="1" allowed="PXNM" /> 
  </cmpFunction>
- <cmpFunction name="QXNM">
  <input role="1" allowed="PXNM" /> 
  </cmpFunction>
- <cmpFunction name="CXNM_CS">
  <input role="1" allowed="CXNM~UCSFREQXNM" /> 
  <input role="2" 
allowed="USADDR2~CNADDR2~NAADDR2~UKADDR2~INTADDR2~UCSFREQADDR" /> 
  </cmpFunction>
- <cmpFunction name="BXNM">
  <input role="1" allowed="BXNM" /> 
  </cmpFunction>
- <cmpFunction name="AXP">
  <input role="1" 
allowed="USADDR2~CNADDR2~NAADDR2~UKADDR2~INTADDR2~UCSFREQADDR" /> 
  <input role="2" 
allowed="PHONE1~PHONE2~INTPHONE1~INTPHONE2~PHONEEND~AUSTPH" /> 
  </cmpFunction>
  <cmpFunction name="FPF" /> 
- <cmpFunction name="FPF2">
  <input role="1" allowed="DATE1~GRDATE" /> 
  </cmpFunction>
- <cmpFunction name="GEO">
  <input role="1" allowed="GEO" /> 
  </cmpFunction>
- <cmpFunction name="DR1D1A_SRC">
  <input role="1" allowed="IDENT2~IDENT2N~IDENT2A" /> 
  </cmpFunction>
- <cmpFunction name="DR1D1B_SRC">
  <input role="1" allowed="IDENT2~IDENT2N~IDENT2A" /> 
  </cmpFunction>
- <cmpFunction name="DR1D1C_SRC">
  <input role="1" allowed="IDENT2~IDENT2N~IDENT2A" /> 
  </cmpFunction>
- <cmpFunction name="SRCDR1D1A">
  <input role="1" allowed="IDENT2~IDENT2N~IDENT2A" /> 
  </cmpFunction>
- <cmpFunction name="SRCDR1D1B">
  <input role="1" allowed="IDENT2~IDENT2N~IDENT2A" /> 
  </cmpFunction>
- <cmpFunction name="SRCDR1D1C">
  <input role="1" allowed="IDENT2~IDENT2N~IDENT2A" /> 
  </cmpFunction>
- <cmpFunction name="DATE2">
  <input role="1" allowed="AGE~DATE2" /> 
  </cmpFunction>
  </cmpFunctions>
- <bktFunctions>
- <!--  NOTE:  "ATTR" is considered the default bucketing function; only 
define exceptions 
  --> 
  <bktFunction name="DATE" allowed="DATE1~DATE2~GRDATE" 
genFunctions="DTY4SMD~DTY4MM~DTMMDD" /> 
  <bktFunction name="PXNM" allowed="PXNM~QXNM" /> 
  <bktFunction name="CXNM" allowed="CXNM~UCSFREQXNM" /> 
  <bktFunction name="BXNM" allowed="BXNM" /> 
  <bktFunction name="ADDR2" 
allowed="USADDR2~CNADDR2~NAADDR2~UKADDR2~INTADDR2~UCSFREQADDR" /> 
  </bktFunctions>
- <genFunctions>
  <genFunction name="ASIS" equiStrCode="N" rbktStrCode="N" allowed="ANY" /> 
  <genFunction name="META" equiStrCode="N" rbktStrCode="N" allowed="ANY" 
exclude="DATE" /> 
  <genFunction name="EQUI" equiStrCode="Y" rbktStrCode="N" allowed="ANY" 
exclude="DATE" /> 
  <genFunction name="EQMETA" equiStrCode="Y" rbktStrCode="N" allowed="ANY" 
exclude="DATE" /> 
  <genFunction name="SORTED" equiStrCode="N" rbktStrCode="N" allowed="ANY" 
exclude="DATE" /> 
  <genFunction name="SRANGE" equiStrCode="N" rbktStrCode="Y" allowed="ANY" 
exclude="DATE" /> 
  <genFunction name="NRANGE" equiStrCode="N" rbktStrCode="Y" allowed="ANY" 
exclude="DATE" /> 
  <genFunction name="GEO" equiStrCode="N" rbktStrCode="N" allowed="ANY" 
exclude="DATE" /> 
  <genFunction name="DTY4SMD" equiStrCode="N" rbktStrCode="N" 
allowed="DATE" /> 
  <genFunction name="DTY4MM" equiStrCode="N" rbktStrCode="N" allowed="DATE" 
/> 
  <genFunction name="DTMMDD" equiStrCode="N" rbktStrCode="N" allowed="DATE" 
/> 
  </genFunctions>
  </algorithm-rules>