예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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))
예제 #5
0
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)
예제 #6
0
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']))