@prefix dcterms:    <http://purl.org/dc/terms/> .
@prefix fno:        <https://w3id.org/function/ontology#> .
@prefix fnoi:       <https://w3id.org/function/vocabulary/implementation#> .
@prefix fnom:       <https://w3id.org/function/vocabulary/mapping#> .
@prefix grel:       <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@prefix idlab-fn:   <https://w3id.org/imec/idlab/function#> .
@prefix idlab-fn-m: <https://w3id.org/imec/idlab/function-mapping#> .
@prefix rdf:        <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:       <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:        <http://www.w3.org/2001/XMLSchema#> .

@prefix :           <http://example.com/idlab/functions/string/> .

#######################
### IDLab Functions ###
#######################

idlab-fn:equal
    a                   fno:Function ;
    fno:name            "equal" ;
    rdfs:label          "equal" ;
    dcterms:description "Returns true if strings are equal." ;
    fno:expects         ( grel:valueParam grel:valueParam2 ) ;
    fno:returns         ( idlab-fn:_boolOut ) .

idlab-fn:notEqual
    a                   fno:Function ;
    fno:name            "not equal" ;
    rdfs:label          "not equal" ;
    dcterms:description "Returns true if strings are not equal." ;
    fno:expects         ( grel:valueParam grel:valueParam2 ) ;
    fno:returns         ( idlab-fn:_boolOut ) .

idlab-fn:stringContainsOtherString
    a                   fno:Function ;
    fno:name            "stringContainsOtherString" ;
    rdfs:label          "stringContainsOtherString" ;
    dcterms:description "Returns true if a string is found in a delimited string." ;
    fno:expects         ( idlab-fn:_str idlab-fn:_otherStr idlab-fn:_delimiter ) ;
    fno:returns         ( idlab-fn:_boolOut ) .

idlab-fn:listContainsElement
    a                   fno:Function ;
    fno:name            "listContainsElement" ;
    rdfs:label          "listContainsElement" ;
    dcterms:description "Returns true if the string is found in the list" ;
    fno:expects         ( idlab-fn:_list idlab-fn:_str ) ;
    fno:returns         ( idlab-fn:_boolOut ) .

idlab-fn:getMIMEType
    a                   fno:Function ;
    fno:name            "getMIMEType" ;
    rdfs:label          "getMIMEType" ;
    dcterms:description "Returns the MIME Type of a filename" ;
    fno:expects         ( idlab-fn:_str ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:decide
    a                   fno:Function ;
    fno:name            "decide" ;
    rdfs:label          "decide" ;
    dcterms:description "Returns a given value if input is equal to another given value" ;
    fno:expects         ( idlab-fn:_str idlab-fn:_expectedStr idlab-fn:_result ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:isNull
    a                   fno:Function ;
    fno:name            "Is null" ;
    rdfs:label          "Is null" ;
    dcterms:description "Returns true if the given value is null, else false" ;
    fno:expects         ( idlab-fn:_str ) ;
    fno:returns         ( idlab-fn:_boolOut ) .

idlab-fn:dbpediaSpotlight
    a                   fno:Function ;
    fno:name            "DBpedia Spotlight annotate" ;
    rdfs:label          "DBpedia Spotlight annotate" ;
    dcterms:description "Returns the DBpedia URLs of the detected entities in the input text" ;
    fno:expects         ( idlab-fn:_str idlab-fn:_endpoint ) ;
    fno:returns         ( idlab-fn:_listOut ) .

idlab-fn:trueCondition
    a                   fno:Function ;
    fno:name            "True condition" ;
    rdfs:label          "True condition" ;
    dcterms:description "Returns the value if the given boolean is true, else null" ;
    fno:expects         ( idlab-fn:_strBoolean idlab-fn:_str ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:readFile
    a                   fno:Function ;
    fno:name            "Read local file as string" ;
    rdfs:label          "Read local file as string" ;
    dcterms:description "Returns the content of a local file as string" ;
    fno:expects         ( idlab-fn:_path ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:random
    a                   fno:Function ;
    fno:name            "random" ;
    rdfs:label          "random" ;
    dcterms:description "Returns a random uuid." ;
    fno:expects         ( ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:inRange
    a                   fno:Function ;
    fno:name            "inRange" ;
    rdfs:label          "in range" ;
    dcterms:description "Returns whether a value is in range" ;
    fno:expects         ( idlab-fn:_test idlab-fn:_from idlab-fn:_to ) ;
    fno:returns         ( idlab-fn:_boolOut ) .

idlab-fn:slugify
    a                   fno:Function ;
    fno:name            "slugify" ;
    rdfs:label          "slugify" ;
    dcterms:description "Converts an arbitrary string to its slugified equivalent." ;
    fno:expects         ( idlab-fn:_str ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:normalizeDate
    a                   fno:Function ;
    fno:name            "normalizeDate" ;
    rdfs:label          "normalizeDate" ;
    dcterms:description "Parses the input as a date and returns it as a string in the ISO-8601 format uuuu-MM-dd. It uses the current language to parse month or day names." ;
    fno:expects         ( idlab-fn:_strDate idlab-fn:_pattern ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

 idlab-fn:normalizeDateWithLang
     a                   fno:Function ;
     fno:name            "normalizeDateWithLang" ;
     rdfs:label          "normalizeDateWithLang" ;
     dcterms:description "Parses the input as a date and returns it as a string in the ISO-8601 format uuuu-MM-dd. It uses the given language to parse month or day names." ;
     fno:expects         ( idlab-fn:_strDate idlab-fn:_pattern idlab-fn:_lang ) ;
     fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:normalizeDateTime
    a                   fno:Function ;
    fno:name            "normalizeDateTime" ;
    rdfs:label          "normalizeDateTime" ;
    dcterms:description "Parses the input as a datetime and returns it as a string in the ISO-8601 format uuuu-MM-ddTHH:mm:ss. It uses the current language to parse month or day names." ;
    fno:expects         ( idlab-fn:_strDate idlab-fn:_pattern ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

 idlab-fn:normalizeDateTimeWithLang
     a                   fno:Function ;
     fno:name            "normalizeDateTimeWithLang" ;
     rdfs:label          "normalizeDateTimeWithLang" ;
     dcterms:description "Parses the input as a datetime and returns it as a string in the ISO-8601 format uuuu-MM-ddTHH:mm:ss. It uses the given language to parse month or day names." ;
     fno:expects         ( idlab-fn:_strDate idlab-fn:_pattern idlab-fn:_lang ) ;
     fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:generateUniqueIRI
    a                   fno:Function ;
    fno:name            "generateUniqueIRI" ;
    rdfs:label          "generateUniqueIRI" ;
    dcterms:description "Generates a unique IRI by watching the given property value" ;
    fno:expects         ( idlab-fn:_iri idlab-fn:_watchedProperty idlab-fn:_unique idlab-fn:_state ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:createUniqueIRI
    a                   fno:Function ;
    fno:name            "createUniqueIRI" ;
    rdfs:label          "createUniqueIRI" ;
    dcterms:description "Creates a unique versioned IRI for first time entities" ;
    fno:expects         ( idlab-fn:_iri idlab-fn:_unique idlab-fn:_state ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:updateUniqueIRI
    a                   fno:Function ;
    fno:name            "updateUniqueIRI" ;
    rdfs:label          "updateUniqueIRI" ;
    dcterms:description "Updates a unique versioned IRI by watching the given property value" ;
    fno:expects         ( idlab-fn:_iri idlab-fn:_watchedProperty idlab-fn:_unique idlab-fn:_state ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:implicitCreate
    a                   fno:Function ;
    fno:name            "implicitCreate" ;
    rdfs:label          "implicitCreate" ;
    dcterms:description "Returns an IRI when an entity is implicitely created" ;
    fno:expects         ( idlab-fn:_iri idlab-fn:_state ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:implicitUpdate
    a                   fno:Function ;
    fno:name            "implicitUpdate" ;
    rdfs:label          "implicitUpdate" ;
    dcterms:description "Returns an IRI when an entity is implicitely updated" ;
    fno:expects         ( idlab-fn:_iri idlab-fn:_watchedProperty idlab-fn:_state ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:implicitDelete
    a                   fno:Function ;
    fno:name            "implicitDelete" ;
    rdfs:label          "implicitDelete" ;
    dcterms:description "Returns an IRI when an entity is implicitely deleted" ;
    fno:expects         ( idlab-fn:_iri idlab-fn:_state ) ;
    fno:returns         ( idlab-fn:_listOut ) .

idlab-fn:explicitCreate
    a                   fno:Function ;
    fno:name            "explicitCreate" ;
    rdfs:label          "explicitCreate" ;
    dcterms:description "Returns an IRI when an entity is explicitely created" ;
    fno:expects         ( idlab-fn:_iri idlab-fn:_state ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:explicitUpdate
    a                   fno:Function ;
    fno:name            "explicitUpdate" ;
    rdfs:label          "explicitUpdate" ;
    dcterms:description "Returns an IRI when an entity is explicitely updated" ;
    fno:expects         ( idlab-fn:_iri idlab-fn:_state ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:explicitDelete
    a                   fno:Function ;
    fno:name            "explicitDelete" ;
    rdfs:label          "explicitDelete" ;
    dcterms:description "Returns an IRI when an entity is explicitely deleted" ;
    fno:expects         ( idlab-fn:_iri idlab-fn:_state ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:toUpperCaseURL
    a                   fno:Function ;
    fno:name            "toUpperCaseURL" ;
    rdfs:label          "toUpperCaseURL" ;
    dcterms:description "Returns an uppercase, valid url." ;
    fno:expects         ( idlab-fn:_str ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:concat
    a                   fno:Function ;
    fno:name            "concat" ;
    rdfs:label          "concat" ;
    dcterms:description "Concatenates two strings, optionally with a separator" ;
    fno:expects         ( idlab-fn:_str idlab-fn:_otherStr idlab-fn:_delimiter ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:concatSequence
    a                   fno:Function ;
    fno:name            "concatSequence" ;
    rdfs:label          "concatSequence" ;
    dcterms:description "Concatenates an rdf:seq of strings, optionally with a separator" ;
    fno:expects         ( idlab-fn:_seq idlab-fn:_delimiter ) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:lookup
    a                   fno:Function ;
    fno:name            "lookup" ;
    rdfs:label          "lookup" ;
    dcterms:description "Looks for the first appearance of the search string in the fromColumn of a csv file (supposing default delimiter ','), and returns the value of the toColumn on the same row.";
    fno:expects         ( idlab-fn:_str idlab-fn:_inputFile idlab-fn:_fromColumn idlab-fn:_toColumn) ;
    fno:returns         ( idlab-fn:_stringOut ) .

idlab-fn:lookupWithDelimiter
     a                   fno:Function ;
     fno:name            "lookup" ;
     rdfs:label          "lookup" ;
     dcterms:description "Looks for the first appearance of the search string in the fromColumn of a csv file, and returns the value of the toColumn on the same row.";
     fno:expects         ( idlab-fn:_str idlab-fn:_inputFile idlab-fn:_fromColumn idlab-fn:_toColumn idlab-fn:_delimiter) ;
     fno:returns         ( idlab-fn:_stringOut ) .

##############
# PARAMETERS #
##############

grel:valueParam
    a             fno:Parameter ;
    fno:name      "input value" ;
    rdfs:label    "input value" ;
    fno:type      xsd:string ;
    fno:predicate grel:valueParameter .

grel:valueParam2
    a             fno:Parameter ;
    fno:name      "input value 2" ;
    rdfs:label    "input value 2" ;
    fno:type      xsd:string ;
    fno:predicate grel:valueParameter2 .

grel:stringOut
    a             fno:Output ;
    fno:name      "output string" ;
    rdfs:label    "output string" ;
    fno:type      xsd:string ;
    fno:predicate grel:stringOutput .

idlab-fn:_path
    a             fno:Parameter ;
    fno:name      "input path" ;
    rdfs:label    "input path" ;
    fno:type      xsd:string ;
    fno:predicate idlab-fn:path .

idlab-fn:_str
    a             fno:Parameter ;
    fno:name      "input string" ;
    rdfs:label    "input string" ;
    fno:type      xsd:string ;
    fno:predicate idlab-fn:str .

idlab-fn:_strBoolean
    a             fno:Parameter ;
    fno:name      "boolean encoded as string" ;
    rdfs:label    "boolean encoded as string" ;
    fno:type      xsd:string ;
    fno:predicate idlab-fn:strBoolean .

idlab-fn:_endpoint
    a             fno:Parameter ;
    fno:name      "endpoint url string" ;
    rdfs:label    "endpoint url string" ;
    fno:type      xsd:string ;
    fno:predicate idlab-fn:endpoint .

idlab-fn:_otherStr
    a             fno:Parameter ;
    fno:name      "other input string" ;
    rdfs:label    "other input string" ;
    fno:type      xsd:string ;
    fno:predicate idlab-fn:otherStr .

idlab-fn:_expectedStr
    a             fno:Parameter ;
    fno:name      "expected input string" ;
    rdfs:label    "expected input string" ;
    fno:type      xsd:string ;
    fno:predicate idlab-fn:expectedStr .

idlab-fn:_result
    a             fno:Parameter ;
    fno:name      "result string" ;
    rdfs:label    "result string" ;
    fno:type      xsd:string ;
    fno:predicate idlab-fn:result .

idlab-fn:_list
    a             fno:Parameter ;
    fno:name      "list" ;
    rdfs:label    "list" ;
    fno:type      rdf:List ;
    fno:predicate idlab-fn:list .

idlab-fn:_listOut
    a             fno:Parameter ;
    fno:name      "output list" ;
    rdfs:label    "output list" ;
    fno:type      rdf:List ;
    fno:predicate idlab-fn:listOut .

idlab-fn:_seq
    a             fno:Parameter ;
    fno:name      "rdf:Seq parameter" ;
    fno:predicate rdf:_nnn ; # Similar to https://www.w3.org/TR/rdf-schema/#ch_containermembershipproperty
                             # We can't use rdf:_nnn bc this would imply that _:exec also is an rdf:Seq, which is incorrect
    fno:type      xsd:any ;
    fno:required  "true"^^xsd:boolean .

idlab-fn:_delimiter
    a             fno:Parameter ;
    fno:name      "delimiter" ;
    rdfs:label    "delimiter" ;
    fno:type      xsd:string ;
    fno:predicate idlab-fn:delimiter .

idlab-fn:_test
    a             fno:Parameter ;
    fno:name      "test" ;
    rdfs:label    "test" ;
    fno:type      xsd:double ;
    fno:predicate idlab-fn:p_test .

idlab-fn:_from
    a             fno:Parameter ;
    fno:name      "from" ;
    rdfs:label    "from" ;
    fno:type      xsd:double ;
    fno:predicate idlab-fn:p_from .

idlab-fn:_to
    a             fno:Parameter ;
    fno:name      "to" ;
    rdfs:label    "to" ;
    fno:type      xsd:double ;
    fno:predicate idlab-fn:p_to .

idlab-fn:_stringOut
    a             fno:Output ;
    fno:name      "output string" ;
    rdfs:label    "output string" ;
    fno:type      xsd:string ;
    fno:predicate idlab-fn:stringOut .

idlab-fn:_boolOut
    a             fno:Output ;
    fno:name      "output boolean" ;
    rdfs:label    "output boolean" ;
    fno:type      xsd:boolean ;
    fno:predicate idlab-fn:o_boolOut .

idlab-fn:_strDate
    a             fno:Parameter ;
    fno:name      "string parsable to a date" ;
    rdfs:label    "string parsable to a date" ;
    fno:type      xsd:string ;
    fno:predicate idlab-fn:strDate .

idlab-fn:_pattern
    a             fno:Parameter ;
    fno:name      "string representing a date pattern" ;
    rdfs:label    "string representing a date pattern" ;
    fno:type      xsd:string ;
    fno:predicate idlab-fn:pattern .

idlab-fn:_lang
    a             fno:Parameter ;
    fno:name      "string representing a BCP 47 language tag" ;
    rdfs:label    "string representing a BCP 47 language tag" ;
    fno:type      xsd:string ;
    fno:predicate idlab-fn:lang .

idlab-fn:_iri
    a             fno:Parameter;
    fno:name      "String representation of an IRI";
    rdfs:label    "String representation of an IRI";
    fno:type      xsd:string;
    fno:predicate idlab-fn:iri .

idlab-fn:_watchedProperty
    a             fno:Parameter;
    fno:name      "Property field of the data record to be watched";
    rdfs:label    "Property field of the data record to be watched";
    fno:type      xsd:string ;
    fno:predicate idlab-fn:watchedProperty.

idlab-fn:_unique
    a             fno:Parameter;
    fno:name      "Indicates if a field contains unique values";
    rdfs:label    "Indicates if a field contains unique values";
    fno:type      xsd:boolean ;
    fno:predicate idlab-fn:unique.

idlab-fn:_state
    a             fno:Parameter;
    fno:name      "string representing the name of the state file";
    rdfs:label    "string representing the name of the state file";
    fno:type      xsd:string ;
    fno:predicate idlab-fn:state .

idlab-fn:_inputFile
    a             fno:Parameter;
    fno:name      "string representing the path to an input file";
    rdfs:label    "string representing the path to an input file";
    fno:type      xsd:string ;
    fno:predicate idlab-fn:inputFile .

idlab-fn:_fromColumn
    a             fno:Parameter;
    fno:name      "index of the fromColumn";
    rdfs:label    "index of the fromColumn";
    fno:type      xsd:int ;
    fno:predicate idlab-fn:fromColumn .

idlab-fn:_toColumn
    a             fno:Parameter;
    fno:name      "index of the toColumn";
    rdfs:label    "index of the toColumn";
    fno:type      xsd:int ;
    fno:predicate idlab-fn:toColumn .

#####################
# FUNCTION MAPPINGS #
#####################

idlab-fn-m:equalMapping
    a                   fno:Mapping ;
    fno:function		idlab-fn:equal;
    fno:implementation	idlab-fn-m:utilFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "equal" ] .

idlab-fn-m:notEqualMapping
    a                   fno:Mapping ;
    fno:function		idlab-fn:notEqual;
    fno:implementation	idlab-fn-m:utilFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "notEqual" ] .

idlab-fn-m:stringContainsOtherStringMapping
    a                   fno:Mapping ;
    fno:function		idlab-fn:stringContainsOtherString;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "stringContainsOtherString" ] .

idlab-fn-m:listContainsElementMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:listContainsElement;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "listContainsElement" ] .

idlab-fn-m:getMIMETypeMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:getMIMEType;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "getMIMEType" ] .

idlab-fn-m:decideMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:decide;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "decide" ] .

idlab-fn-m:isNullMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:isNull;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "isNull" ] .

idlab-fn-m:dbpediaSpotlightMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:dbpediaSpotlight;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "dbpediaSpotlight" ] .

idlab-fn-m:trueConditionMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:trueCondition;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "trueCondition" ] .

idlab-fn-m:readFileMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:readFile;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "readFile" ] .

idlab-fn-m:randomMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:random;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "random" ] .

idlab-fn-m:inRangeMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:inRange;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "inRange" ] .

idlab-fn-m:slugifyMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:slugify;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "slugify" ] .

idlab-fn-m:normalizeDateMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:normalizeDate;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "normalizeDate" ] .

 idlab-fn-m:normalizeDateWithLangMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:normalizeDateWithLang;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "normalizeDateWithLang" ] .

idlab-fn-m:normalizeDateTimeMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:normalizeDateTime;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "normalizeDateTime" ] .

 idlab-fn-m:normalizeDateTimeWithLangMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:normalizeDateTimeWithLang;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "normalizeDateTimeWithLang" ] .

idlab-fn-m:generateUniqueIRIMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:generateUniqueIRI;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "generateUniqueIRI" ] .

idlab-fn-m:createUniqueIRIMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:createUniqueIRI;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "createUniqueIRI" ] .

idlab-fn-m:updateUniqueIRIMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:updateUniqueIRI;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "updateUniqueIRI" ] .

idlab-fn-m:implicitCreateMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:implicitCreate;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "implicitCreate" ] .

idlab-fn-m:implicitUpdateMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:implicitUpdate;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "implicitUpdate" ] .

idlab-fn-m:implicitDeleteMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:implicitDelete;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "implicitDelete" ] .

idlab-fn-m:explicitCreateMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:explicitCreate;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "explicitCreate" ] .

idlab-fn-m:explicitUpdateMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:explicitUpdate;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "explicitUpdate" ] .

idlab-fn-m:explicitDeleteMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:explicitDelete;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "explicitDelete" ] .

idlab-fn-m:toUpperCaseURLMapping
	a                   fno:Mapping ;
    fno:function		idlab-fn:toUpperCaseURL;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "toUpperCaseURL" ] .

idlab-fn-m:concatMapping
    a                   fno:Mapping ;
    fno:function		idlab-fn:concat;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "concat" ] .

idlab-fn-m:concatSequenceMapping
    a                   fno:Mapping ;
    fno:function		idlab-fn:concatSequence;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "concatSequence" ] .

idlab-fn-m:lookupMapping
    a                   fno:Mapping ;
    fno:function		idlab-fn:lookup;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "lookup" ] .

idlab-fn-m:lookupWithDelimiterMapping
    a                   fno:Mapping ;
    fno:function		idlab-fn:lookupWithDelimiter;
    fno:implementation	idlab-fn-m:idLabFunctions;
    fno:methodMapping   [ a fnom:StringMethodMapping ; fnom:method-name "lookupWithDelimiter" ] .