def handle_params(tool_param, param_item): # 具体参数 for itemK, itemV in param_item.items(): # 数据格式 if itemK == 'dataType' and get_format(itemV) is not None: tool_param.supportsDataFormat.append(data[get_format(itemV)]) tool_param.datatype.append(OWLUtils.get_datatype_iris(itemV)) _prop = get_property(itemK, DataProperty) if type(itemV) == list: itemV = ''.join(itemV) OWLUtils.set_data_property(tool_param, _prop, itemV)
def map_to_owl(json_data): for d in json_data: """mapping json data to ontology properties""" # instance 实例 name = Preprocessor.name_underline(d['name']) toolClass = tool_class(d['name']) tool = toolClass(name, prefLabel=locstr(d['name'], lang='en')) tool.isToolOfSoftware.append(cyber.TauDEM) tool.identifier = name description = OWLUtils.join_list(d['description']) keywords = OWLUtils.to_keywords(description) keywords.extend(name.replace('_', ' ').split(' ')) # keywords=name.replace('_', ' ').split(' ') OWLUtils.link_to_domain_concept(tool, keywords) for k, v in d.items(): # 外层, 参数 if (k in ['parameters', 'options']) and type(v) == list: for i, item in enumerate(v): param = None # localname = v[i]['parameterName'] localname = Preprocessor.space_2_underline(item['parameterName']) _label = localname.replace('_', ' ') if item['isInputFile']: param = TauDEMInput(localname, prefLabel=locstr(_label, lang='en')) # param = TauDEMInput(prefLabel=locstr(_label, lang='en')) # input geo data ? rule: format-> geoformat->geo data tool.input.append(param) handle_params(param, item) param.isInput = True elif item['isOutputFile']: # localname.lower().startswith('output_', 0, len('output_')): param = TauDEMOutput(localname, prefLabel=locstr(_label, lang='en')) # param = TauDEMOutput(prefLabel=locstr(_label, lang='en')) tool.output.append(param) handle_params(param, item) param.isOutput = True else: param = TauDEMOption(localname, prefLabel=locstr(_label, lang='en')) # param = TauDEMOption(prefLabel=locstr(localname.replace('_', ' '), lang='en')) tool.option.append(param) handle_params(param, item) OWLUtils.link_to_domain_concept(param, _label) param.identifier = localname else: prop = get_property(k, DataProperty) if not v: continue if type(v) == list and len(v) > 0: v = ''.join(v) OWLUtils.set_data_property(tool, prop, v) # task handle_task(tool, name, d['name'], description) OWLUtils.application_category(tool, 'Geomorphometry', 'digital terrain analysis', 'hydrology')