Jump to content

Wikifunctions:Suggest a function

From Wikifunctions

Do you have an idea for a new function? Suggest it here! It may help to refer to our glossary.

You can create a function right away if you have the user-rights.

If a function requires a new type, consider proposing it.

Note that for now we only support a limited number of types as input and output types of functions. More types are coming in the next few months. For the full list, see WF:Type.

Once created, consider adding new Functions to the catalogue.

Proposed functions requiring only available types (string, Boolean, Natural number, list)

String

String character discard functions

String character replacement functions

String search functions

String escaping and unescaping functions

String encoding and decoding functions

String presentation functions

String colour notation functions

String notation validation checks

String validation checks

  • 22.5px Doing... check if string is in lower camel case
  • check if string is a valid ISO 3166 country code
  • check if string is a valid ISO 8601 date/time (2023-08-03 ⇒ true; 2023-02-30 ⇒ false; 2023-08-03 15:00:00.000 ⇒ true; 2023-08-03 25:00:00.000 ⇒ false)
  • check if string is a valid EDTF date/time
  • 22.5px Doing... check if string is a valid email address (watch out, see this list of falsehoods about email addresses to create unit tests - email addresses are more complicated than they seem) — is valid email address (Z10410) creating test cases in progress. Currently it is stuck on figuring out what exactly is a valid emaill address. Nearly every errata for RFC:3696 is about that.
  • 22.5px Doing... check if string is a valid Wikidata itemis it a valid Qid? (Z10696) (possibly stuck on phab:T343593?)

String analysis functions

  • Word frequency counting. Provide a list of words and their frequencies.

Monolingual text

String Wikitext operations

...

Natural number

Integer

  • multiply vectors

Object

List

Basic list/iterable functions

Complex list functions

  • zip lists together: for [ A .. Z ] and [ 1 .. 26 ] return [ [ A, 1 ], [ B, 2 ], .. ]
    • Unsure what happens if input lists are of different lengths.
    • If possible this function should be able to zip more than 2 lists together... 3, 4, n? Perhaps the input should be list(list, list, list, list, ..).
  • remove elements common to second list (Z19198): return the first list with any elements common to the second list removed

CSV list operations

  • list of strings to csv
number -> list of decimal digits
number -> list of binary digits
number -> list of digits in base provided Well very well (talk) 11:20, 18 May 2024 (UTC)[reply]

Functions with functions as arguments

  • sort, by a given function
  • test whether certain functions have specific properties of homogeneous relations for particular lists/sets
  • remove first element matching filter from list

Morphological functions

morphology is the part of linguistics that studies how language parts are 'shaped' and change diachronically and when inflected. Hausa, Igbo, Malayalam, Bangla/Bengali and Dagbani are focus languages for Wikidata's lexicographic dataset, which is an important aspect of Abstract Wikipedia.

mul - Multiple languages

ase - American Sign Language

  • string: Stokoe to ase-Sgnw and vice-versa (consult @Slevinski: as to best approach)

bn - Bangla

cy - Welsh

w:en:colloquial Welsh morphology

dag - Dagbani

de - German

  • tense * person * number for each verb
    • tenses: present, past, ...?
    • person: first, second, third
    • number: singular, plural
    • 22.5px Doing... third person singular present
    • second person singular preterite

en - English

  • English verb to agent noun (Z11390) Verb -> agent noun, e.g. "dance"->"dancer"
  • Join English morphemes (extends suffix English word (Z13254) to cases like re + en + able + er + s → re-enablers. suffix English word (Z13254) will correctly join re-enable + ers or re- + enablers, but re + enablers → “renablers” (incorrect). English morpheme agglutination (Z13275) tests the Reduce function to produce “detoxification” from a list of four morphemes (orchestrator limit exceeded with five). I doubt we’ll want to derive “toxify” from “toxic”, however.
  • Derive lemmas from a form. This is envisaged as the converse of Join English morphemes. The focus would be identifying the base form (the lexeme’s lemma) rather than further segmenting the lemma. For example, “underlay” should return “underlie” (for which it is the past participle) and the noun “underlay” (for which it is the lemma) and (perhaps) the verb “underlay”, which might be the tendency of an unproductive hen or the activity of a carpet-fitter. As this is a purely functional converse, every string will have itself as a possible lemma.
  • Generate Numerical prefixes of various kinds from a natural number input.
  • sort English adjectives (Z19499): Sort a list of English adjectives into the correct order: quantity, opinion, size, physical quality, shape, age, colour, origin, material, type, purpose. Where equal, leave in original order.

eu - Basque

  • Basque language declension system in rather regular based on suffixes.
    • Here a few examples for Basque declension:
    • Before implementing all of them, we may propose an overall classification that eases both the implementation and the future usage of the functions. Here a first try based on bibliography from the Basque Language Academy:
      • Personal pronouns: they can be treated as exceptions (e.g. "zuek -> zuei", etc.) together with proper noun declension, or as a separate case.
      • Determiners: they can be treated as exceptions (e.g. "hau" -> "honek", etc) together with common noun declension, or as a separated case
      • Grammatical cases:
        • Absolutive ("Nor"): indefinite, singular and plural
        • Ergative ("Nork"): indefinite, singular and plural
        • Dative ("Nori"): indefinite, singular and plural
      • Place and Time: we must distinguish animate (AN) and inanimate (IN)
        • Inessive IN ("Non"): indefinite, singular and plural
        • Inessive AN ("Norengan"): indefinite, singular and plural - It could be a composition of "Noren" + "-gan"
        • Place and time ("Nongo"): indefinite, singular and plural
        • Allative IN ("Nora"): indefinite, singular and plural
        • Allative AN ("Norengana"): indefinite, singular and plural - It could be a composition of "Noren/Norengan" + "-gan/-a"
        • Finished Allative AN ("Noraino"): indefinite, singular and plural - It could be a composition of "Nora" + "-ino"
        • Finished Allative AN ("Norengainaino"): indefinite, singular and plural - It could be a composition of "Noregana" + "-ino"
        • Right way Allative IN ("Noratz"): indefinite, singular and plural - It could be a composition of "Nora" + "-ntz"
        • Right way Allative AN ("Norenganantz"): indefinite, singular and plural - It could be a composition of "Norengana" + "-ntz"
        • Ablative IN ("Nondik"): indefinite, singular and plural
        • Ablative AN ("Norengandik"): indefinite, singular and plural
      • Rest of the cases:
        • Partitive ("Zerik"): indefinite
        • Possessive ("Noren"): indefinite, singular and plural
        • Sociative ("Norekin"): indefinite, singular and plural
        • Instrumental ("Zerez"): indefinite, singular and plural
        • Motivative ("Zerengatik"): indefinite, singular and plural
        • Destinative ("Norentzat"): indefinite, singular and plural - It could be a composition of "Noren" + "-tzat"
      • Special case:
        • Prolative ("Nortzat"): indefinite
      • To take into consideration:
        • Together with animate and inanimate classification, we should also consider if the noun is a proper noun ("izen berezia"). We can identify that automatically (e.g. check if written in Title case, but this may not be always possible like in the beginning of sentences), but a dedicated function may be preferred (or a boolean to the generic function saying it is a proper noun).
        • The main distinction is between noun ending by vowel or consonant that can be easily computed

fr - French

ha - Hausa

A notated demo sentence ("Aishà taa jeefar dà kàren Indoo" ― "Aisha threw away Indo's dog") is available at http://intent.xigt.org

ig - Igbo

ldn - Láadan

section moved to WF:human languages/Z1882

ml - Malayalam

Proposed functions requiring future types

Note these functions cannot be implemented properly until the needed types are requested and approved.

If one wishes to nevertheless attempt to define and implement them,

  • the functions and implementations should indicate prominently in their labels that their input/output types must be adjusted once support for the appropriate replacement types become available; and
  • the functions should not be used in the implementations of any other functions, as the later adjustment of input/output types to appropriate replacements will break those implementations.

String manipulation functions

String analysis functions

  • count distance between two letters in given alphabet (default to 26-charcater western alphabet. case insensitive. e.g. "a" & "A" ⇒ 0; "K" & "N" ⇒ 3)

String encoding and decoding functions

(would be better with types representing a stream of bytes)

  • BASE45 encode
  • BASE45 decode
  • Hexadecimal UTF-8 encode ("ABC ₤" ⇒ "41 42 43 20 E2 82 A4")
  • Hexadecimal UTF-8 decode ("41 42 43 20 E2 82 A4" ⇒ "ABC ₤")
  • Decimal UTF-8 encode ("ABC ₤" ⇒ "65 66 67 32 226 130 164")
  • Decimal UTF-8 decode ("65 66 67 32 226 130 164" ⇒ "ABC ₤")
  • Octal UTF-8 encode ("ABC ₤" ⇒ "101 102 103 40 342 202 244")
  • Octal UTF-8 decode ("101 102 103 40 342 202 244" ⇒ "ABC ₤")
  • Binary UTF-8 encode ("ABC ₤" ⇒ "01000001 01000010 01000011 00100000 11100010 10000010 10100100")
  • Binary UTF-8 decode ("01000001 01000010 01000011 00100000 11100010 10000010 10100100" ⇒ "ABC ₤")
  • Unicode code point encode ("ABC ₤" ⇒ "41 42 43 20 20A4") - Unicode code point encode hex (Z10785)
  • Unicode code point decode ("41 42 43 20 20A4" ⇒ "ABC ₤")
  • Create regular expression object/string (i.e: "test" & "i" to /test/i)

Natural language functions

Cryptographic hash functions

(would be better with types representing a stream of bytes)

Colour functions

  • return colour contrast ratio (per [1]) of two RGB colours (provided as strings e.g. "#FF0000")

Date, time, and calendric functions

Note: 'time' type not yet supported, use 'string' (or for strictly numeric values, 'natural number')

Bengali calendar

Gregorian to Bengali date (Bangladesh) (Z12926): Converts a Gregorian date to Bangla date per Bangladeshi calendar. Inputs: Year, Month, Day.

Chinese calendar

French Republican Calendar

decimalises and secularises the Gregorian

Gregorian

widely used calendar derived from the Julian, basis for ISO 8601

  • date to ISO week number ISO week date (Q2110154)
  • string to date
  • date to ISO 8601 string
  • date to year (yyyy)
  • date to month of the year (1-12)
  • date to month name (January-December)
  • date to day of the month (1-31)
  • date to hour of the day (0-23)
  • date to minutes (0-59)
  • date to seconds (0-59)

Holocene calendar

Indian national calendar

Islamic

a solar calendar, also called Hijri

Julian

mostly used by astronomers, some historians, and some Orthodox Christian denominations

Mesoamerican calendars

including civil and clerical forms

Persian

also called Jalali

Thai calendar

Hebrew calendar

Basic numerical functions

  • round up ("1.289" & "2" ⇒ "1.29"; "5678" & "2" ⇒ "5700")
    So if the number is floating point, round to n decimal places, and if not, round to n significant figures. Is that right? BrightSunMan (talk) 19:36, 24 December 2023 (UTC)[reply]
  • round down
  • return integer value (5678.678 ⇒ 5678)
  • English cardinal (Z13587): expresses a natural number in English words (23 ⇒ "twenty-three")
  • Convert money from US$ to anything else
    • requires source of conversion rates, which is a hole in function-likeness
  • Arabic numeral to Etruscan numeral
  • Etruscan numeral to Arabic numeral

Data serialization functions

Basic list/iterable functions requiring numeric types

  • Sum the elements of a numeric list - sum the elements of a list of natural numbers (Z14038)
  • Product of the elements of a numeric list
  • flat a list (Z12676): flatten a list to limited depth
  • Slice of list elements: for the supplied list, return a list of elements that are at indexes between a supplied range n:m
    • Zero indexing is used (first element is index 0)?
    • n and m are are included in the range?
    • What happens if n and/or m are invalid indexes?
  • Remove slice of elements from list: return the supplied list with elements between a supplied range of indexes removed
    • Zero indexing is used (first element is index 0)?
    • n and m are are included in the range?
    • What happens if n and/or m are invalid indexes?
  • Every nth element of list: returns every nth element of the supplied list
  • Remove every nth element of list: removes every nth element of the supplied list -
  • sample n objects from list (return up to n random objects from the list)
  • Jaccard similarity coefficient (see https://en.wikipedia.org/wiki/Jaccard_index)

Geodetics functions

w:en:planetary coordinate system, w:en:well-known text representation of coordinate reference systems

Earth

  • convert coordinates outside of the ranges (-180, 180) for longitude and (-90, 90) for latitude to a canonical form

Mars

  • convert coordinates outside of the ranges [0, 360) for longitude and (-90, 90) for latitude to a canonical form

Unit conversion functions

Object / type / function functions

External function lists