def handle_inout(tool, item_value, in_or_out): for ioD in item_value: # print(ioD) io_name = ioD['name'] if io_name is None: io_name = in_or_out _name = Preprocessor.io_name(io_name, onto) param_rdf = None if in_or_out == 'input': param = SagaInput(_name, prefLabel=locstr(io_name, lang='en')) # param = SagaInput(0,prefLabel=locstr(io_name, lang='en')) # blank node prefix with _: tool.input.append(param) param.isInput = True # rdflib param_rdf = URIRef(param.iri) with onto: g.add((param_rdf, RDF.type, Sh.NodeShape)) g.add((param_rdf, RDF.type, URIRef(SagaInput.iri))) else: param = SagaOutput(_name, prefLabel=locstr(io_name, lang='en')) # param =SagaOutput(0, prefLabel=locstr(io_name, lang='en')) tool.output.append(param) param.isOutput = True # rdflib param_rdf = URIRef(param.iri) with onto: g.add((param_rdf, RDF.type, Sh.NodeShape)) g.add((param_rdf, RDF.type, URIRef(SagaOutput.iri))) if ioD['dataType']: vr = re.match("[a-zA-Z ]+ (?=\([a-zA-Z ]+\))?", ioD['dataType']) dformat = vr.group().strip() if not get_format(dformat): continue param.supportsDataFormat.append(data[get_format(dformat)]) # rdflib formatshape = g.BNode() with onto: g.add((param_rdf, Sh.property, formatshape)) g.add((formatshape, RDF.type, Sh.PropertyShape)) g.add((formatshape, Sh.path, Cyber.supportsDataFormat)) formats = g.BNode() with onto: g.add((formats, RDF.first, [data[get_format(dformat)]])) g.add((formats, RDF.rest, RDF.nil)) c = Collection(g, formats) g.add((formatshape, Sh['in'], c)) param.identifier = ioD['name'] param.description.append(ioD['description']) param.flag = ioD['flag'] param.isOptional = ioD['isOptional'] OWLUtils.link_to_domain_concept(param, io_name.replace('_', ' ')) # shacl pshape = Sh.PropertyShape(0) pshape.path = onto.dataContent if not ioD['isOptional']: pshape.minCount = 1 pshape.message.append(ioD['name'] + " is required!")
def handle_parameters(tool, param, _onto): # 部分parameter不包含isInputFile等属性 name = param['parameter'] _name = Preprocessor.io_name(param['parameter'], _onto, ['overwrite']) if 'isInputFile' in param.keys() and param['isInputFile']: p = GrassInput(_name, prefLabel=locstr(name, lang='en')) # p = GrassInput(0, prefLabel=locstr(name, lang='en')) tool.input.append(p) p.isInput = param['isInputFile'] OWLUtils.link_to_domain_concept(p, name.replace('_', ' ')) elif 'isOutputFile' in param.keys() and param['isOutputFile']: p = GrassOutput(_name, prefLabel=locstr(name, lang='en')) # p = GrassOutput(0, prefLabel=locstr(name, lang='en')) tool.output.append(p) p.isOutput = param['isOutputFile'] OWLUtils.link_to_domain_concept(p, name.replace('_', ' ')) else: p = GrassOption(_name, prefLabel=locstr(name, lang='en')) # p = GrassOption(0, prefLabel=locstr(name, lang='en')) tool.option.append(p) p.flag = param['flag'] p.identifier = name if 'dataType' in param.keys(): p.datatypeInString.append(param['dataType']) p.datatype.append(OWLUtils.get_datatype_iris(param['dataType'])) p.description.append(param['explanation']) if 'defaultValue' in param.keys(): if param['defaultValue'] is not None: p.defaultValue = param['defaultValue'] p.isOptional = param['isOptional'] if 'alternatives' in param.keys(): alternatives = param['alternatives'] if alternatives: literal = True if param['explanation'] == "Name of Modules": literal = False if len(alternatives) > 1: _onto, l = OWLUtils.resources_2_rdf_list( _onto, alternatives, literal) p.availableList.append(l) for value in alternatives: p.availableValue.append(value) else: if re.match('[-0-9]+-[0-9]+', alternatives[0]): p.minimum = alternatives[0].rsplit('-', 1)[0] p.maximum = alternatives[0].rsplit('-', 1)[1] elif re.match('[-0-9]+-[a-zA-Z<> ]+', alternatives[0]): p.minimum = alternatives[0].split('-')[0] p.comment.append('Options: ' + ' '.join(alternatives))
def handle_options(tool, param, _onto): pname = param['name'] _name = Preprocessor.io_name(pname, _onto, common_options) p = GDALOption(_name, prefLabel=locstr(pname, lang='en')) p.identifier = pname if param['flag']: p.flag = param['flag'] p.isOptional = param['isOptional'] p.description.append(locstr(param['explanation'], lang='en')) p.datatype.append(OWLUtils.get_datatype_iris(param['dataType'])) if "available_values" in param.keys(): for value in param['available_values']: p.availableValue.append(value) onto, _list = OWLUtils.resources_2_rdf_list(_onto, param['available_values']) p.availableList.append(_list) if "available_choices" in param.keys(): p, onto = OWLUtils.handle_choices(p, pname, param['available_choices'], GDALAvailableChoice, _onto) if "input_pattern" in param.keys(): p.inputPattern.append(param['input_pattern']) tool.option.append(p)
def handle_parameter(tool, param): pname = param['name'] p = None _name = Preprocessor.io_name(pname, onto, common_options) if 'isInputFile' in param.keys(): p = GDALInput(_name, prefLabel=locstr(pname, lang='en')) p.isInput = True tool.input.append(p) OWLUtils.link_to_domain_concept(p, pname.replace('_', ' ')) elif "isOutputFile" in param.keys(): p = GDALOutput(_name, prefLabel=locstr(pname, lang='en')) p.isOutput = True tool.output.append(p) OWLUtils.link_to_domain_concept(p, pname.replace('_', ' ')) p.identifier = pname if param['flag']: p.flag = param['flag'] p.isOptional = param['isOptional'] p.description.append(locstr(param['explanation'], lang='en')) p.datatype.append(OWLUtils.get_datatype_iris(param['dataType']))
def handle_options(tool, option, _onto): name = option['name'] if name is None: name = 'option' _name = Preprocessor.io_name(Preprocessor.name_underline(name), _onto) op = SagaOption(_name, prefLabel=locstr(name, lang='en')) tool.option.append(op) if option['description'] != '-': op.description = option['description'] op.flag = option['flag'] op.identifier = name constraints = option['constraints'] # shacl pshape = Sh.PropertyShape(0) pshape.path.append(_onto.dataContent) if constraints: if 'fields_des' in constraints.keys() and constraints['fields_des']: op.description.append(constraints['fields_des']) else: if 'minimum' in constraints.keys() and constraints['minimum']: op.minimum = constraints['minimum'] pshape.minExclusive = constraints['minimum'] if 'defaultValue' in constraints.keys( ) and constraints['defaultValue']: op.defaultValue = constraints['defaultValue'] pshape.defaultValue = constraints['defaultValue'] if 'maximum' in constraints.keys() and constraints['maximum']: op.maximum = constraints['maximum'] pshape.maxInclusive = constraints['maximum'] op.datatypeInString.append(option['dataType']) pshape.datatype = [OWLUtils.get_datatype_iris(option['dataType'])] op.datatype.append(OWLUtils.get_datatype_iris(option['dataType'])) if 'availableChoices' in constraints.keys( ) and constraints['availableChoices']: c = [] for achoice in constraints['availableChoices']: c.append(achoice['choice']) with _onto: g.add((pshape, Sh['in'], c)) OWLUtils.handle_choices(op, name, constraints['availableChoices'], SagaAvailableChoice, _onto)
def handle_parameters(tool, param): # 部分parameter不包含isInputFile等属性 _name = Preprocessor.io_name(param['name'], onto) if 'isInputFile' in param.keys() and param['isInputFile']: p = ArcGISInput(_name, prefLabel=locstr(param['name'], lang='en')) # p = ArcGISInput(0, prefLabel=locstr(param['name'], lang='en')) tool.input.append(p) p.isInput = param['isInputFile'] OWLUtils.link_to_domain_concept(p, param['name'].replace('_', ' ')) elif 'isOutputFile' in param.keys() and param['isOutputFile']: p = ArcGISOutput(_name, prefLabel=locstr(param['name'], lang='en')) # p = ArcGISOutput(0, prefLabel=locstr(param['name'], lang='en')) tool.output.append(p) p.isOutput = param['isOutputFile'] OWLUtils.link_to_domain_concept(p, param['name'].replace('_', ' ')) else: p = ArcGISOption(_name, prefLabel=locstr(param['name'], lang='en')) # p = ArcGISOption(0, prefLabel=locstr(param['name'], lang='en')) tool.option.append(p) dt = param['dataType'] if dt: p.datatypeInString.append(param['dataType']) p.datatype.append(OWLUtils.get_datatype_iris(param['dataType'])) OWLUtils.link_to_domain_concept(p, param['name'].replace('_', ' ')) p.identifier = param['name'] p.flag = param['name'] if 'dataType' in param.keys() and param['dataType']: p.datatypeInString.append(param['dataType']) p.description.append(param['description']) p.isOptional = param['isOptional'] # datatype datatype = param['dataType'] if datatype is None: datatype = "string" dt = datatype.strip().lower().replace(' ', '_') # print(dt) dtype = data[dt] if dtype is None: dtype = OWLUtils.get_datatype_iris(dt) p.datatype.append(dtype) if "available_values" in param.keys(): for value in param['available_values']: p.availableValue.append(value)
def handle_parameter(tool, param): # p = None dformat = file_type(param['flag'], tool.commandLine[0]) ptype = param_type(param['description']) if 'flag_long' in param.keys(): pname = param['flag_long'].replace('--', '') else: pname = param['flag'].replace('--', '') _name = Preprocessor.io_name(pname, onto) if ptype == 1: p = WhiteboxInput(_name, prefLabel=locstr(pname, lang='en')) # p = OTBInput(0, prefLabel=locstr(param['name'], lang='en')) tool.input.append(p) p.isInput = True OWLUtils.link_to_domain_concept(p, pname.replace('_', ' ')) elif ptype == 2: p = WhiteboxOutput(_name, prefLabel=locstr(pname, lang='en')) # p = OTBOutput(0, prefLabel=locstr(param['parameter_name'], lang='en')) tool.output.append(p) p.isOutput = True OWLUtils.link_to_domain_concept(p, pname.replace('_', ' ')) elif ptype == 3: p = WhiteboxOption(_name, prefLabel=locstr(pname, lang='en')) tool.option.append(p) p.isOptional = True OWLUtils.link_to_domain_concept(p, pname.replace('_', ' ')) else: p = WhiteboxOption(_name, prefLabel=locstr(pname, lang='en')) tool.option.append(p) avaliable_choices(p, param['description']) if dformat: p.supportsDataFormat = dformat p.identifier = pname p.flag = param['flag'] if 'flag_long' in param.keys(): p.longFlag.append(param['flag_long']) p.description.append(locstr(param['description'], lang='en'))