def test_BoolValsetNget(self): typeSystemFilePath = 'tests/testing_data/typesystem.xml' typesystem = TypeSystemFactory.readTypeSystem(self, typeSystemFilePath) fstype4 = typesystem.getType( 'de.tudarmstadt.ukp.dkpro.core.api.metadata.type.TagDescription') fsTagDesc1 = TOP(fstype4, 1, typesystem) aFeature = Feature(fsTagDesc1.FStype, 'name') aFeature.description = '' aFeature.elementType = 'uima.cas.Boolean' fsTagDesc1.setBoolValue(aFeature, False) self.assertEqual(fsTagDesc1.getBoolValue(aFeature), False)
def test_ComplexValsetNget(self): typeSystemFilePath = 'typesystem.xml' typesystem = TypeSystemFactory.readTypeSystem(self, typeSystemFilePath) fstype4 = typesystem.getType( 'de.tudarmstadt.ukp.dkpro.core.api.metadata.type.TagDescription') fsTagDesc1 = TOP(fstype4, 1, typesystem) aFeature = Feature(fsTagDesc1.FStype, 'name') aFeature.description = '' aFeature.elementType = 'uima.cas.String' fsTagDesc1.setComplexValue(aFeature, 1j) self.assertEqual(complex(fsTagDesc1.getComplexValue(aFeature)), 1j)
def test_setListVal_Fail(self): typeSystemFilePath = 'typesystem.xml' typesystem = TypeSystemFactory.readTypeSystem(self, typeSystemFilePath) fstype4 = typesystem.getType( 'de.tudarmstadt.ukp.dkpro.core.api.metadata.type.TagDescription') fsTagDesc1 = TOP(fstype4, 1, typesystem) aFeature = Feature(fsTagDesc1.FStype, 'name') aFeature.description = '' aFeature.rangeType = 'uima.cas.String' listval = [] listval.append('#') self.assertEqual('', '') with self.assertRaises(TypeError): nonlist = 1 fsTagDesc1.setListValue(aFeature, aFeature.rangeType, nonlist) with self.assertRaises(TypeError): nonfeature = 1 fsTagDesc1.setListValue(nonfeature, aFeature.rangeType, listval) with self.assertRaises(TypeError): aFeature.rangeType = 'uima.cas.Inetger' fsTagDesc1.setListValue(aFeature, aFeature.rangeType, listval) with self.assertRaises(TypeError): aFeature.rangeType = typesystem.getType( 'de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.pos.POS') fsTagDesc1.setListValue(aFeature, aFeature.rangeType, listval) with self.assertRaises(TypeError): aFeature.rangeType = 'uima.cas.Integer' aFeature.elementType = 'uima.cas.String' fsTagDesc1.setListValue(aFeature, aFeature.elementType, listval)
def test_ListValsetNget(self): typeSystemFilePath = 'typesystem.xml' typesystem = TypeSystemFactory.readTypeSystem(self, typeSystemFilePath) fstype4 = typesystem.getType( 'de.tudarmstadt.ukp.dkpro.core.api.metadata.type.TagDescription') fsTagDesc1 = TOP(fstype4, 1, typesystem) aFeature = Feature(fsTagDesc1.FStype, 'name') aFeature.description = '' aFeature.rangeType = 'uima.cas.String' listval = [] listval.append('#') fsTagDesc1.setListValue(aFeature, aFeature.rangeType, listval) self.assertEqual(' '.join(fsTagDesc1.getListValue(aFeature)), '#')
def test_feature(self): typeSystemFilePath = 'typesystem.xml' typesystem = TypeSystemFactory.readTypeSystem(self, typeSystemFilePath) typeFsArray = typesystem.getType('uima.cas.FSArray') typeSa = typesystem.getType( 'de.tudarmstadt.ukp.dkpro.core.api.anomaly.type.SuggestedAction') aFeature = Feature( 'de.tudarmstadt.ukp.dkpro.core.api.anomaly.type.Anomaly', 'suggestions') aFeature.description = '' aFeature.rangeType = typeFsArray aFeature.elementType = typeSa self.assertEqual( aFeature.domain, 'de.tudarmstadt.ukp.dkpro.core.api.anomaly.type.Anomaly') self.assertEqual(aFeature.name, 'suggestions') self.assertEqual(aFeature.description, '') self.assertEqual(aFeature.rangeType, typeFsArray) self.assertEqual(aFeature.elementType.name, typeSa.name)
def test_FeatureValsetNget(self): typeSystemFilePath = 'typesystem.xml' typesystem = TypeSystemFactory.readTypeSystem(self, typeSystemFilePath) tokenType = 'de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Token' fsTokenType = typesystem.getType(tokenType) posType = 'de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.pos.POS' fsPosType = typesystem.getType(posType) fsToken = TOP(fsTokenType, 1, typesystem) aFeature = Feature(fsToken.FStype, 'pos') aFeature.description = '' aFeature.rangeType = typesystem.getType( 'de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.pos.POS') fsPOS = Annotation(fsPosType, 1, typesystem) fsPOS.PosValue = "DT" fsToken.setFeatureValue(aFeature, fsPOS) self.assertEqual(fsToken.getFeatureValue(aFeature), fsPOS)
def test_setComplexVal_Fail(self): typeSystemFilePath = 'typesystem.xml' typesystem = TypeSystemFactory.readTypeSystem(self, typeSystemFilePath) fstype4 = typesystem.getType( 'de.tudarmstadt.ukp.dkpro.core.api.metadata.type.TagDescription') fsTagDesc1 = TOP(fstype4, 1, typesystem) aFeature = Feature(fsTagDesc1.FStype, 'name') aFeature.description = '' aFeature.elementType = 'uima.cas.String' self.assertEqual('', '') with self.assertRaises(TypeError): fsTagDesc1.setComplexValue(aFeature, 10.1) with self.assertRaises(TypeError): nonfeature = 1 fsTagDesc1.setComplexValue(nonfeature, 1j) with self.assertRaises(TypeError): aFeature.elementType = None fsTagDesc1.setComplexValue(aFeature, 1j) with self.assertRaises(TypeError): aFeature.elementType = 'uima.cas.Integer' fsTagDesc1.setComplexValue(aFeature, 1j)
def readTypeSystem(self, typesystempath): #create TypeSystem object typesystem = TypeSystem() #create TypeSystemParser object typesytemParser = TypeSystemParser() # set the type system path to TypeSystemParser typesytemParser.setTypeAsFile(typesystempath) # populate TypeSystem name space attribute to contain the base name space typesystem.namespace = typesytemParser.getTypeSystemDescNamespace() # iterate type description elements returned by the parser and create a typeDescription object for TypeSystem for tdelement in typesytemParser.getTypeDescElements(): # create type description object TDname = typesytemParser.getElementText( typesytemParser.getTypeDescriptionName(tdelement)) TDdesc = typesytemParser.getElementText( typesytemParser.getTypeDescriptionDescription(tdelement)) typeDesc = TypeDescription(TDname, TDdesc) typeDesc.superType = typesytemParser.getElementText( typesytemParser.getTypeDescriptionSuperType(tdelement)) #get the features element from parser features = typesytemParser.getTypeDescriptionFeatures(tdelement) if not features == None: #get the feature description element from the parser and create features object for typeDescription for felement in typesytemParser.getFeatureDescElements( features): fdomain = TDname fname = typesytemParser.getElementText( typesytemParser.getFeatureDescName(felement)) feature = Feature(fdomain, fname) feature.description = typesytemParser.getElementText( typesytemParser.getFeatureDescDescription(felement)) rangeVal = typesytemParser.getFeatureDescRangeType( felement) elementVal = typesytemParser.getFeatureDescElementType( felement) if (not rangeVal == None): rangeValStr = typesytemParser.getElementText(rangeVal) if (rangeValStr == CAS_Type.TYPE_NAME_FSARRAY and elementVal == None): raise TypeError( fname, 'has only rangeType as FSArray, no element type found' ) return #if range type is primitive CAS type if (rangeValStr == CAS_Type.TYPE_NAME_BOOLEAN or rangeValStr == CAS_Type.TYPE_NAME_FLOAT or rangeValStr == CAS_Type.TYPE_NAME_DOUBLE or rangeValStr == CAS_Type.TYPE_NAME_INTEGER or rangeValStr == CAS_Type.TYPE_NAME_LONG or rangeValStr == CAS_Type.TYPE_NAME_STRING): #set the range type from type system of the feature feature.rangeType = rangeValStr else: feature.rangeType = TypeDescription(rangeValStr) if (not elementVal == None): elementValStr = typesytemParser.getElementText( elementVal) #if element type is primitive CAS type if (elementValStr == CAS_Type.TYPE_NAME_BOOLEAN or elementValStr == CAS_Type.TYPE_NAME_FLOAT or elementValStr == CAS_Type.TYPE_NAME_DOUBLE or elementValStr == CAS_Type.TYPE_NAME_INTEGER or elementValStr == CAS_Type.TYPE_NAME_LONG or elementValStr == CAS_Type.TYPE_NAME_STRING): #set the range type from type system of the feature feature.elementType = elementValStr else: feature.elementType = TypeDescription( elementValStr) #add the feature to the TypeDescription object typeDesc.addFeature(feature) #add the TypeDescription to the TypeSystem object typesystem.addTypeDesc(typeDesc) #add inbuilt uima.cas.AnnotationBase type with sofa feature typeDescABase = TypeDescription('uima.cas.AnnotationBase', '') typeDescABase.superType = 'uima.cas.TOP' featureSofa = Feature('uima.cas.AnnotationBase', 'sofa') featureSofa.description = '' featureSofa.elementType = TypeDescription('uima.cas.Sofa') typeDescABase.addFeature(featureSofa) typesystem.addTypeDesc(typeDescABase) #add inbuilt uima.tcas.Annotation type with begin and end feature typeDescABase = TypeDescription('uima.tcas.Annotation', '') typeDescABase.superType = 'uima.cas.AnnotationBase' #add begin feature to inbuilt uima.tcas.Annotation featureSofa = Feature('uima.tcas.Annotation', 'begin') featureSofa.description = '' featureSofa.elementType = CAS_Type.TYPE_NAME_INTEGER typeDescABase.addFeature(featureSofa) #add end feature to inbuilt uima.tcas.Annotation featureSofa = Feature('uima.tcas.Annotation', 'end') featureSofa.description = '' featureSofa.elementType = CAS_Type.TYPE_NAME_INTEGER typeDescABase.addFeature(featureSofa) #add inbuilt uima.tcas.Annotation type to the list of type descriptions typesystem.addTypeDesc(typeDescABase) #add inbuilt FSArray type typeDescFsArray = TypeDescription('uima.cas.FSArray', '') typeDescFsArray.superType = 'uima.cas.TOP' typesystem.addTypeDesc(typeDescFsArray) #add inbuilt sofa type typeDescSofa = TypeDescription('uima.cas.Sofa', '') typeDescSofa.superType = 'uima.cas.TOP' #add sofaNum feature to inbuilt sofa type featureSofaNum = Feature('uima.cas.Sofa', 'sofaNum') featureSofaNum.description = '' featureSofaNum.elementType = CAS_Type.TYPE_NAME_INTEGER typeDescSofa.addFeature(featureSofaNum) #add sofaID feature to inbuilt sofa type featureSofaID = Feature('uima.cas.Sofa', 'sofaID') featureSofaID.description = '' featureSofaID.elementType = CAS_Type.TYPE_NAME_STRING typeDescSofa.addFeature(featureSofaID) #add mimeType feature to inbuilt sofa type featureMimeType = Feature('uima.cas.Sofa', 'mimeType') featureMimeType.description = '' featureMimeType.elementType = CAS_Type.TYPE_NAME_STRING typeDescSofa.addFeature(featureMimeType) #add sofaString feature to inbuilt sofa type featureSofaString = Feature('uima.cas.Sofa', 'sofaString') featureSofaString.description = '' featureSofaString.elementType = CAS_Type.TYPE_NAME_STRING typeDescSofa.addFeature(featureSofaString) #add inbuilt sofa type to the list of type descriptions typesystem.addTypeDesc(typeDescSofa) return typesystem
def sofaString(self, value): aFeature = Feature(self.FStype, 'sofaString') aFeature.description = '' aFeature.elementType = CAS_Type.TYPE_NAME_STRING self.setStringValue(aFeature, value)
def mimeType(self): aFeature = Feature(self.FStype, 'mimeType') aFeature.description = '' aFeature.elementType = CAS_Type.TYPE_NAME_STRING return self.getStringValue(aFeature)
def sofaNum(self, value): aFeature = Feature(self.FStype, 'sofaNum') aFeature.description = '' aFeature.elementType = CAS_Type.TYPE_NAME_INTEGER self.setIntValue(aFeature, value)