Wikifunctions
wikifunctionswiki
https://www.wikifunctions.org/wiki/Wikifunctions:Main_Page
MediaWiki 1.47.0-wmf.6
first-letter
Media
Special
Talk
User
User talk
Wikifunctions
Wikifunctions talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
TimedText
TimedText talk
Module
Module talk
Translations
Translations talk
Event
Event talk
Z6
0
9
282432
274695
2026-06-12T01:11:48Z
七八年再来一次
10776
282432
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z6"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z6",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z6K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "wartość"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "值"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "hodnota"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "värde"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "ערך"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Wert"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "nilai"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "waarde"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "值"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "valeur"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "значение"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "valoare"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "قيمة"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "valore"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "वैल्यू"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1207",
"Z11K2": "қимат"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1844",
"Z11K2": "halaga"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1823",
"Z11K2": "стойност"
}
]
}
}
],
"Z4K3": "Z106",
"Z4K4": "Z866",
"Z4K7": [
"Z46"
],
"Z4K8": [
"Z64"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "String"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "অক্ষর সারি"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1083",
"Z11K2": "لکھت"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1657",
"Z11K2": "ਲਿਖਤ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "Tekst"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "Textsträng"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "Строка"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "signoĉeno"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Řetězec"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Zeichenkette"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "文字列"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מחרוזת"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1048",
"Z11K2": "Chuỗi"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "tekenreeks"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1227",
"Z11K2": "Streng"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "chaîne"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "สตริง"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "cadena de caracteres"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Cadeia de caracteres"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1237",
"Z11K2": "Metin"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "Рядок"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "String"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1272",
"Z11K2": "niz"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Untaian"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1643",
"Z11K2": "문자열"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "字符串"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "字串"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "συμβολοσειρά"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1531",
"Z11K2": "Rentetan"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1434",
"Z11K2": "رينتيتن"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1099",
"Z11K2": "Zeecheketten"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1288",
"Z11K2": "زنجیرەنووسە"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Stringa"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1051",
"Z11K2": "merkkijono"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Șir"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "سلسلة"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "Ниска"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "स्ट्रिंग"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1597",
"Z11K2": "Mətn"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1207",
"Z11K2": "сатр"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1844",
"Z11K2": "Hanay"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1823",
"Z11K2": "Низ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1762",
"Z11K2": "nimi"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1592",
"Z31K2": [
"Z6",
"Unicode-text",
"Sträng",
"Text"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1048",
"Z31K2": [
"Z6",
"Chuỗi ký tự",
"Chuỗi kí tự",
"Chuỗi chữ",
"Xâu",
"Xâu ký tự"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1003",
"Z31K2": [
"Z6",
"string",
"ristra de caracteres"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1272",
"Z31K2": [
"Z6",
"niska",
"string"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1851",
"Z31K2": [
"Z6",
"สายอักขระ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"Teks"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1643",
"Z31K2": [
"Z6",
"스트링",
"텍스트"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"বর্ণশৈলী",
"অক্ষর শ্রেণী",
"স্ট্রিং",
"শব্দগুচ্ছ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1001",
"Z31K2": [
"Z6",
"سلسلة محارف، سلسلة حروف"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1181",
"Z31K2": [
"Z6",
"стринг"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A sequence of characters, and one of the fundamental Z4/Types available in the Wikifunctions system."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "বর্ণের অনুক্রম; এই উইকির একটি আদি Z4/(উপাত্তের ধরন)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "Ciąg znaków, jeden z podstawowych typów (Z4) w systemie Wikifunkcji."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "en serie skrivtecken, grundläggande datatyp i Wikifunctions"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "sekvenco de signoj; unu el la fundamentaj Z4/tipoj disponeblaj en la sistemo de Vikifunkcioj"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Posloupnost znaků; jeden ze základních Z4/Typů dostupných v systému Wikifunkcí"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Folge von Zeichen und einer der grundlegenden Typen, die im Wikifunctions-System verfügbar sind"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "רצף של תווים, אחד ה־Z4/סוגים היסודיים ביותר שזמינים בוויקיפונקציות."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "reeks tekens en is een van de fundamentele Z4/types beschikbaar in het Wikifuncties-systeem."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1048",
"Z11K2": "Kiểu dữ liệu thể hiện một dãy ký tự; một trong các kiểu dữ liệu cốt lõi của Wikifunctions"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "Une suite de caractères, ainsi qu'un des Z4/Types fondamentaux disponibles dans Wikifunctions"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Secuencia de caracteres, y uno de los Z4/Tipos fundamentates de Wikifunctions"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Uma sequência de caracteres e um dos Z4/Tipos fundamentais disponíveis no sistema da Wikifunções."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "A sequence of characters, and is one of the fundamental Z4/Types available in the Wikifunctions syst"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "ลำดับของตัวอักษร หนึ่งใน Z4/ชนิด พื้นฐานในระบบวิกิฟังก์ชันส์"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Serangkaian karakter; salah satu Z4/Tipe fundamental yang tersedia di sistem Wikifunctions"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1643",
"Z11K2": "문자를 나열한 것으로 위키함수 시스템에서 사용 가능한 기초 Z4/유형의 하나입니다."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1531",
"Z11K2": "Urutan aksara dan salah satu Z4/Jenis asas yang tersedia dalam sistem Wikifungsi."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1434",
"Z11K2": "اوروتن اکسارا دان ساله ساتو Z4/جنيس اساس يڠ ترسديا دالم سيستم ويکيفوڠسي."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1288",
"Z11K2": "زنجیرەیەکە لە نووسەکان، و یەک لە تایپە سەرەکییەکانە (Z4) کە لە سیستمی ویکیفانکشنز بەردەستە."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Una sequenza di caratteri e uno dei tipi fondamentali nel sistema Wikifunctions"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "O secvență de caractere și unul dintre tipurile fundamentale Z4/Tipuri disponibile în sistemul Wikifuncții."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "سلسلة من المحارف، وواحدة من Z4/الأنواع الأساسية المتوفرة في نظام ويكي الدوال"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "Низ знакова. Један од основних Z4/Типова података у Викифункцијама."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "कैरेक्टर्स का एक अनुक्रम, और विकिफ़ंक्शन्स में उपलब्ध मौलिक Z4/प्रकारों में से एक।"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1844",
"Z11K2": "Isang hanay ng mga titik, at isa sa mga pangunahing Z4/Uri na magagamit sa sistemang Wikipunsiyon."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1823",
"Z11K2": "Последователност от символи и един от основните Z4/типове, налични в системата Wikifunctions."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": " 一个字符序列,也是维基函数系统中可用的基本 Z4/类之一。"
}
]
}
}
qnrhg0ke75mdi1a9gexeh97fo44peff
Z80
0
32
282416
277077
2026-06-12T00:37:28Z
七八年再来一次
10776
282416
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z80"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z80",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z13518",
"Z3K2": "Z80K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "ערך"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "wartość"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "মান"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "值"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "値"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Wert"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "nilai"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "值"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "valeur"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "valoare"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "valore"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "вредност"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "वैल्यू"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "hodnota"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1823",
"Z11K2": "стойност"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
],
"Z4K3": "Z180",
"Z4K4": "Z22373",
"Z4K5": "Z22887",
"Z4K6": "Z22866",
"Z4K7": [
"Z46",
"Z22371",
"Z22372"
],
"Z4K8": [
"Z64",
"Z22379",
"Z22378"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Byte"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "Bajt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "Byte"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "বাইট"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Byte"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "バイト"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "בית"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1048",
"Z11K2": "Byte"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "byte"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1237",
"Z11K2": "Bayt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "Byte"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "ไบต์"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Bita"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "字节"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "位元組"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1013",
"Z11K2": "Byte"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1099",
"Z11K2": "Byte"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "octet"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "byte"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "बाइट"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "octet"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Byte"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "Байт"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1643",
"Z11K2": "바이트"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1394",
"Z11K2": "Bajt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "Бајт"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Bajt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1823",
"Z11K2": "Байт"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1186",
"Z31K2": [
"Z6",
"בַּיְיט",
"בייט",
"בַּיִת"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1048",
"Z31K2": [
"Z6",
"Bai",
"Bai-tơ",
"Baitơ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1664",
"Z31K2": [
"Z6",
"byte"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"Byte"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"octet",
"u8"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1645",
"Z31K2": [
"Z6",
"八比特组",
"u8"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "åtta bitar"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "আটটি বিট; তথ্যের ক্ষুদ্রতম একক"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "8 סיביות"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "แปดบิต"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "Байт"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "a numeric type; can hold any integral value in the range 0..\u003C2⁸, that is, whole numbers between 0 and 255 inclusive"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "一种数值类型;可存储0..\u003C2⁸范围内的任意整数值,即0到255(含)间的整数"
}
]
}
}
63y1574juu6ogycmeckfek84mr21m5q
Z86
0
33
282431
269334
2026-06-12T01:10:45Z
七八年再来一次
10776
282431
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z86"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z86",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z13518",
"Z3K2": "Z86K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "wartość"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "মান"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "值"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "値"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Wert"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "nilai"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "值"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "valeur"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "valore"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "वैल्यू"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1823",
"Z11K2": "стойност"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
],
"Z4K3": "Z186",
"Z4K4": "Z22683",
"Z4K5": "Z24823",
"Z4K6": "Z23041",
"Z4K7": [
"Z46",
"Z22662",
"Z22663"
],
"Z4K8": [
"Z64",
"Z22665",
"Z22666"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Unicode code point"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "Punkt kodowy"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "Unicode-tecken"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "ইউনিকোড কোড পয়েন্ট"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Codepunkt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "コードポイント"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "кодовая точка"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1048",
"Z11K2": "Điểm mã"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "codepunt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "Code point"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "โค้ดพอยต์"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Titik kode"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "码位"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "碼位"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "נקודת קוד"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "isi koodu"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "point de code Unicode"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Ponto de código Unicode"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "यूनिकोड कोड पॉइंट"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Kódový bod Unicode"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1823",
"Z11K2": "Unicode кодова точка"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"UTF-8 code point",
"Character",
"Unicode scalar value"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1025",
"Z31K2": [
"Z6",
"Punkt kodowy UTF-8",
"Znak",
"Litera"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1592",
"Z31K2": [
"Z6",
"kodpunkt",
"typografiskt tecken",
"tecken"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1830",
"Z31K2": [
"Z6",
"符号点",
"符号位置"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1048",
"Z31K2": [
"Z6",
"Mã số"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"Titik kode UTF-8",
"Karakter"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1186",
"Z31K2": [
"Z6",
"נְקֻדַּת קוֹד",
"נקדת קוד",
"קוד פוינט",
"קודפוינט",
"קוד-פוינט",
"קוד־פוינט"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1381",
"Z31K2": [
"Z6",
"Ponto de código UTF-8",
"Caractere"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"Znak",
"Unicode znak",
"Unicode kód"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1823",
"Z31K2": [
"Z6",
"UTF-8 кодова точка",
"Символ",
"Характер",
"Знак"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1645",
"Z31K2": [
"Z6",
"UTF-8 点代码",
"Unicode 标量值",
"代码点"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "значение, связанное с символом в схеме кодирования"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "נְקֻדַּת קוֹד, דגם סיביות לייצוג תו."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A single code point in Unicode"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "un seul caractère en Unicode"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Un singolo codepoint in Unicode"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Um ponto de código Unicode"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "यूनिकोड में एक कोड पॉइंट।"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Jedna hodnota podle Unicode, často odpovídající jednomu znaku"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1823",
"Z11K2": "Една кодова точка в Unicode "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "Unicode 中的单个点代码"
}
]
}
}
39yo7pjitgmj0uuvhu6jwimmgxz6nk5
Z516
0
111
282413
259766
2026-06-12T00:30:39Z
七八年再来一次
10776
282413
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z516"
},
"Z2K2": {
"Z1K1": "Z50",
"Z50K1": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z39",
"Z3K2": "Z516K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "argument"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Argument"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "argomento"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "argument"
}
]
}
},
{
"Z1K1": "Z3",
"Z3K1": "Z99",
"Z3K2": "Z516K2",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "bad value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "schlechter Wert"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "valore sbagliato"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "chybná hodnota"
}
]
}
}
],
"Z50K2": "Z516"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Argument value error"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Argumentwert-Fehler"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "fout in argumentwaarde"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "ความผิดพลาดค่าของอาร์กิวเมนต์"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "আর্গুমেন্ট মান ত্রুটি"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Njehie uru arụmụka"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "erreur de valeur d'argument"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Errore sul valore dell'argomento"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Chyba hodnoty argumentu"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "参数值错误"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ainm55r6f1eyu8d7dyqxl259yceisf3
Z881
0
192
282403
274541
2026-06-11T23:41:42Z
七八年再来一次
10776
从英语翻译描述
282403
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z881"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z4",
"Z17K2": "Z881K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "item type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পদের ধরন"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "typ položky"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "סוג הפריט"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "typ elementu"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "tipe elemen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "itemtype"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "项类型"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "項目類型"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "ชนิดของไอเทม"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "objekttyp"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ụdị ihe:Ụdị"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "tipo de item"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Objekttyp"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "tipo de elemento"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "type d'élément"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "tip element"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "тип элемента"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Tipo degli elementi"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "आयटम का प्रकार"
}
]
}
}
],
"Z8K2": "Z4",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z981"
],
"Z8K5": "Z881"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Typed list"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "ধরনযুক্ত তালিকা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Typovaný seznam"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "typisierte Liste"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "型付きリスト"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "getypte lijst"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "liste typée"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "רשימה מסווגת"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Lista tipada"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "Typowana lista"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Daftar bertipe"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "类型化列表"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "類型化串列"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "รายการระบุชนิด"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1013",
"Z11K2": "Jerin da aka buga"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Edepụtara ndepụta"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Lista tipada"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "Типизированный список"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Listă tipizată"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "قائمة نوع"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "Типізований список"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Lista tipizzata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "प्रकारयुक्त सूची"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1207",
"Z11K2": "рӯйхати навъӣ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1762",
"Z11K2": "ijo mute"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1672",
"Z31K2": [
"Z6",
"類型化清單"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1851",
"Z31K2": [
"Z6",
"ไทปต์ลิสต์",
"ลิสต์ระบุชนิด"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"list",
"array",
"np.array"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1186",
"Z31K2": [
"Z6",
"רשימת טיפוס",
"רשימה"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1381",
"Z31K2": [
"Z6",
"lista"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1003",
"Z31K2": [
"Z6",
"lista"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1664",
"Z31K2": [
"Z6",
"listă"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1005",
"Z31K2": [
"Z6",
"Список с типом"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"lista"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"seznam",
"pole"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "একটি তালিকা যার মধ্যে সকল পদের ধরন একই"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "רשימה שכל איבריה הם מאותו הסוג"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A list containing items of the same type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1851",
"Z11K2": "รายการของไอเทมที่มีชนิดเดียวกัน"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "Список, що містить елементи одного типу"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "en lista med objekt av samma typ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Ndepụta nwere ihe ndị nwere otu ụdị"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Uma lista contendo itens do mesmo tipo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Liste enthält Objekte des gleichen Typs"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Una lista que contiene elementos del mismo tipo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "une liste qui contient des éléments du même type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "Список, содержащий элементы одного типа"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "O listă care conține elemente de același tip"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "قائمة تحتوي عناصر من نفس النوع"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Una lista contenente elementi dello stesso tipo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "एक ही प्रकार के आयटमों वाली एक सूची"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Seznam obsahující položky stejného typu"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "含同类项的一个列表"
}
]
}
}
o7z4tpigvb5arwoq9xkb30r90pk41qc
Z882
0
193
282408
260374
2026-06-11T23:58:10Z
七八年再来一次
10776
从英语翻译至中文
282408
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z882"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z4",
"Z17K2": "Z882K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "প্রথম ধরন"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "premier type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ụdị mbụ: Ụdị"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "primo tipo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "पहला प्रकार"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "první typ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "类一"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z4",
"Z17K2": "Z882K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "দ্বিতীয় ধরন"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "second type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ụdị nke abụọ: Ụdị"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "secondo tipo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "दूसरा प्रकार"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "druhý typ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "类二"
}
]
}
}
],
"Z8K2": "Z4",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z982"
],
"Z8K5": "Z882"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Typed pair"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "ধরনযুক্ত যুগল"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "typisiertes Paar"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "getypt paar"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "couple typé"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Ejikọtara ụzọ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Coppia tipizzata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "प्रकारयुक्त जोड़ी"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Pasangan yang diketik"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Typovaný pár"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "类对"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1004",
"Z31K2": [
"Z6",
"pair",
"tuple",
" uplet",
"clé-valeur"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"Typovaná dvojice",
"Pár",
"Dvojice"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"Tuple"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1645",
"Z31K2": [
"Z6",
"元组"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "একটি জোড়া যার দুটি বস্তুর বিশেষ ধরন থাকে"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A type that holds a pair of types"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "un type qui contient un couple typé"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Ụdị nke na-ejide ụzọ abụọ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Un tipo che contiene una coppia di elementi di due determinati tipi"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "एक प्रकार जिसमें प्रकारों की एक जोड़ी हो"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Generický typ, který uchovává dvě hodnoty daných typů"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "一种用于存储一对类的类型"
}
]
}
}
6l031cgypunzg7657pf8xqn2plm27th
Z883
0
194
282412
260373
2026-06-12T00:09:31Z
七八年再来一次
10776
英译中
282412
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z883"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z4",
"Z17K2": "Z883K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "key type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "নির্দেশকের ধরন"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ụdị igodo: Ụdị"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "tipo de chave"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": " type de clé"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "कुँजी का प्रकार"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "typ klíče"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "键型"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z4",
"Z17K2": "Z883K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "value type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "মানের ধরন"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ụdị uru: Ụdị"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "tipo de valor"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": " type de valeur"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "वैल्यू का प्रकार"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "typ hodnoty"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "值型"
}
]
}
}
],
"Z8K2": "Z4",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z983"
],
"Z8K5": "Z883"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Typed map"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "ধরনযুক্ত ম্যাপ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "typisierte Abbildung"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "getypt figuur"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Ederede map"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Mapa tipado"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "carte dactylographiée"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "प्रकारयुक्त नक्शा"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "Список «ключ — значение»"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Typovaná mapa"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "类型映射表"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"map",
"Typed Dictionary",
"dict",
"Dictionary",
"Associative array"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1381",
"Z31K2": [
"Z6",
"mapa"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1005",
"Z31K2": [
"Z6",
"типизированный ассоциативный массив",
"словарь"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"Mapa",
"Slovník",
"Tabulka",
"Asociativní pole"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1645",
"Z31K2": [
"Z6",
"映射表",
"类目",
"字典",
"词典",
"关联数组"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "নির্দেশক/মান যুগলের তালিকা; সকল নির্দেশক একই ধরন, আর সকল মান একই ধরন"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ndepụta nke egosi / uru ụzọ abụọ; ntụnye aka niile bụ otu ụdị, na niile ụkpụrụ bụ otu ụdị"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "an unordered list of elements, each containing a unique key that points to the element's contained value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "तत्वों की एक अक्रमांकित सूची, जिसकी हर तत्व में एक कुँजी हो जो तत्व में रखे वैल्यू की ओर इशारा करे"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "Список, содержащий пары: каждому уникальному ключу соответствует значение (необязательно уникальное)."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Generický typ uchovávající neseřazený seznam prvků, z nichž každý obsahuje unikátní klíč a příslušnou hodnotu"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "一含多元素的无序列,每个元素都有一专一键指向该元素所包含的值"
}
]
}
}
2okoujc5wuc5ny2iz28157vxqkgdpuv
Z1625
0
851
282350
216279
2026-06-11T18:45:22Z
Virinas-code
2884
282350
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z1625"
},
"Z2K2": {
"Z1K1": "Z60",
"Z60K1": "mg",
"Z60K2": [
"Z6",
"plt"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Malagasy"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1625",
"Z11K2": "Malagasy"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Malagasy"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "Malagasi"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "マダガスカル語"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "马达加斯加语"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "馬達加斯加語"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "μαλγασικά"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1643",
"Z11K2": "말라가시어"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "मालागासी"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "Malgache"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
lbmpvx8frpzrfzbfzi4vb4d2sxikmyq
Wikifunctions:Project chat
4
1184
282522
281917
2026-06-12T03:08:05Z
SpBot
978
archive 3 sections: 3 to [[Wikifunctions:Project chat/Archive/2026/05]] (after section [[Wikifunctions:Project chat/Archive/2026/05#RGBA_colour,_spelling...|RGBA_colour,_spelling...]]) - previous edit: [[:User:SpBot|SpBot]], 2026-06-10 03:08
282522
wikitext
text/x-wiki
{{shortcut|[[WF:CHAT]]|[[WF:PC]]|[[WF:VP]]}}
__NEWSECTIONLINK__
[[Category:Help]] <!-- please do not remove this line -->
Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.
Other places to find help:
* [[Wikifunctions:Administrators' noticeboard]]
* [[Wikifunctions:Report a technical problem]]
* [[Wikifunctions:FAQ]]
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{#tag:div|<br />{{Flatlist|{{Special:PrefixIndex/WF:Project chat/Archive/|stripprefix=1|hideredirects=1}}
|class=mw-collapsible-content|style=font-size:92%;}}|class="mw-collapsible mw-collapsible-toggle mw-collapsed"}}
|prefix=WF:Project chat/Archive/
}}
== Wikifunctions & Abstract Wikipedia Newsletter #248 is out: A higher meaning ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-05-15|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we discuss functions creating language fragments, we present our latest news in Types, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 14:36, 15 May 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30536976 -->
== [[Z34510]] ==
This function, which determines if a Wikidata item for a {{q|5}} has an undeprecated {{p|21}} statement of {{q|6581097}}, returns false for {{q|173399}}, a transgender man. This is because his item assigns his P21 statement to {{q|2449503}}, not {{q|6581097}}. I'm not sure how to account for this discrepancy. Should {{z|34510}}:
# Include {{q|2449503}} as a value that can lead to a true result,
# Not include {{q|2449503}} as a value that can lead to a true result, while another function (e.g., "Q5 is a man?") could return true for either "male" or "trans man",
# Not include {{q|2449503}} as a value that can lead to a true result, while another function (e.g., "Q5 is a trans man?") could return true for "trans man",
# Not exist at all?
[[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 16:48, 16 May 2026 (UTC)
:I can't think of a single use case where you would need to determine if a person is a cisgender man and nothing else. Functions are good for generalizing across multiple possibilities when they exist, so I think it would be best if trans men were considered a part of the criteria for returning a true value. If asking for specifically {{q|6581097}}s and ''nothing'' else was desired then the function name would be a misnomer as Elliot Page is inarguably a male (at least in the view of most reasonable and intelligent people). — [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 19:03, 16 May 2026 (UTC)
:You made the function in the first place; what were you planning on using it for? AW? Maybe it should return a {{Z|25501}} which can then be passed on to other NLG functions. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 20:01, 16 May 2026 (UTC)
== Lexeme from wikidata label, or "best" lexeme from wikidata item ==
I was looking into fixing [[Z28028]]. I found that I could add "requires grammatical feature: definite article" to "United Kingdom" (L8558). Now I'm stuck on how to get to that lexeme from {{Q|145}}. There's [[Z23471]], but that for very good reason gives you multiple lexemes with the same sense, and I just want the best one like how the label is always the best string. Is there a function that can do this?
There's definitely the case of a Wikidata label that isn't a lexeme (most commonly multiple lexemes) but I'm only considering the case where it is one lexeme here. [[User:Aaron Liu|Aaron Liu]] ([[User talk:Aaron Liu|talk]]) 20:02, 16 May 2026 (UTC)
:There is {{Z|Z27327}}, that tries to give the best lexeme through various heuristics. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 22:22, 16 May 2026 (UTC)
:: Wonderful! I did stumble upon [[Z33818]] but this is perfect. [[User:Aaron Liu|Aaron Liu]] ([[User talk:Aaron Liu|talk]]) 00:25, 17 May 2026 (UTC)
== [[Z29591]] isn't working for me ==
For instance, trying to manually put in the exact inputs for one of the test cases just returns an empty Monolingual text. See [https://www.wikifunctions.org/wiki/Z29591?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z29591%22%2C%22Z29591K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q3257809%22%7D%2C%22Z29591K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q21264361%22%7D%2C%22Z29591K3%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q22006653%22%7D%2C%22Z29591K4%22%3A%22Z1002%22%7D]. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 01:17, 17 May 2026 (UTC)
:You used [[:d:Q22006653]] rather than [[:d:Q1075]]. It looks like the [https://www.wikifunctions.org/wiki/Special:RunFunction?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z30784%22%2C%22Z30784K1%22%3A%7B%22Z1K1%22%3A%22Z11%22%2C%22Z11K1%22%3A%22Z1002%22%2C%22Z11K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z21394%22%2C%22Z21394K1%22%3A%5B%22Z6%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z22664%22%2C%22Z22664K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q22006653%22%7D%2C%22Z22664K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q21264361%22%7D%2C%22Z22664K3%22%3A%22Z1002%22%7D%5D%7D%7D%7D explanatory error] is suppressed by the [https://www.wikifunctions.org/view/en/Z30009?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z30009%22%2C%22Z30009K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z30784%22%2C%22Z30784K1%22%3A%7B%22Z1K1%22%3A%22Z11%22%2C%22Z11K1%22%3A%22Z1002%22%2C%22Z11K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z21394%22%2C%22Z21394K1%22%3A%5B%22Z6%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z22664%22%2C%22Z22664K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q22006653%22%7D%2C%22Z22664K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q21264361%22%7D%2C%22Z22664K3%22%3A%22Z1002%22%7D%5D%7D%7D%7D%2C%22Z30009K2%22%3A%22Z801%22%7D final transformation]. The returned result is not actually empty; if you expand it, you can see that it is an unresolved function call. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 09:59, 17 May 2026 (UTC)
== [[Z35298]] ==
Does anyone know what the problem with this implementation is? [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 21:14, 18 May 2026 (UTC)
:There is a bug that doesn't allow Python implementation to return nested lists. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 05:31, 19 May 2026 (UTC)
::Is there a Phabricator task for this? Searching through them is hell. — [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 03:22, 20 May 2026 (UTC)
:::A bit of time ago I opened [[phab:T392750]], which is very similar to this issue. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 05:26, 20 May 2026 (UTC)
== May 2026 Wikimedia Café meetups regarding the Wikimedia Foundation Annual Plan ==
<div class="border-box" style="background-color: var(--background-color-warning-subtle, #f8eaba); max-width: 875px; padding: 5px; border: 1px solid black; margin: 5px; color: var(--clr-dark)">
<div class="box" style="float:left; padding-top: 15px; padding-right: 15px;">[[File:Wikimedia Café logo in plain SVG format.svg|75px|alt=The logo for the Wikimedia Café]]</div>
Hello! There will be two '''[https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9 Wikimedia Café]''' discussion opportunities during the last weekend of May. Both sessions will focus on the [https://meta.wikimedia.org/wiki/Wikimedia_Foundation_Annual_Plan/2026-2027 the 2026-2027 Wikimedia Foundation Annual Plan]. Participants may attend either or both sessions.
#'''Saturday, 30 May 2026 at 15:00 UTC''' ([https://zonestamp.toolforge.org/1780153200 timestamp converter]), at a time friendly to the Americas, Africa, and Europe
#'''Sunday, 31 May 2026 at 05:00 UTC''' ([https://zonestamp.toolforge.org/1780203600 timestamp converter]), at a time friendly to Asia and the Pacific
Café participants are highly encouraged to read in advance [https://en.wikipedia.org/wiki/User:Sohom_Datta/annual_plan_guide at least this summary of the plan]. Optionally, Café participants are encouraged to read portions of the plan that interest them and [https://meta.wikimedia.org/wiki/Talk:Wikimedia_Foundation_Annual_Plan/2026-2027 ask questions or provide feedback on the Annual Plan talk page].
Please see the Café page for more information, including [https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9#May_2026_meetings_with_a_focus_on_Wikimedia_Foundation_Annual_Plan/2026-2027 tables of timestamp conversions for both sessions], [https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9#Agenda._This_will_be_an_approximately_1_hour_Caf%C3%A9_session,_and_is_extendible_for_an_additional_30_minutes_if_needed. the agenda], and [https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9#How_to_attend_the_session how to register]!
<br />
[[File:Buntstifte Eberhard Faber crop 64h.jpg|860px|alt=cropped image of colored pencils]]</div>
<span style="white-space:nowrap;">[[User:Pine|<span style="color:#01796f; text-shadow:#00BFFF 0 0 1.0em">↠Pine</span>]] [[User talk:Pine|<span style="color:DeepSkyBlue">(<b style="color:#FFDF00;text-shadow:#FFDF00 0 0 1.0em">✉</b>)</span>]]</span> 19:56, 21 May 2026 (UTC)
== How to handle items without lexemes ==
NLG functions relay heavily on the presence of lexemes associated to items on Wikidata. But we know that not all the Wikidata items have an associated lexeme. There are multiple reasons why an item does not have an associated lexeme, like:
# The lexeme has not been created yet
# The item represents a place
# The item represents a person
# The item represents a specific concept that can only be expressed by a specific combination of words that cannot be [[Wikidata:Wikidata:Lexicographical data/Notability|notable]] (like {{Q|Q61220733}}).
My doubt is: what should we do with this fourth category? For many languages, just using the Wikidata item label is not possible, since it is necessary to conjugate the words or to retrieve grammatical information like the gender. What should we do? [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:09, 23 May 2026 (UTC)
:In that particular example, I think the thing to do is read its {{P|279}}: {{Q|21191270}}, then have some kind of heuristic based on that which says to take its {{P|8345}} and attach that Item's label to a Form of the word for "episode". In general, synthesising Lexemes for proper nouns is one of the problems that [[abstract:User:Dv103/Abstract_articles_architectures|proposals in your list here]] will have to address. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 22:59, 23 May 2026 (UTC)
[[File:Wikidata content 2024.svg|thumb|Content of Wikidata by type]]
::{{ping|Dv103}} very good point.
::For your point 2, it depends of the place but I think that quite often a lexeme can be created (most "Administrative territorial entity", most geographical entity, etc.). And with 3, your can add a lot of types (see pie chart) : Scholarly article, Human (with a very few exception), Wikimedia Category, Disambig, etc. which is (rough estimation) 2/3 of Wikidata items.
::A common rule (in dictionaries since forever and in Lexemes) is to not create an entry which is the "sum of its part". In this case, "Star Trek episode" is just episode + Star Trek, nothing more than its part. So logically, as {{U|YoshiRulz}} said, when no corresponding lexeme is found, the item should be decomposed the same way, the hard part is to know how to decompose it as the property will vary ; P31 and P279 are an obvious start but beyond that, I'm not sure we could find a general solution.
::PS: it's beyond you question but there is also the reverse problem, how to select one lexeme when multiple are linked to the same item...
::Cheers, [[User:VIGNERON|VIGNERON]] ([[User talk:VIGNERON|talk]]) 10:43, 24 May 2026 (UTC)
:::For the point 2, I think humans will be used way more than scholarly articles and disambiguations in NLG functions (outside references), that's why humans concern me more (still a cool pie chart, though).
:::For the reverse problem, there is already {{Z|Z27327}}: it's far from perfect, but usually makes a decent choice. Obviously it is not "complete", and probably it will never be complete, but it will have to be progressively improved by the community. And probably in the future we will need to create similar functions to select the best lexeme in more specific cases.
:::For my fourth point, I didn't think about the decomposition, but it is something that could be done with another never-complete community-mantained function, that progressively keeps being improved. If [[Wikifunctions:Type proposals/Semantic unit|semantic units]] will be implemented, through them it could actually be possible to do this operation in a laguage-independent way. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 12:10, 24 May 2026 (UTC)
::{{re|YoshiRulz}} Proper noun synthesis, along with other fallbacks for realizing the names of concepts that don't have lexemes, is merely a step within the overall abstract content rendering process and is not inherently tied to the process itself; having the ability to [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/graph/client.py#L327 run any number of fallback mechanisms], instead of a raw call to (the equivalent of) Z27327, should be possible with any of the methods listed on the architectures page. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 16:41, 24 May 2026 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #249 is out: Annual plan 2026-2027 ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-05-23|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we present you the current draft of objectives for Wikifunctions and Abstract Wikipedia in the WMF Annual Plan 2026-2027, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 09:48, 25 May 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30536976 -->
:The new <code>return_type</code> param to [[Special:ListObjectsByType]] will show Functions returning e.g. {{Z|27951}} and {{Z|882}} if those are typed in manually, but the dropdown menu doesn't offer them, probably because it's a copy of the dropdown above (and there are no Persistent objects of those Types). [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 10:12, 26 May 2026 (UTC)
::@[[User:YoshiRulz|YoshiRulz]]: Correct, it's filtering for Types, which includes "real" enums like [https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&return_type=Z20342&orderby=name Day of Roman year (Z20342)]; light-weight enums have downsides as well as upsides, of which this is one. :-( [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:39, 1 June 2026 (UTC)
:::I assume you mean {{Z|17402}}, since {{Z|20342}} is not an enumeration type? But I never mentioned enums: My hypothesis is that a Type appears in the dropdown iff there is a Persistent object of that type (<code>Z2K2.Z1K1</code>). Whereas I would expect a Type to appear in the dropdown iff there are any Functions which return objects of that type (<code>Z2K2.Z8K2</code>). Or just show every Type in the return type dropdown, since [[Special:ListObjectsByType/Z39|you already have a "no results" message]]. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 16:53, 1 June 2026 (UTC)
::::@[[User:YoshiRulz|YoshiRulz]]: Yes, you are correct, the concept of a Type here means "there is a Persistent object of that type". Other things (in practice, light-weight enums like Z27951) aren't Types. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 16:57, 1 June 2026 (UTC)
== Type documentation template ==
Over the past couple of weeks, I've been developing and rolling out {{t|type documentation}}: a standardised layout for Type metadata, de/constructors, conversions, etc. on each Type's talk page. (The layout is loosely based on [[d:Template:Property documentation|Wikidata's]].) See [[Talk:Z16683|Integer]] for an example that uses most of its features, and [[Talk:Z99|Quote]] for one that doesn't.<br>At this point I can't think of anything more to add besides [[Help:Comparison_function_table/float64|filling out]] a couple more [[Help:Type_conversion_table/Codepoint|tables]]. But if any of you have ideas or feedback, please click through to the relevant talk page and leave me a message. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 12:29, 26 May 2026 (UTC)
:I really like what you're doing here. Thank you. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:26, 26 May 2026 (UTC)
:Yeah, nice work! I don’t think “Function declarations” is the best header for the collapsed table of searches by function signature, however. Now that it’s finally landed, we should probably include https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&return_type=Z16683 as well (outside the table). [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:23, 26 May 2026 (UTC)
== Apparent error in implementations of {{Z|20616}} ==
Please can I request help in how to understand a bug? Sorry if this is not the best place to ask.
I created lexemes [[d:Lexeme:L1566135|langue morte L1566135]] in French and [[d:Lexeme:L1566139|lengua muerta L1566139]] in Spanish, with property {{P|5185}} set to {{Q|Q1775415}} in each case. {{Z|20616}} should return a list of the grammatical genders of a given lexeme. It has two implementations, {{Z|Z20641}} and {{Z|Z21127}}, each of which works perfectly in the French case, returning a list containing Q1775415. But in the Spanish case, each of the two implementations wrongly returns an empty list. I cannot understand what is going wrong. How can I find out what is happening here? I would be grateful for any help or advice. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:56, 26 May 2026 (UTC)
:Both implementations return [https://www.wikifunctions.org/wiki/Z20616?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z20616%22%2C%22Z20616K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z6825%22%2C%22Z6825K1%22%3A%7B%22Z1K1%22%3A%22Z6095%22%2C%22Z6095K1%22%3A%22L1566139%22%7D%7D%7D the same result]. As you added the gender only yesterday, I suppose it must have still been looking at a cached version of the lexeme from before that edit. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:06, 26 May 2026 (UTC)
::Thank you for answering. Yes, it works now. I thought it might have been something like that, but I waited more than 12 hours before testing it again today. I think that whenever SPARQL is in use, there will be caching issues, and it is a very bad problem. Is there any way of clearing the cache, or knowing when the cache will next be cleared, or how long it is necessary to wait before the changes come through? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 18:59, 26 May 2026 (UTC)
:::Well, it depends on the cache. “Wikidata entities in the orchestrator cache timeout after 24 hours” [https://t.me/Wikifunctions/28369 according to] @[[User:DMartin (WMF)|DMartin (WMF)]]. There is currently no way to clear that. I don’t think we have a handy guide to the different caches in operation, but the “general” function-call cache should be reset for a particular function when that function is edited. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 22:05, 26 May 2026 (UTC)
::::I think this is very unfortunate for anyone doing tests in Wikifunctions. So there is a 24-hour delay even applying to changes in Wikidata due to the Wikifunctions orchestrator cache, apart from any other caches such as the SPARQL one. I notice that an intermediate-level call using the [[d:Lexeme:L1566139|lengua muerta L1566139]] lexeme change, {{Z|33725}}, now works on "latín es una lengua muerta.", but the top-level call {{Z|26039}} still does not find the correct gender. If I test the function every 12 hours, does that mean that the erroneous result will be produced for ever, because it will always take the bad value less than 24 hours old from the cache? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:45, 27 May 2026 (UTC)
:::::I can only sympathize.
:::::It seems to me that [https://www.wikifunctions.org/wiki/Z26039?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z26039%22%2C%22Z26039K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q397%22%7D%2C%22Z26039K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q45762%22%7D%2C%22Z26039K3%22%3A%22Z1003%22%7D this has been correct] for a couple of days. But in the general case, no, repeated use of cached results does not re-start the clock. That would indeed be most unfortunate! [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 13:59, 27 May 2026 (UTC)
::::::It still doesn't work for me, it says "latín es un lengua muerta." But the test on the top-level implementation page, {{Z|33725}}, does work now. By the way, really it should say "el latín es una lengua muerta.", but that is another issue. Anyway, thanks a lot for your help. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 14:06, 27 May 2026 (UTC)
:::::::Ah, yes… my mistake, sorry.
:::::::It should be [https://www.wikifunctions.org/view/en/Z26039?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z26039%22%2C%22Z26039K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q397%22%7D%2C%22Z26039K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q45762%22%7D%2C%22Z26039K3%22%3A%22Z1003%22%7D consistent now]. The “couple of days” is the clue here; we were getting a result from the function-call cache and this has now been refreshed by my edit. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 14:25, 27 May 2026 (UTC)
::::::::Yes, it all works now. Thanks. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 14:54, 27 May 2026 (UTC)
== Vote now in the 2026 U4C election ==
<section begin="announcement-content" />
Eligible voters are asked to participate in the 2026 [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee]] election. More information–including an eligibility check, voting process information, candidate information, and a link to the vote–are available on Meta at the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|2026 Election information page]]. The vote closes on 2 June 2026 at [https://zonestamp.toolforge.org/1780358400 00:00 UTC].
Please vote if your account is eligible. Results will be available by 14 June 2026. -- In cooperation with the U4C,<section end="announcement-content" />
[[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]]) 17:14, 27 May 2026 (UTC)
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 -->
== [[Z35880]] ==
The code of this implementation is adapted directly from [https://github.com/sutton-signwriting/core/blob/master/src/swu/swu-re.js]. I'm not sure why this function only works for "null" and "sort". Every other input causes the function to return [[Z577]]. Does anyone know what could be going on here? [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 21:47, 30 May 2026 (UTC)
:Could you creade testcases showing this? [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 21:55, 30 May 2026 (UTC)
::I determined that this problem was due to a problem with UTF encoding, and it has since been resolved. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 18:11, 31 May 2026 (UTC)
== Continued WASI runner problems ==
I've continued to experience {{z|576}} on {{z|35904}}, despite [[phab:T419933|the purported fix]]. See {{z|35945}}. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 18:29, 31 May 2026 (UTC)
:A possibly related issue while trying to add more rows in these articles :
:1. https://abstract.wikipedia.org/view/en/Q16038495
:2. https://abstract.wikipedia.org/view/en/Q13581178
:So, I stopped at 2 rows. [[User:Jsamwrites|John Samuel]] 20:40, 31 May 2026 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #250 is out: Looking back and forward ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-05-30|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we present you a recollection of our work so far, now that we celebrate our 250th newsletter, we share with you a summary of our latest outreach activities, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 10:04, 1 June 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30606821 -->
== Wikifunctions & Abstract Wikipedia Newsletter #251 is out: The illustrated encyclopaedia ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-06-05|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we introduce our first function to import images on Abstract Wikipedia, we present our Functions of the Week, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Also, we remind you that if you have questions or ideas to discuss, the next '''Volunteers' Corner''' will be held on '''[https://zonestamp.toolforge.org/1780939800 June 8, at 17:30 UTC]''' ([https://meet.google.com/xuy-njxh-rkw link to the meeting]).
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 14:14, 5 June 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30606821 -->
== Questions on a simple fragment example "The Eiffel Tower is a monument" ==
Hello. I would like to be able to use the function {{Z|Z26039}} to generate sentences like "the Eiffel Tower is a monument" or "la torre Eiffel es un monumento" in Spanish. It already raises a lot of questions.
Question 1: I should be able to set the first input "entity" to {{Q|Q243}} and the second input "class" to {{Q|Q4989906}} and get the correct sentence, shouldn't I? Just checking.
Question 2: {{Z|Z26039}} calls a language-specific function like "Spanish article-less instantiating sentence" {{Z|Z26337}}, which uses the label of the Wikidata item to get the text for "Eiffel Tower", which is similar to the lemma of the lexeme. But this would not be acceptable in production, would it? The item label "belongs" to all Wikidata users, not to Abstract Wikipedia users, and there is no guarantee what it might contain, such as a parenthesis for disambiguation. Or am I wrong?
Question 3a: We need to have a lexeme for the combination "Eiffel Tower" in each language, don't we? For instance in languages with gender, the lexeme is the only place to find the gender. It is true that if we know that the equivalent of "Tower" is the head word, syntactical information can be found under the lexeme for "tower", and it would be good to use a system like that. But the only place that the syntactic dependency information could be located is under the lexeme.
Question 3b: At present for {{Z|Z26039}} etc. to work, we have to add any forms or syntax information to the lexeme of the whole phrase, such as "Eiffel Tower". But property {{Q|P5238}} with attributes {{Q|P9763}} and {{Q|P9764}} can be used to define the structure and avoid duplicating the syntax information. What lexeme would be used for "Eiffel" in this case? Would it be the same as a lexeme for {{Q|Q20882}}? That makes no sense to me. I propose that there should be a dummy lexeme in each language which could be added to {{Q|P5238}} instead of a real lexeme to mean "invariant element".
Question 4: As has already been pointed out elsewhere, the fragment functions do not work well with the initial definite article in languages like English, Spanish and German. Examples:
* "'''The Eiffel Tower is a monument.'''" The item label "Eiffel Tower" omits the article and so the result omits the initial "The" in English. French, Spanish and German are similar.
* "'''The Sun is a star.'''" Similarly the article is wrongly omitted, also in French, Spanish and German.
* "'''Westminster Abbey is a monument.'''" This is OK in English and German as no article is needed, but not in French or Spanish where it is, for instance "La Abadía de Westminster es un monumento".
* "'''Latin is a dead language.'''" Also this is OK in English and German but not in French or Spanish, where an article is needed.
* "'''Jupiter is a planet.'''". This does not need an article and is OK in all the languages; I include this to show that you cannot assume that there is an article in all cases in French and Spanish.
How should the language functions find out whether an article is needed? In some cases, where the lemma is a phrase like "Abadía de Westminster" in Spanish, I think that it could be deduced, but in general there is no rule to give the answer. Using different rendering functions according to the case is '''not''' a solution, although it might work for a few specific languages like these four. It would not be acceptable because there will be many, many other cases of syntactical choices to be made for all the different languages, and we cannot expect the person writing the abstract code to take them all into account. So I suppose that a declaration in the lexeme is needed to solve this problem. I suppose that there must already be linguistic terminology for this problem, but I don't know it.
I would be grateful for any comments on any of these questions. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 15:02, 5 June 2026 (UTC)
:@[[User:Strobilomyces|Strobilomyces]] I think this topic is better placed at [[abstract:Abstract Wikipedia:Project chat|Abstract Wikipedia:Project chat]], so I copied your topic there, and answered it there too. [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:07, 8 June 2026 (UTC)
::OK, sorry about that. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 17:03, 9 June 2026 (UTC)
== Deployment of Legal and Safety Contacts Link in the Footer of Your Wiki ==
Hello community,
The Wikimedia Foundation has provided [[wmf:Legal:Wikimedia Foundation Legal and Safety Contact Information|a single legal and safety contact page]], to be linked in the footer of your wiki, to ensure access to accurate legal information. This is a regulatory requirement.
We have already rolled out links to English, German, Italian, Spanish Wikipedias and other wikis and we will deploy to your wiki soon.
Please [[m:Wikimedia Foundation Legal and Safety Contacts FAQ|read more on the project page]] and leave any comments in this thread or on [[m:Talk:Wikimedia Foundation Legal and Safety Contacts FAQ|the talk page]]. –– [[User:STei (WMF)|STei (WMF)]] ([[User talk:STei (WMF)|talk]]) 17:54, 9 June 2026 (UTC)
5q928nc26yymmxzdzy9qo063hbh7d7h
282571
282522
2026-06-12T11:49:49Z
A random Wikipedian in the billions
88032
/* Apache License 2.0 */ new section
282571
wikitext
text/x-wiki
{{shortcut|[[WF:CHAT]]|[[WF:PC]]|[[WF:VP]]}}
__NEWSECTIONLINK__
[[Category:Help]] <!-- please do not remove this line -->
Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.
Other places to find help:
* [[Wikifunctions:Administrators' noticeboard]]
* [[Wikifunctions:Report a technical problem]]
* [[Wikifunctions:FAQ]]
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{#tag:div|<br />{{Flatlist|{{Special:PrefixIndex/WF:Project chat/Archive/|stripprefix=1|hideredirects=1}}
|class=mw-collapsible-content|style=font-size:92%;}}|class="mw-collapsible mw-collapsible-toggle mw-collapsed"}}
|prefix=WF:Project chat/Archive/
}}
== Wikifunctions & Abstract Wikipedia Newsletter #248 is out: A higher meaning ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-05-15|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we discuss functions creating language fragments, we present our latest news in Types, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 14:36, 15 May 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30536976 -->
== [[Z34510]] ==
This function, which determines if a Wikidata item for a {{q|5}} has an undeprecated {{p|21}} statement of {{q|6581097}}, returns false for {{q|173399}}, a transgender man. This is because his item assigns his P21 statement to {{q|2449503}}, not {{q|6581097}}. I'm not sure how to account for this discrepancy. Should {{z|34510}}:
# Include {{q|2449503}} as a value that can lead to a true result,
# Not include {{q|2449503}} as a value that can lead to a true result, while another function (e.g., "Q5 is a man?") could return true for either "male" or "trans man",
# Not include {{q|2449503}} as a value that can lead to a true result, while another function (e.g., "Q5 is a trans man?") could return true for "trans man",
# Not exist at all?
[[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 16:48, 16 May 2026 (UTC)
:I can't think of a single use case where you would need to determine if a person is a cisgender man and nothing else. Functions are good for generalizing across multiple possibilities when they exist, so I think it would be best if trans men were considered a part of the criteria for returning a true value. If asking for specifically {{q|6581097}}s and ''nothing'' else was desired then the function name would be a misnomer as Elliot Page is inarguably a male (at least in the view of most reasonable and intelligent people). — [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 19:03, 16 May 2026 (UTC)
:You made the function in the first place; what were you planning on using it for? AW? Maybe it should return a {{Z|25501}} which can then be passed on to other NLG functions. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 20:01, 16 May 2026 (UTC)
== Lexeme from wikidata label, or "best" lexeme from wikidata item ==
I was looking into fixing [[Z28028]]. I found that I could add "requires grammatical feature: definite article" to "United Kingdom" (L8558). Now I'm stuck on how to get to that lexeme from {{Q|145}}. There's [[Z23471]], but that for very good reason gives you multiple lexemes with the same sense, and I just want the best one like how the label is always the best string. Is there a function that can do this?
There's definitely the case of a Wikidata label that isn't a lexeme (most commonly multiple lexemes) but I'm only considering the case where it is one lexeme here. [[User:Aaron Liu|Aaron Liu]] ([[User talk:Aaron Liu|talk]]) 20:02, 16 May 2026 (UTC)
:There is {{Z|Z27327}}, that tries to give the best lexeme through various heuristics. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 22:22, 16 May 2026 (UTC)
:: Wonderful! I did stumble upon [[Z33818]] but this is perfect. [[User:Aaron Liu|Aaron Liu]] ([[User talk:Aaron Liu|talk]]) 00:25, 17 May 2026 (UTC)
== [[Z29591]] isn't working for me ==
For instance, trying to manually put in the exact inputs for one of the test cases just returns an empty Monolingual text. See [https://www.wikifunctions.org/wiki/Z29591?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z29591%22%2C%22Z29591K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q3257809%22%7D%2C%22Z29591K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q21264361%22%7D%2C%22Z29591K3%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q22006653%22%7D%2C%22Z29591K4%22%3A%22Z1002%22%7D]. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 01:17, 17 May 2026 (UTC)
:You used [[:d:Q22006653]] rather than [[:d:Q1075]]. It looks like the [https://www.wikifunctions.org/wiki/Special:RunFunction?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z30784%22%2C%22Z30784K1%22%3A%7B%22Z1K1%22%3A%22Z11%22%2C%22Z11K1%22%3A%22Z1002%22%2C%22Z11K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z21394%22%2C%22Z21394K1%22%3A%5B%22Z6%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z22664%22%2C%22Z22664K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q22006653%22%7D%2C%22Z22664K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q21264361%22%7D%2C%22Z22664K3%22%3A%22Z1002%22%7D%5D%7D%7D%7D explanatory error] is suppressed by the [https://www.wikifunctions.org/view/en/Z30009?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z30009%22%2C%22Z30009K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z30784%22%2C%22Z30784K1%22%3A%7B%22Z1K1%22%3A%22Z11%22%2C%22Z11K1%22%3A%22Z1002%22%2C%22Z11K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z21394%22%2C%22Z21394K1%22%3A%5B%22Z6%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z22664%22%2C%22Z22664K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q22006653%22%7D%2C%22Z22664K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q21264361%22%7D%2C%22Z22664K3%22%3A%22Z1002%22%7D%5D%7D%7D%7D%2C%22Z30009K2%22%3A%22Z801%22%7D final transformation]. The returned result is not actually empty; if you expand it, you can see that it is an unresolved function call. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 09:59, 17 May 2026 (UTC)
== [[Z35298]] ==
Does anyone know what the problem with this implementation is? [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 21:14, 18 May 2026 (UTC)
:There is a bug that doesn't allow Python implementation to return nested lists. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 05:31, 19 May 2026 (UTC)
::Is there a Phabricator task for this? Searching through them is hell. — [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 03:22, 20 May 2026 (UTC)
:::A bit of time ago I opened [[phab:T392750]], which is very similar to this issue. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 05:26, 20 May 2026 (UTC)
== May 2026 Wikimedia Café meetups regarding the Wikimedia Foundation Annual Plan ==
<div class="border-box" style="background-color: var(--background-color-warning-subtle, #f8eaba); max-width: 875px; padding: 5px; border: 1px solid black; margin: 5px; color: var(--clr-dark)">
<div class="box" style="float:left; padding-top: 15px; padding-right: 15px;">[[File:Wikimedia Café logo in plain SVG format.svg|75px|alt=The logo for the Wikimedia Café]]</div>
Hello! There will be two '''[https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9 Wikimedia Café]''' discussion opportunities during the last weekend of May. Both sessions will focus on the [https://meta.wikimedia.org/wiki/Wikimedia_Foundation_Annual_Plan/2026-2027 the 2026-2027 Wikimedia Foundation Annual Plan]. Participants may attend either or both sessions.
#'''Saturday, 30 May 2026 at 15:00 UTC''' ([https://zonestamp.toolforge.org/1780153200 timestamp converter]), at a time friendly to the Americas, Africa, and Europe
#'''Sunday, 31 May 2026 at 05:00 UTC''' ([https://zonestamp.toolforge.org/1780203600 timestamp converter]), at a time friendly to Asia and the Pacific
Café participants are highly encouraged to read in advance [https://en.wikipedia.org/wiki/User:Sohom_Datta/annual_plan_guide at least this summary of the plan]. Optionally, Café participants are encouraged to read portions of the plan that interest them and [https://meta.wikimedia.org/wiki/Talk:Wikimedia_Foundation_Annual_Plan/2026-2027 ask questions or provide feedback on the Annual Plan talk page].
Please see the Café page for more information, including [https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9#May_2026_meetings_with_a_focus_on_Wikimedia_Foundation_Annual_Plan/2026-2027 tables of timestamp conversions for both sessions], [https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9#Agenda._This_will_be_an_approximately_1_hour_Caf%C3%A9_session,_and_is_extendible_for_an_additional_30_minutes_if_needed. the agenda], and [https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9#How_to_attend_the_session how to register]!
<br />
[[File:Buntstifte Eberhard Faber crop 64h.jpg|860px|alt=cropped image of colored pencils]]</div>
<span style="white-space:nowrap;">[[User:Pine|<span style="color:#01796f; text-shadow:#00BFFF 0 0 1.0em">↠Pine</span>]] [[User talk:Pine|<span style="color:DeepSkyBlue">(<b style="color:#FFDF00;text-shadow:#FFDF00 0 0 1.0em">✉</b>)</span>]]</span> 19:56, 21 May 2026 (UTC)
== How to handle items without lexemes ==
NLG functions relay heavily on the presence of lexemes associated to items on Wikidata. But we know that not all the Wikidata items have an associated lexeme. There are multiple reasons why an item does not have an associated lexeme, like:
# The lexeme has not been created yet
# The item represents a place
# The item represents a person
# The item represents a specific concept that can only be expressed by a specific combination of words that cannot be [[Wikidata:Wikidata:Lexicographical data/Notability|notable]] (like {{Q|Q61220733}}).
My doubt is: what should we do with this fourth category? For many languages, just using the Wikidata item label is not possible, since it is necessary to conjugate the words or to retrieve grammatical information like the gender. What should we do? [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:09, 23 May 2026 (UTC)
:In that particular example, I think the thing to do is read its {{P|279}}: {{Q|21191270}}, then have some kind of heuristic based on that which says to take its {{P|8345}} and attach that Item's label to a Form of the word for "episode". In general, synthesising Lexemes for proper nouns is one of the problems that [[abstract:User:Dv103/Abstract_articles_architectures|proposals in your list here]] will have to address. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 22:59, 23 May 2026 (UTC)
[[File:Wikidata content 2024.svg|thumb|Content of Wikidata by type]]
::{{ping|Dv103}} very good point.
::For your point 2, it depends of the place but I think that quite often a lexeme can be created (most "Administrative territorial entity", most geographical entity, etc.). And with 3, your can add a lot of types (see pie chart) : Scholarly article, Human (with a very few exception), Wikimedia Category, Disambig, etc. which is (rough estimation) 2/3 of Wikidata items.
::A common rule (in dictionaries since forever and in Lexemes) is to not create an entry which is the "sum of its part". In this case, "Star Trek episode" is just episode + Star Trek, nothing more than its part. So logically, as {{U|YoshiRulz}} said, when no corresponding lexeme is found, the item should be decomposed the same way, the hard part is to know how to decompose it as the property will vary ; P31 and P279 are an obvious start but beyond that, I'm not sure we could find a general solution.
::PS: it's beyond you question but there is also the reverse problem, how to select one lexeme when multiple are linked to the same item...
::Cheers, [[User:VIGNERON|VIGNERON]] ([[User talk:VIGNERON|talk]]) 10:43, 24 May 2026 (UTC)
:::For the point 2, I think humans will be used way more than scholarly articles and disambiguations in NLG functions (outside references), that's why humans concern me more (still a cool pie chart, though).
:::For the reverse problem, there is already {{Z|Z27327}}: it's far from perfect, but usually makes a decent choice. Obviously it is not "complete", and probably it will never be complete, but it will have to be progressively improved by the community. And probably in the future we will need to create similar functions to select the best lexeme in more specific cases.
:::For my fourth point, I didn't think about the decomposition, but it is something that could be done with another never-complete community-mantained function, that progressively keeps being improved. If [[Wikifunctions:Type proposals/Semantic unit|semantic units]] will be implemented, through them it could actually be possible to do this operation in a laguage-independent way. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 12:10, 24 May 2026 (UTC)
::{{re|YoshiRulz}} Proper noun synthesis, along with other fallbacks for realizing the names of concepts that don't have lexemes, is merely a step within the overall abstract content rendering process and is not inherently tied to the process itself; having the ability to [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/graph/client.py#L327 run any number of fallback mechanisms], instead of a raw call to (the equivalent of) Z27327, should be possible with any of the methods listed on the architectures page. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 16:41, 24 May 2026 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #249 is out: Annual plan 2026-2027 ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-05-23|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we present you the current draft of objectives for Wikifunctions and Abstract Wikipedia in the WMF Annual Plan 2026-2027, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 09:48, 25 May 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30536976 -->
:The new <code>return_type</code> param to [[Special:ListObjectsByType]] will show Functions returning e.g. {{Z|27951}} and {{Z|882}} if those are typed in manually, but the dropdown menu doesn't offer them, probably because it's a copy of the dropdown above (and there are no Persistent objects of those Types). [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 10:12, 26 May 2026 (UTC)
::@[[User:YoshiRulz|YoshiRulz]]: Correct, it's filtering for Types, which includes "real" enums like [https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&return_type=Z20342&orderby=name Day of Roman year (Z20342)]; light-weight enums have downsides as well as upsides, of which this is one. :-( [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:39, 1 June 2026 (UTC)
:::I assume you mean {{Z|17402}}, since {{Z|20342}} is not an enumeration type? But I never mentioned enums: My hypothesis is that a Type appears in the dropdown iff there is a Persistent object of that type (<code>Z2K2.Z1K1</code>). Whereas I would expect a Type to appear in the dropdown iff there are any Functions which return objects of that type (<code>Z2K2.Z8K2</code>). Or just show every Type in the return type dropdown, since [[Special:ListObjectsByType/Z39|you already have a "no results" message]]. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 16:53, 1 June 2026 (UTC)
::::@[[User:YoshiRulz|YoshiRulz]]: Yes, you are correct, the concept of a Type here means "there is a Persistent object of that type". Other things (in practice, light-weight enums like Z27951) aren't Types. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 16:57, 1 June 2026 (UTC)
== Type documentation template ==
Over the past couple of weeks, I've been developing and rolling out {{t|type documentation}}: a standardised layout for Type metadata, de/constructors, conversions, etc. on each Type's talk page. (The layout is loosely based on [[d:Template:Property documentation|Wikidata's]].) See [[Talk:Z16683|Integer]] for an example that uses most of its features, and [[Talk:Z99|Quote]] for one that doesn't.<br>At this point I can't think of anything more to add besides [[Help:Comparison_function_table/float64|filling out]] a couple more [[Help:Type_conversion_table/Codepoint|tables]]. But if any of you have ideas or feedback, please click through to the relevant talk page and leave me a message. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 12:29, 26 May 2026 (UTC)
:I really like what you're doing here. Thank you. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:26, 26 May 2026 (UTC)
:Yeah, nice work! I don’t think “Function declarations” is the best header for the collapsed table of searches by function signature, however. Now that it’s finally landed, we should probably include https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&return_type=Z16683 as well (outside the table). [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:23, 26 May 2026 (UTC)
== Apparent error in implementations of {{Z|20616}} ==
Please can I request help in how to understand a bug? Sorry if this is not the best place to ask.
I created lexemes [[d:Lexeme:L1566135|langue morte L1566135]] in French and [[d:Lexeme:L1566139|lengua muerta L1566139]] in Spanish, with property {{P|5185}} set to {{Q|Q1775415}} in each case. {{Z|20616}} should return a list of the grammatical genders of a given lexeme. It has two implementations, {{Z|Z20641}} and {{Z|Z21127}}, each of which works perfectly in the French case, returning a list containing Q1775415. But in the Spanish case, each of the two implementations wrongly returns an empty list. I cannot understand what is going wrong. How can I find out what is happening here? I would be grateful for any help or advice. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:56, 26 May 2026 (UTC)
:Both implementations return [https://www.wikifunctions.org/wiki/Z20616?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z20616%22%2C%22Z20616K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z6825%22%2C%22Z6825K1%22%3A%7B%22Z1K1%22%3A%22Z6095%22%2C%22Z6095K1%22%3A%22L1566139%22%7D%7D%7D the same result]. As you added the gender only yesterday, I suppose it must have still been looking at a cached version of the lexeme from before that edit. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:06, 26 May 2026 (UTC)
::Thank you for answering. Yes, it works now. I thought it might have been something like that, but I waited more than 12 hours before testing it again today. I think that whenever SPARQL is in use, there will be caching issues, and it is a very bad problem. Is there any way of clearing the cache, or knowing when the cache will next be cleared, or how long it is necessary to wait before the changes come through? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 18:59, 26 May 2026 (UTC)
:::Well, it depends on the cache. “Wikidata entities in the orchestrator cache timeout after 24 hours” [https://t.me/Wikifunctions/28369 according to] @[[User:DMartin (WMF)|DMartin (WMF)]]. There is currently no way to clear that. I don’t think we have a handy guide to the different caches in operation, but the “general” function-call cache should be reset for a particular function when that function is edited. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 22:05, 26 May 2026 (UTC)
::::I think this is very unfortunate for anyone doing tests in Wikifunctions. So there is a 24-hour delay even applying to changes in Wikidata due to the Wikifunctions orchestrator cache, apart from any other caches such as the SPARQL one. I notice that an intermediate-level call using the [[d:Lexeme:L1566139|lengua muerta L1566139]] lexeme change, {{Z|33725}}, now works on "latín es una lengua muerta.", but the top-level call {{Z|26039}} still does not find the correct gender. If I test the function every 12 hours, does that mean that the erroneous result will be produced for ever, because it will always take the bad value less than 24 hours old from the cache? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:45, 27 May 2026 (UTC)
:::::I can only sympathize.
:::::It seems to me that [https://www.wikifunctions.org/wiki/Z26039?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z26039%22%2C%22Z26039K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q397%22%7D%2C%22Z26039K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q45762%22%7D%2C%22Z26039K3%22%3A%22Z1003%22%7D this has been correct] for a couple of days. But in the general case, no, repeated use of cached results does not re-start the clock. That would indeed be most unfortunate! [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 13:59, 27 May 2026 (UTC)
::::::It still doesn't work for me, it says "latín es un lengua muerta." But the test on the top-level implementation page, {{Z|33725}}, does work now. By the way, really it should say "el latín es una lengua muerta.", but that is another issue. Anyway, thanks a lot for your help. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 14:06, 27 May 2026 (UTC)
:::::::Ah, yes… my mistake, sorry.
:::::::It should be [https://www.wikifunctions.org/view/en/Z26039?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z26039%22%2C%22Z26039K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q397%22%7D%2C%22Z26039K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q45762%22%7D%2C%22Z26039K3%22%3A%22Z1003%22%7D consistent now]. The “couple of days” is the clue here; we were getting a result from the function-call cache and this has now been refreshed by my edit. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 14:25, 27 May 2026 (UTC)
::::::::Yes, it all works now. Thanks. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 14:54, 27 May 2026 (UTC)
== Vote now in the 2026 U4C election ==
<section begin="announcement-content" />
Eligible voters are asked to participate in the 2026 [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee]] election. More information–including an eligibility check, voting process information, candidate information, and a link to the vote–are available on Meta at the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|2026 Election information page]]. The vote closes on 2 June 2026 at [https://zonestamp.toolforge.org/1780358400 00:00 UTC].
Please vote if your account is eligible. Results will be available by 14 June 2026. -- In cooperation with the U4C,<section end="announcement-content" />
[[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]]) 17:14, 27 May 2026 (UTC)
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 -->
== [[Z35880]] ==
The code of this implementation is adapted directly from [https://github.com/sutton-signwriting/core/blob/master/src/swu/swu-re.js]. I'm not sure why this function only works for "null" and "sort". Every other input causes the function to return [[Z577]]. Does anyone know what could be going on here? [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 21:47, 30 May 2026 (UTC)
:Could you creade testcases showing this? [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 21:55, 30 May 2026 (UTC)
::I determined that this problem was due to a problem with UTF encoding, and it has since been resolved. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 18:11, 31 May 2026 (UTC)
== Continued WASI runner problems ==
I've continued to experience {{z|576}} on {{z|35904}}, despite [[phab:T419933|the purported fix]]. See {{z|35945}}. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 18:29, 31 May 2026 (UTC)
:A possibly related issue while trying to add more rows in these articles :
:1. https://abstract.wikipedia.org/view/en/Q16038495
:2. https://abstract.wikipedia.org/view/en/Q13581178
:So, I stopped at 2 rows. [[User:Jsamwrites|John Samuel]] 20:40, 31 May 2026 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #250 is out: Looking back and forward ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-05-30|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we present you a recollection of our work so far, now that we celebrate our 250th newsletter, we share with you a summary of our latest outreach activities, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 10:04, 1 June 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30606821 -->
== Wikifunctions & Abstract Wikipedia Newsletter #251 is out: The illustrated encyclopaedia ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-06-05|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we introduce our first function to import images on Abstract Wikipedia, we present our Functions of the Week, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Also, we remind you that if you have questions or ideas to discuss, the next '''Volunteers' Corner''' will be held on '''[https://zonestamp.toolforge.org/1780939800 June 8, at 17:30 UTC]''' ([https://meet.google.com/xuy-njxh-rkw link to the meeting]).
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 14:14, 5 June 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30606821 -->
== Questions on a simple fragment example "The Eiffel Tower is a monument" ==
Hello. I would like to be able to use the function {{Z|Z26039}} to generate sentences like "the Eiffel Tower is a monument" or "la torre Eiffel es un monumento" in Spanish. It already raises a lot of questions.
Question 1: I should be able to set the first input "entity" to {{Q|Q243}} and the second input "class" to {{Q|Q4989906}} and get the correct sentence, shouldn't I? Just checking.
Question 2: {{Z|Z26039}} calls a language-specific function like "Spanish article-less instantiating sentence" {{Z|Z26337}}, which uses the label of the Wikidata item to get the text for "Eiffel Tower", which is similar to the lemma of the lexeme. But this would not be acceptable in production, would it? The item label "belongs" to all Wikidata users, not to Abstract Wikipedia users, and there is no guarantee what it might contain, such as a parenthesis for disambiguation. Or am I wrong?
Question 3a: We need to have a lexeme for the combination "Eiffel Tower" in each language, don't we? For instance in languages with gender, the lexeme is the only place to find the gender. It is true that if we know that the equivalent of "Tower" is the head word, syntactical information can be found under the lexeme for "tower", and it would be good to use a system like that. But the only place that the syntactic dependency information could be located is under the lexeme.
Question 3b: At present for {{Z|Z26039}} etc. to work, we have to add any forms or syntax information to the lexeme of the whole phrase, such as "Eiffel Tower". But property {{Q|P5238}} with attributes {{Q|P9763}} and {{Q|P9764}} can be used to define the structure and avoid duplicating the syntax information. What lexeme would be used for "Eiffel" in this case? Would it be the same as a lexeme for {{Q|Q20882}}? That makes no sense to me. I propose that there should be a dummy lexeme in each language which could be added to {{Q|P5238}} instead of a real lexeme to mean "invariant element".
Question 4: As has already been pointed out elsewhere, the fragment functions do not work well with the initial definite article in languages like English, Spanish and German. Examples:
* "'''The Eiffel Tower is a monument.'''" The item label "Eiffel Tower" omits the article and so the result omits the initial "The" in English. French, Spanish and German are similar.
* "'''The Sun is a star.'''" Similarly the article is wrongly omitted, also in French, Spanish and German.
* "'''Westminster Abbey is a monument.'''" This is OK in English and German as no article is needed, but not in French or Spanish where it is, for instance "La Abadía de Westminster es un monumento".
* "'''Latin is a dead language.'''" Also this is OK in English and German but not in French or Spanish, where an article is needed.
* "'''Jupiter is a planet.'''". This does not need an article and is OK in all the languages; I include this to show that you cannot assume that there is an article in all cases in French and Spanish.
How should the language functions find out whether an article is needed? In some cases, where the lemma is a phrase like "Abadía de Westminster" in Spanish, I think that it could be deduced, but in general there is no rule to give the answer. Using different rendering functions according to the case is '''not''' a solution, although it might work for a few specific languages like these four. It would not be acceptable because there will be many, many other cases of syntactical choices to be made for all the different languages, and we cannot expect the person writing the abstract code to take them all into account. So I suppose that a declaration in the lexeme is needed to solve this problem. I suppose that there must already be linguistic terminology for this problem, but I don't know it.
I would be grateful for any comments on any of these questions. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 15:02, 5 June 2026 (UTC)
:@[[User:Strobilomyces|Strobilomyces]] I think this topic is better placed at [[abstract:Abstract Wikipedia:Project chat|Abstract Wikipedia:Project chat]], so I copied your topic there, and answered it there too. [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:07, 8 June 2026 (UTC)
::OK, sorry about that. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 17:03, 9 June 2026 (UTC)
== Deployment of Legal and Safety Contacts Link in the Footer of Your Wiki ==
Hello community,
The Wikimedia Foundation has provided [[wmf:Legal:Wikimedia Foundation Legal and Safety Contact Information|a single legal and safety contact page]], to be linked in the footer of your wiki, to ensure access to accurate legal information. This is a regulatory requirement.
We have already rolled out links to English, German, Italian, Spanish Wikipedias and other wikis and we will deploy to your wiki soon.
Please [[m:Wikimedia Foundation Legal and Safety Contacts FAQ|read more on the project page]] and leave any comments in this thread or on [[m:Talk:Wikimedia Foundation Legal and Safety Contacts FAQ|the talk page]]. –– [[User:STei (WMF)|STei (WMF)]] ([[User talk:STei (WMF)|talk]]) 17:54, 9 June 2026 (UTC)
== Apache License 2.0 ==
Hello, Wikifunctions says it uses the Apache 2.0 license for code. Apache 2.0 is incompatible with GPLv2 only and some other licenses, and I would like to be able to use Wikifunctions with software that uses incompatible licenses with Apache 2.0. Is there any plans to fix this incompatibility or relicense Wikifunctions code? Thanks! [[User:A random Wikipedian in the billions|A random Wikipedian in the billions]] ([[User talk:A random Wikipedian in the billions|talk]]) 11:49, 12 June 2026 (UTC)
8yuuib5mhurrnpdt6r2lgvu5p3fajdk
282572
282571
2026-06-12T11:52:38Z
Jdforrester (WMF)
4
/* Apache License 2.0 */ Reply
282572
wikitext
text/x-wiki
{{shortcut|[[WF:CHAT]]|[[WF:PC]]|[[WF:VP]]}}
__NEWSECTIONLINK__
[[Category:Help]] <!-- please do not remove this line -->
Welcome to the Project chat, a place to discuss any and all aspects of Wikifunctions: the project itself, policy and proposals, individual data items, technical issues, etc.
Other places to find help:
* [[Wikifunctions:Administrators' noticeboard]]
* [[Wikifunctions:Report a technical problem]]
* [[Wikifunctions:FAQ]]
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{#tag:div|<br />{{Flatlist|{{Special:PrefixIndex/WF:Project chat/Archive/|stripprefix=1|hideredirects=1}}
|class=mw-collapsible-content|style=font-size:92%;}}|class="mw-collapsible mw-collapsible-toggle mw-collapsed"}}
|prefix=WF:Project chat/Archive/
}}
== Wikifunctions & Abstract Wikipedia Newsletter #248 is out: A higher meaning ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-05-15|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we discuss functions creating language fragments, we present our latest news in Types, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 14:36, 15 May 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30536976 -->
== [[Z34510]] ==
This function, which determines if a Wikidata item for a {{q|5}} has an undeprecated {{p|21}} statement of {{q|6581097}}, returns false for {{q|173399}}, a transgender man. This is because his item assigns his P21 statement to {{q|2449503}}, not {{q|6581097}}. I'm not sure how to account for this discrepancy. Should {{z|34510}}:
# Include {{q|2449503}} as a value that can lead to a true result,
# Not include {{q|2449503}} as a value that can lead to a true result, while another function (e.g., "Q5 is a man?") could return true for either "male" or "trans man",
# Not include {{q|2449503}} as a value that can lead to a true result, while another function (e.g., "Q5 is a trans man?") could return true for "trans man",
# Not exist at all?
[[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 16:48, 16 May 2026 (UTC)
:I can't think of a single use case where you would need to determine if a person is a cisgender man and nothing else. Functions are good for generalizing across multiple possibilities when they exist, so I think it would be best if trans men were considered a part of the criteria for returning a true value. If asking for specifically {{q|6581097}}s and ''nothing'' else was desired then the function name would be a misnomer as Elliot Page is inarguably a male (at least in the view of most reasonable and intelligent people). — [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 19:03, 16 May 2026 (UTC)
:You made the function in the first place; what were you planning on using it for? AW? Maybe it should return a {{Z|25501}} which can then be passed on to other NLG functions. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 20:01, 16 May 2026 (UTC)
== Lexeme from wikidata label, or "best" lexeme from wikidata item ==
I was looking into fixing [[Z28028]]. I found that I could add "requires grammatical feature: definite article" to "United Kingdom" (L8558). Now I'm stuck on how to get to that lexeme from {{Q|145}}. There's [[Z23471]], but that for very good reason gives you multiple lexemes with the same sense, and I just want the best one like how the label is always the best string. Is there a function that can do this?
There's definitely the case of a Wikidata label that isn't a lexeme (most commonly multiple lexemes) but I'm only considering the case where it is one lexeme here. [[User:Aaron Liu|Aaron Liu]] ([[User talk:Aaron Liu|talk]]) 20:02, 16 May 2026 (UTC)
:There is {{Z|Z27327}}, that tries to give the best lexeme through various heuristics. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 22:22, 16 May 2026 (UTC)
:: Wonderful! I did stumble upon [[Z33818]] but this is perfect. [[User:Aaron Liu|Aaron Liu]] ([[User talk:Aaron Liu|talk]]) 00:25, 17 May 2026 (UTC)
== [[Z29591]] isn't working for me ==
For instance, trying to manually put in the exact inputs for one of the test cases just returns an empty Monolingual text. See [https://www.wikifunctions.org/wiki/Z29591?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z29591%22%2C%22Z29591K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q3257809%22%7D%2C%22Z29591K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q21264361%22%7D%2C%22Z29591K3%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q22006653%22%7D%2C%22Z29591K4%22%3A%22Z1002%22%7D]. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 01:17, 17 May 2026 (UTC)
:You used [[:d:Q22006653]] rather than [[:d:Q1075]]. It looks like the [https://www.wikifunctions.org/wiki/Special:RunFunction?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z30784%22%2C%22Z30784K1%22%3A%7B%22Z1K1%22%3A%22Z11%22%2C%22Z11K1%22%3A%22Z1002%22%2C%22Z11K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z21394%22%2C%22Z21394K1%22%3A%5B%22Z6%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z22664%22%2C%22Z22664K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q22006653%22%7D%2C%22Z22664K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q21264361%22%7D%2C%22Z22664K3%22%3A%22Z1002%22%7D%5D%7D%7D%7D explanatory error] is suppressed by the [https://www.wikifunctions.org/view/en/Z30009?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z30009%22%2C%22Z30009K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z30784%22%2C%22Z30784K1%22%3A%7B%22Z1K1%22%3A%22Z11%22%2C%22Z11K1%22%3A%22Z1002%22%2C%22Z11K2%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z21394%22%2C%22Z21394K1%22%3A%5B%22Z6%22%2C%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z22664%22%2C%22Z22664K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q22006653%22%7D%2C%22Z22664K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q21264361%22%7D%2C%22Z22664K3%22%3A%22Z1002%22%7D%5D%7D%7D%7D%2C%22Z30009K2%22%3A%22Z801%22%7D final transformation]. The returned result is not actually empty; if you expand it, you can see that it is an unresolved function call. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 09:59, 17 May 2026 (UTC)
== [[Z35298]] ==
Does anyone know what the problem with this implementation is? [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 21:14, 18 May 2026 (UTC)
:There is a bug that doesn't allow Python implementation to return nested lists. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 05:31, 19 May 2026 (UTC)
::Is there a Phabricator task for this? Searching through them is hell. — [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 03:22, 20 May 2026 (UTC)
:::A bit of time ago I opened [[phab:T392750]], which is very similar to this issue. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 05:26, 20 May 2026 (UTC)
== May 2026 Wikimedia Café meetups regarding the Wikimedia Foundation Annual Plan ==
<div class="border-box" style="background-color: var(--background-color-warning-subtle, #f8eaba); max-width: 875px; padding: 5px; border: 1px solid black; margin: 5px; color: var(--clr-dark)">
<div class="box" style="float:left; padding-top: 15px; padding-right: 15px;">[[File:Wikimedia Café logo in plain SVG format.svg|75px|alt=The logo for the Wikimedia Café]]</div>
Hello! There will be two '''[https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9 Wikimedia Café]''' discussion opportunities during the last weekend of May. Both sessions will focus on the [https://meta.wikimedia.org/wiki/Wikimedia_Foundation_Annual_Plan/2026-2027 the 2026-2027 Wikimedia Foundation Annual Plan]. Participants may attend either or both sessions.
#'''Saturday, 30 May 2026 at 15:00 UTC''' ([https://zonestamp.toolforge.org/1780153200 timestamp converter]), at a time friendly to the Americas, Africa, and Europe
#'''Sunday, 31 May 2026 at 05:00 UTC''' ([https://zonestamp.toolforge.org/1780203600 timestamp converter]), at a time friendly to Asia and the Pacific
Café participants are highly encouraged to read in advance [https://en.wikipedia.org/wiki/User:Sohom_Datta/annual_plan_guide at least this summary of the plan]. Optionally, Café participants are encouraged to read portions of the plan that interest them and [https://meta.wikimedia.org/wiki/Talk:Wikimedia_Foundation_Annual_Plan/2026-2027 ask questions or provide feedback on the Annual Plan talk page].
Please see the Café page for more information, including [https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9#May_2026_meetings_with_a_focus_on_Wikimedia_Foundation_Annual_Plan/2026-2027 tables of timestamp conversions for both sessions], [https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9#Agenda._This_will_be_an_approximately_1_hour_Caf%C3%A9_session,_and_is_extendible_for_an_additional_30_minutes_if_needed. the agenda], and [https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9#How_to_attend_the_session how to register]!
<br />
[[File:Buntstifte Eberhard Faber crop 64h.jpg|860px|alt=cropped image of colored pencils]]</div>
<span style="white-space:nowrap;">[[User:Pine|<span style="color:#01796f; text-shadow:#00BFFF 0 0 1.0em">↠Pine</span>]] [[User talk:Pine|<span style="color:DeepSkyBlue">(<b style="color:#FFDF00;text-shadow:#FFDF00 0 0 1.0em">✉</b>)</span>]]</span> 19:56, 21 May 2026 (UTC)
== How to handle items without lexemes ==
NLG functions relay heavily on the presence of lexemes associated to items on Wikidata. But we know that not all the Wikidata items have an associated lexeme. There are multiple reasons why an item does not have an associated lexeme, like:
# The lexeme has not been created yet
# The item represents a place
# The item represents a person
# The item represents a specific concept that can only be expressed by a specific combination of words that cannot be [[Wikidata:Wikidata:Lexicographical data/Notability|notable]] (like {{Q|Q61220733}}).
My doubt is: what should we do with this fourth category? For many languages, just using the Wikidata item label is not possible, since it is necessary to conjugate the words or to retrieve grammatical information like the gender. What should we do? [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:09, 23 May 2026 (UTC)
:In that particular example, I think the thing to do is read its {{P|279}}: {{Q|21191270}}, then have some kind of heuristic based on that which says to take its {{P|8345}} and attach that Item's label to a Form of the word for "episode". In general, synthesising Lexemes for proper nouns is one of the problems that [[abstract:User:Dv103/Abstract_articles_architectures|proposals in your list here]] will have to address. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 22:59, 23 May 2026 (UTC)
[[File:Wikidata content 2024.svg|thumb|Content of Wikidata by type]]
::{{ping|Dv103}} very good point.
::For your point 2, it depends of the place but I think that quite often a lexeme can be created (most "Administrative territorial entity", most geographical entity, etc.). And with 3, your can add a lot of types (see pie chart) : Scholarly article, Human (with a very few exception), Wikimedia Category, Disambig, etc. which is (rough estimation) 2/3 of Wikidata items.
::A common rule (in dictionaries since forever and in Lexemes) is to not create an entry which is the "sum of its part". In this case, "Star Trek episode" is just episode + Star Trek, nothing more than its part. So logically, as {{U|YoshiRulz}} said, when no corresponding lexeme is found, the item should be decomposed the same way, the hard part is to know how to decompose it as the property will vary ; P31 and P279 are an obvious start but beyond that, I'm not sure we could find a general solution.
::PS: it's beyond you question but there is also the reverse problem, how to select one lexeme when multiple are linked to the same item...
::Cheers, [[User:VIGNERON|VIGNERON]] ([[User talk:VIGNERON|talk]]) 10:43, 24 May 2026 (UTC)
:::For the point 2, I think humans will be used way more than scholarly articles and disambiguations in NLG functions (outside references), that's why humans concern me more (still a cool pie chart, though).
:::For the reverse problem, there is already {{Z|Z27327}}: it's far from perfect, but usually makes a decent choice. Obviously it is not "complete", and probably it will never be complete, but it will have to be progressively improved by the community. And probably in the future we will need to create similar functions to select the best lexeme in more specific cases.
:::For my fourth point, I didn't think about the decomposition, but it is something that could be done with another never-complete community-mantained function, that progressively keeps being improved. If [[Wikifunctions:Type proposals/Semantic unit|semantic units]] will be implemented, through them it could actually be possible to do this operation in a laguage-independent way. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 12:10, 24 May 2026 (UTC)
::{{re|YoshiRulz}} Proper noun synthesis, along with other fallbacks for realizing the names of concepts that don't have lexemes, is merely a step within the overall abstract content rendering process and is not inherently tied to the process itself; having the ability to [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/graph/client.py#L327 run any number of fallback mechanisms], instead of a raw call to (the equivalent of) Z27327, should be possible with any of the methods listed on the architectures page. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 16:41, 24 May 2026 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #249 is out: Annual plan 2026-2027 ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-05-23|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we present you the current draft of objectives for Wikifunctions and Abstract Wikipedia in the WMF Annual Plan 2026-2027, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 09:48, 25 May 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30536976 -->
:The new <code>return_type</code> param to [[Special:ListObjectsByType]] will show Functions returning e.g. {{Z|27951}} and {{Z|882}} if those are typed in manually, but the dropdown menu doesn't offer them, probably because it's a copy of the dropdown above (and there are no Persistent objects of those Types). [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 10:12, 26 May 2026 (UTC)
::@[[User:YoshiRulz|YoshiRulz]]: Correct, it's filtering for Types, which includes "real" enums like [https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&return_type=Z20342&orderby=name Day of Roman year (Z20342)]; light-weight enums have downsides as well as upsides, of which this is one. :-( [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:39, 1 June 2026 (UTC)
:::I assume you mean {{Z|17402}}, since {{Z|20342}} is not an enumeration type? But I never mentioned enums: My hypothesis is that a Type appears in the dropdown iff there is a Persistent object of that type (<code>Z2K2.Z1K1</code>). Whereas I would expect a Type to appear in the dropdown iff there are any Functions which return objects of that type (<code>Z2K2.Z8K2</code>). Or just show every Type in the return type dropdown, since [[Special:ListObjectsByType/Z39|you already have a "no results" message]]. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 16:53, 1 June 2026 (UTC)
::::@[[User:YoshiRulz|YoshiRulz]]: Yes, you are correct, the concept of a Type here means "there is a Persistent object of that type". Other things (in practice, light-weight enums like Z27951) aren't Types. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 16:57, 1 June 2026 (UTC)
== Type documentation template ==
Over the past couple of weeks, I've been developing and rolling out {{t|type documentation}}: a standardised layout for Type metadata, de/constructors, conversions, etc. on each Type's talk page. (The layout is loosely based on [[d:Template:Property documentation|Wikidata's]].) See [[Talk:Z16683|Integer]] for an example that uses most of its features, and [[Talk:Z99|Quote]] for one that doesn't.<br>At this point I can't think of anything more to add besides [[Help:Comparison_function_table/float64|filling out]] a couple more [[Help:Type_conversion_table/Codepoint|tables]]. But if any of you have ideas or feedback, please click through to the relevant talk page and leave me a message. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 12:29, 26 May 2026 (UTC)
:I really like what you're doing here. Thank you. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 13:26, 26 May 2026 (UTC)
:Yeah, nice work! I don’t think “Function declarations” is the best header for the collapsed table of searches by function signature, however. Now that it’s finally landed, we should probably include https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&return_type=Z16683 as well (outside the table). [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:23, 26 May 2026 (UTC)
== Apparent error in implementations of {{Z|20616}} ==
Please can I request help in how to understand a bug? Sorry if this is not the best place to ask.
I created lexemes [[d:Lexeme:L1566135|langue morte L1566135]] in French and [[d:Lexeme:L1566139|lengua muerta L1566139]] in Spanish, with property {{P|5185}} set to {{Q|Q1775415}} in each case. {{Z|20616}} should return a list of the grammatical genders of a given lexeme. It has two implementations, {{Z|Z20641}} and {{Z|Z21127}}, each of which works perfectly in the French case, returning a list containing Q1775415. But in the Spanish case, each of the two implementations wrongly returns an empty list. I cannot understand what is going wrong. How can I find out what is happening here? I would be grateful for any help or advice. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:56, 26 May 2026 (UTC)
:Both implementations return [https://www.wikifunctions.org/wiki/Z20616?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z20616%22%2C%22Z20616K1%22%3A%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z6825%22%2C%22Z6825K1%22%3A%7B%22Z1K1%22%3A%22Z6095%22%2C%22Z6095K1%22%3A%22L1566139%22%7D%7D%7D the same result]. As you added the gender only yesterday, I suppose it must have still been looking at a cached version of the lexeme from before that edit. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 16:06, 26 May 2026 (UTC)
::Thank you for answering. Yes, it works now. I thought it might have been something like that, but I waited more than 12 hours before testing it again today. I think that whenever SPARQL is in use, there will be caching issues, and it is a very bad problem. Is there any way of clearing the cache, or knowing when the cache will next be cleared, or how long it is necessary to wait before the changes come through? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 18:59, 26 May 2026 (UTC)
:::Well, it depends on the cache. “Wikidata entities in the orchestrator cache timeout after 24 hours” [https://t.me/Wikifunctions/28369 according to] @[[User:DMartin (WMF)|DMartin (WMF)]]. There is currently no way to clear that. I don’t think we have a handy guide to the different caches in operation, but the “general” function-call cache should be reset for a particular function when that function is edited. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 22:05, 26 May 2026 (UTC)
::::I think this is very unfortunate for anyone doing tests in Wikifunctions. So there is a 24-hour delay even applying to changes in Wikidata due to the Wikifunctions orchestrator cache, apart from any other caches such as the SPARQL one. I notice that an intermediate-level call using the [[d:Lexeme:L1566139|lengua muerta L1566139]] lexeme change, {{Z|33725}}, now works on "latín es una lengua muerta.", but the top-level call {{Z|26039}} still does not find the correct gender. If I test the function every 12 hours, does that mean that the erroneous result will be produced for ever, because it will always take the bad value less than 24 hours old from the cache? [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 13:45, 27 May 2026 (UTC)
:::::I can only sympathize.
:::::It seems to me that [https://www.wikifunctions.org/wiki/Z26039?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z26039%22%2C%22Z26039K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q397%22%7D%2C%22Z26039K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q45762%22%7D%2C%22Z26039K3%22%3A%22Z1003%22%7D this has been correct] for a couple of days. But in the general case, no, repeated use of cached results does not re-start the clock. That would indeed be most unfortunate! [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 13:59, 27 May 2026 (UTC)
::::::It still doesn't work for me, it says "latín es un lengua muerta." But the test on the top-level implementation page, {{Z|33725}}, does work now. By the way, really it should say "el latín es una lengua muerta.", but that is another issue. Anyway, thanks a lot for your help. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 14:06, 27 May 2026 (UTC)
:::::::Ah, yes… my mistake, sorry.
:::::::It should be [https://www.wikifunctions.org/view/en/Z26039?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z26039%22%2C%22Z26039K1%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q397%22%7D%2C%22Z26039K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q45762%22%7D%2C%22Z26039K3%22%3A%22Z1003%22%7D consistent now]. The “couple of days” is the clue here; we were getting a result from the function-call cache and this has now been refreshed by my edit. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 14:25, 27 May 2026 (UTC)
::::::::Yes, it all works now. Thanks. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 14:54, 27 May 2026 (UTC)
== Vote now in the 2026 U4C election ==
<section begin="announcement-content" />
Eligible voters are asked to participate in the 2026 [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee]] election. More information–including an eligibility check, voting process information, candidate information, and a link to the vote–are available on Meta at the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|2026 Election information page]]. The vote closes on 2 June 2026 at [https://zonestamp.toolforge.org/1780358400 00:00 UTC].
Please vote if your account is eligible. Results will be available by 14 June 2026. -- In cooperation with the U4C,<section end="announcement-content" />
[[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]]) 17:14, 27 May 2026 (UTC)
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 -->
== [[Z35880]] ==
The code of this implementation is adapted directly from [https://github.com/sutton-signwriting/core/blob/master/src/swu/swu-re.js]. I'm not sure why this function only works for "null" and "sort". Every other input causes the function to return [[Z577]]. Does anyone know what could be going on here? [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 21:47, 30 May 2026 (UTC)
:Could you creade testcases showing this? [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 21:55, 30 May 2026 (UTC)
::I determined that this problem was due to a problem with UTF encoding, and it has since been resolved. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 18:11, 31 May 2026 (UTC)
== Continued WASI runner problems ==
I've continued to experience {{z|576}} on {{z|35904}}, despite [[phab:T419933|the purported fix]]. See {{z|35945}}. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 18:29, 31 May 2026 (UTC)
:A possibly related issue while trying to add more rows in these articles :
:1. https://abstract.wikipedia.org/view/en/Q16038495
:2. https://abstract.wikipedia.org/view/en/Q13581178
:So, I stopped at 2 rows. [[User:Jsamwrites|John Samuel]] 20:40, 31 May 2026 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #250 is out: Looking back and forward ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-05-30|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we present you a recollection of our work so far, now that we celebrate our 250th newsletter, we share with you a summary of our latest outreach activities, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 10:04, 1 June 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30606821 -->
== Wikifunctions & Abstract Wikipedia Newsletter #251 is out: The illustrated encyclopaedia ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-06-05|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we introduce our first function to import images on Abstract Wikipedia, we present our Functions of the Week, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Also, we remind you that if you have questions or ideas to discuss, the next '''Volunteers' Corner''' will be held on '''[https://zonestamp.toolforge.org/1780939800 June 8, at 17:30 UTC]''' ([https://meet.google.com/xuy-njxh-rkw link to the meeting]).
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 14:14, 5 June 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30606821 -->
== Questions on a simple fragment example "The Eiffel Tower is a monument" ==
Hello. I would like to be able to use the function {{Z|Z26039}} to generate sentences like "the Eiffel Tower is a monument" or "la torre Eiffel es un monumento" in Spanish. It already raises a lot of questions.
Question 1: I should be able to set the first input "entity" to {{Q|Q243}} and the second input "class" to {{Q|Q4989906}} and get the correct sentence, shouldn't I? Just checking.
Question 2: {{Z|Z26039}} calls a language-specific function like "Spanish article-less instantiating sentence" {{Z|Z26337}}, which uses the label of the Wikidata item to get the text for "Eiffel Tower", which is similar to the lemma of the lexeme. But this would not be acceptable in production, would it? The item label "belongs" to all Wikidata users, not to Abstract Wikipedia users, and there is no guarantee what it might contain, such as a parenthesis for disambiguation. Or am I wrong?
Question 3a: We need to have a lexeme for the combination "Eiffel Tower" in each language, don't we? For instance in languages with gender, the lexeme is the only place to find the gender. It is true that if we know that the equivalent of "Tower" is the head word, syntactical information can be found under the lexeme for "tower", and it would be good to use a system like that. But the only place that the syntactic dependency information could be located is under the lexeme.
Question 3b: At present for {{Z|Z26039}} etc. to work, we have to add any forms or syntax information to the lexeme of the whole phrase, such as "Eiffel Tower". But property {{Q|P5238}} with attributes {{Q|P9763}} and {{Q|P9764}} can be used to define the structure and avoid duplicating the syntax information. What lexeme would be used for "Eiffel" in this case? Would it be the same as a lexeme for {{Q|Q20882}}? That makes no sense to me. I propose that there should be a dummy lexeme in each language which could be added to {{Q|P5238}} instead of a real lexeme to mean "invariant element".
Question 4: As has already been pointed out elsewhere, the fragment functions do not work well with the initial definite article in languages like English, Spanish and German. Examples:
* "'''The Eiffel Tower is a monument.'''" The item label "Eiffel Tower" omits the article and so the result omits the initial "The" in English. French, Spanish and German are similar.
* "'''The Sun is a star.'''" Similarly the article is wrongly omitted, also in French, Spanish and German.
* "'''Westminster Abbey is a monument.'''" This is OK in English and German as no article is needed, but not in French or Spanish where it is, for instance "La Abadía de Westminster es un monumento".
* "'''Latin is a dead language.'''" Also this is OK in English and German but not in French or Spanish, where an article is needed.
* "'''Jupiter is a planet.'''". This does not need an article and is OK in all the languages; I include this to show that you cannot assume that there is an article in all cases in French and Spanish.
How should the language functions find out whether an article is needed? In some cases, where the lemma is a phrase like "Abadía de Westminster" in Spanish, I think that it could be deduced, but in general there is no rule to give the answer. Using different rendering functions according to the case is '''not''' a solution, although it might work for a few specific languages like these four. It would not be acceptable because there will be many, many other cases of syntactical choices to be made for all the different languages, and we cannot expect the person writing the abstract code to take them all into account. So I suppose that a declaration in the lexeme is needed to solve this problem. I suppose that there must already be linguistic terminology for this problem, but I don't know it.
I would be grateful for any comments on any of these questions. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 15:02, 5 June 2026 (UTC)
:@[[User:Strobilomyces|Strobilomyces]] I think this topic is better placed at [[abstract:Abstract Wikipedia:Project chat|Abstract Wikipedia:Project chat]], so I copied your topic there, and answered it there too. [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 22:07, 8 June 2026 (UTC)
::OK, sorry about that. [[User:Strobilomyces|Strobilomyces]] ([[User talk:Strobilomyces|talk]]) 17:03, 9 June 2026 (UTC)
== Deployment of Legal and Safety Contacts Link in the Footer of Your Wiki ==
Hello community,
The Wikimedia Foundation has provided [[wmf:Legal:Wikimedia Foundation Legal and Safety Contact Information|a single legal and safety contact page]], to be linked in the footer of your wiki, to ensure access to accurate legal information. This is a regulatory requirement.
We have already rolled out links to English, German, Italian, Spanish Wikipedias and other wikis and we will deploy to your wiki soon.
Please [[m:Wikimedia Foundation Legal and Safety Contacts FAQ|read more on the project page]] and leave any comments in this thread or on [[m:Talk:Wikimedia Foundation Legal and Safety Contacts FAQ|the talk page]]. –– [[User:STei (WMF)|STei (WMF)]] ([[User talk:STei (WMF)|talk]]) 17:54, 9 June 2026 (UTC)
== Apache License 2.0 ==
Hello, Wikifunctions says it uses the Apache 2.0 license for code. Apache 2.0 is incompatible with GPLv2 only and some other licenses, and I would like to be able to use Wikifunctions with software that uses incompatible licenses with Apache 2.0. Is there any plans to fix this incompatibility or relicense Wikifunctions code? Thanks! [[User:A random Wikipedian in the billions|A random Wikipedian in the billions]] ([[User talk:A random Wikipedian in the billions|talk]]) 11:49, 12 June 2026 (UTC)
:@[[User:A random Wikipedian in the billions|A random Wikipedian in the billions]]: No. The licence was picked very carefully based on the way it needs to integrate with other systems, principally Wikipedias and Wikidata. Changing the licence would ba a major, breaking undertaking. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 11:52, 12 June 2026 (UTC)
tav5kmwzqi7fhzn447t75folatxuiu9
Wikifunctions:Requests for deletions
4
1696
282525
282008
2026-06-12T03:08:08Z
SpBot
978
archive 2 sections: 1 to [[Wikifunctions:Requests for deletions/Archive/2026/04]], 1 to [[Wikifunctions:Requests for deletions/Archive/2026/05]] - previous edit: [[:User:Ameisenigel|Ameisenigel]], 2026-06-10 17:55
282525
wikitext
text/x-wiki
<noinclude>__NEWSECTIONLINK__ __FORCETOC__</noinclude>
Functions or implementations or tests which do not work properly, do not meet notability criteria or are duplicates of another object can be deleted. Please nominate items for deletions under the "Requests for deletion" section below.
If it is obvious vandalism, just report it in [[Wikifunctions:Report vandalism]], or ping an [[Special:ListAdmins|administrator]]. Contact can also be made with an administrator on [https://t.me/Wikifunctions Telegram] or IRC [irc://irc.libera.chat/wikipedia-abstract #wikipedia-abstract].
If it is a predefined object (its ZID is less than 10000), please see [[Wikifunctions:Report a technical problem]].
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|level = 2
}}
{{Archives|{{Special:PrefixIndex/Wikifunctions:Requests for deletions/Archive/|stripprefix=1}}}}
= Requests for deletion =
== [[Z30234]] ==
Nonsense/won't work, {{ping|EnaldoSS}}. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 19:15, 9 June 2026 (UTC)
75sc5er9k5z2mxv42w56en0ew0k6rp8
Wikifunctions:Reserved ZIDs
4
7395
282400
270055
2026-06-11T23:29:34Z
Virinas-code
2884
Add multiple builtins
282400
wikitext
text/x-wiki
<noinclude><languages/>{{Technical documentation navbox}}</noinclude>
<translate>
<!--T:214-->
This page details ZIDs that are reserved by Wikilambda, the software that runs Wikifunctions. All ZIDs with four digits or fewer are reserved. See [[Wikifunctions:Reserved ZIDs/all]] for a list of currently pre-defined objects.
=== Ranges === <!--T:62-->
<!--T:10-->
We reserve certain spaces for certain kinds of pre-defined objects.
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code> – <code>Z99</code>: <translate><!--T:63--> core types.</translate> ''<translate><!--T:64--> (See [[<tvar name="a">#core-types</tvar>|§ Core types]] below.)</translate>''
* <code>Z100</code> – <code>Z199</code>: <translate><!--T:65--> validators for the core types (''i.e.'' for each core type, +100 gives the validator), ''e.g.'' Z104 is the validator for Z4/Type</translate>
* <code>Z200</code> – <code>Z299</code>: <translate><!--T:66--> built-in implementations for the validators for the core types (''i.e.'' Z204 is the built-in implementation for the validator for Z4/Type)</translate>
* <code>Z300</code> – <code>Z399</code>: ''<translate><!--T:67--> unassigned for now</translate>''
* <code>Z400</code> – <code>Z499</code>: ''<translate><!--T:68--> reserved for local use</translate>''
* <code>Z500</code> – <code>Z599</code>: <translate><!--T:69--> core error types (<code>Z5xx</code> because <code>Z5</code> is error)</translate> ''<translate><!--T:70--> (See [[<tvar name="a">#core-error-types</tvar>|§ Core error types]] below.)</translate>''
* <code>Z600</code> – <code>Z699</code>: <translate><!--T:131--> core programming languages (<code>Z6xx</code> because <code>Z61</code> is programming language)</translate>
* <code>Z700</code> – <code>Z799</code>: ''<translate><!--T:71--> unassigned for now</translate>''
* <code>Z800</code> – <code>Z899</code>: <translate><!--T:72--> definitions of core functions with built-ins (<code>Z8xx</code> because <code>Z8</code> is function)</translate> ''<translate><!--T:73--> (See [[<tvar name="a">#core-functions</tvar>|§ Core functions]] below.)</translate>''
* <code>Z900</code> – <code>Z999</code>: <translate><!--T:74--> built-ins for the core functions (they are +100 from the respective Z8xx)</translate>
* <code>Z1000</code> – <code>Z2999</code>: <translate><!--T:75--> natural languages (instances of Z60)</translate>
* <code>Z3000</code> – <code>Z5999</code>: ''<translate><!--T:149--> reserved for future use</translate>''
* <code>Z6000</code> – <code>Z6999</code>: <translate><!--T:215--> ''types, functions, ''etc.'' for using content from Wikidata and other Wikimedia sources''</translate>
** <code>Z6000</code> – <code>Z6099</code>: ''<translate><!--T:216--> types for content from Wikidata and other Wikimedia sources</translate>'' ''(See [[<tvar name="1">#wikidata-types</tvar>|§ Wikidata types]] below.)''
** <code>Z6100</code> – <code>Z6199</code>: ''<translate><!--T:217--> validators for these types</translate>''
** <code>Z6200</code> – <code>Z6299</code>: ''<translate><!--T:218--> built-in implementations of the validators</translate>''
** <code>Z6800</code> – <code>Z6899</code>: ''<translate><!--T:219--> helper functions for these types that need to be built-in (e.g., fetching, equality)</translate>'' ''(See [[<tvar name="1">#wikidata-functions</tvar>|§ Wikidata functions]] below.)''
** <code>Z6900</code> – <code>Z6999</code>: ''<translate><!--T:220--> built-in implementations of the helper functions</translate>''
* <code>Z7000</code> – <code>Z7999</code>: ''<translate><!--T:185--> reserved for future use</translate>''
* <code>Z8000</code> – <code>Z8999</code>: <translate><!--T:172--> Testers for each pre-defined function (''e.g.'' Z801 is tested via Z8010, Z8011, Z8012, … Z8019).</translate>
* <code>Z9000</code> – <code>Z9999</code>: ''<translate><!--T:173--> reserved for future use</translate>''
</div></div>
{{Anchor|core-types}}
<translate>
=== Core types === <!--T:76-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code>: <translate><!--T:11--> <tvar name="1">{{Z|Z1}}</tvar> (Type), the root.</translate>
* <code>Z2</code>: <translate><!--T:12--> <tvar name="1">{{Z|Z2}}</tvar> (Type): everything on the wiki is a <tvar name="Z"><code>Z2</code></tvar>, that's why this has such a low ZID.</translate>
* <code>Z3</code>: <translate><!--T:13--> <tvar name="1">{{Z|Z3}}</tvar> (Type): because the word <tvar name="key"><bdi lang="en" dir="ltr">''key''</bdi></tvar> has three letters in English.</translate>
* <code>Z4</code>: <translate><!--T:14--> <tvar name="1">{{Z|Z4}}</tvar> (Type): because the word <tvar name="type"><bdi lang="en" dir="ltr">''type''</bdi></tvar> has four letters in English.</translate>
* <code>Z5</code>: <translate><!--T:15--> <tvar name="1">{{Z|Z5}}</tvar> (Type): because the word <tvar name="error"><bdi lang="en" dir="ltr">''error''</bdi></tvar> has five letters in English.</translate> ''<translate><!--T:77--> (See [[<tvar name="a">#core-error-types</tvar>|§ Core error types]] below.)</translate>''
* <code>Z6</code>: <translate><!--T:16--> <tvar name="1">{{Z|Z6}}</tvar> (Type): because the word <tvar name="string"><bdi lang="en" dir="ltr">''string''</bdi></tvar> has six letters in English.</translate>
* <code>Z7</code>: <translate><!--T:17--> <tvar name="1">{{Z|Z7}}</tvar> (Type): because function calls are the main magic of the system, and 7 is a magic number. It is also close to <tvar name="Z"><code>Z8</code></tvar>.</translate>
* <code>Z8</code>: <translate><!--T:18--> <tvar name="1">{{Z|Z8}}</tvar> (generic type, thus technically a function): because <tvar name="function"><bdi lang="en" dir="ltr">''function''</bdi></tvar> has eight letters in English.</translate> ''<translate><!--T:78--> (See [[<tvar name="a">#core-functions</tvar>|§ Core functions]] below.)</translate>''
* <code>Z9</code>: <translate><!--T:19--> <tvar name="1">{{Z|Z9}}</tvar> (Type): because the word <tvar name="reference"><bdi lang="en" dir="ltr">''reference''</bdi></tvar> has nine letters in English.</translate>
* <code>Z10</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z11</code>: <translate><!--T:21--> <tvar name="1">{{Z|Z11}}</tvar> (Type): because it is just one language, and there's a ''one'' in the name.</translate>
* <code>Z12</code>: <translate><!--T:22--> <tvar name="1">{{Z|Z12}}</tvar> (Type): because it's an extension of <tvar name="Z"><code>Z11</code></tvar>.</translate>
* <code>Z13</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z14</code>: <translate><!--T:23--> <tvar name="1">{{Z|Z14}}</tvar> (Type): because the word <tvar name="implementation"><bdi lang="en" dir="ltr">''implementation''</bdi></tvar> has fourteen letters in English.</translate>
* <code>Z15</code>: <translate><!--T:151--> ''Not yet assigned.''</translate>
* <code>Z16</code>: <translate><!--T:80--> <tvar name="1">{{Z|Z16}}</tvar> (Type): no good reason, it's close to Z14, and Z61/Programming language.</translate>
* <code>Z17</code>: <translate><!--T:81--> <tvar name="1">{{Z|Z17}}</tvar> (Type).</translate>
* <code>Z18</code>: <translate><!--T:82--> <tvar name="1">{{Z|Z18}}</tvar> (Type).</translate>
* <code>Z19</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z20</code>: <translate><!--T:25--> <tvar name="1">{{Z|Z20}}</tvar> (Type): because 20/20 is perfect vision, and tests make errors visible.</translate>
* <code>Z21</code>: <translate><!--T:83--> <tvar name="1">{{Z|Z21}}</tvar> (Type).</translate>
* <code>Z22</code>: <translate><!--T:26--> <tvar name="1">{{Z|Z22}}</tvar> (Type).</translate>
* <code>Z23</code>: <translate><!--T:84--> <tvar name="1">{{Z|Z23}}</tvar> (Type).</translate>
* <code>Z24</code>: <translate><!--T:132--> <tvar name="1">{{Z|Z24}}</tvar> (Unit).</translate>
* <code>Z25</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z26</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z27</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z28</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z29</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z30</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z31</code>: <translate><!--T:133--> <tvar name="1">{{Z|Z31}}</tvar> (Type).</translate>
* <code>Z32</code>: <translate><!--T:134--> <tvar name="1">{{Z|Z32}}</tvar> (Type): because it's an extension of <tvar name="Z"><code>Z31</code></tvar>.</translate>
* <code>Z33</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z34</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z35</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z36</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z37</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z38</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z39</code>: <translate><!--T:85--> <tvar name="1">{{Z|Z39}}</tvar> (Type): because Z3/Key Z9/Reference.</translate>
* <code>Z40</code>: <translate><!--T:86--> <tvar name="1">{{Z|Z40}}</tvar> (Type): because Boole first published in (18)40.</translate>
* <code>Z41</code>: <translate><!--T:87--> <tvar name="1">{{Z|Z41}}</tvar> (Boolean).</translate>
* <code>Z42</code>: <translate><!--T:88--> <tvar name="1">{{Z|Z42}}</tvar> (Boolean).</translate>
* <code>Z43</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z44</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z45</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z46</code>: <translate><!--T:225--> <tvar name="1">{{Z|Z46}}</tvar> (Type): because it converts a Z4/Type into code in a Z61/Programming language.</translate>
* <code>Z47</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z48</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z49</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z50</code>: <translate><!--T:24--> <tvar name="1">{{Z|Z50}}</tvar> (Type): because Error is <tvar name="Z"><code>Z5</code></tvar>.</translate>
<!--<nowiki>
* <code>Z51</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z59</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z60</code>: <translate><!--T:89--> <tvar name="1">{{Z|Z60}}</tvar> (Type): because <code>Z6</code> is a string.</translate>
* <code>Z61</code>: <translate><!--T:90--> <tvar name="1">{{Z|Z61}}</tvar> (Type): because <code>Z16</code> is code.</translate>
* <code>Z64</code>: <translate><!--T:226--> <tvar name="1">{{Z|Z64}}</tvar>: because it is the inverse of <tvar name="2"><code>Z46</code></tvar>.</translate>
<!--<nowiki>
* <code>Z62</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z79</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z80</code>: <translate><!--T:92--> <tvar name="1">{{Z|Z80}}</tvar> (Type): because it is an octet.</translate>
<!--<nowiki>
* <code>Z81</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z69</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z84</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z85</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z86</code>: <translate><!--T:93--> <tvar name="1">{{Z|Z86}}</tvar> (Type): because it is not exactly a Z80/Byte, but more like Z6/String.</translate>
<!--<nowiki>
* <code>Z87</code>: <translate>'''…''' (Type).</translate>
* <code>Z88</code>: <translate>'''…''' (Type).</translate>
</nowiki>
-->
* <code>Z89</code>: <translate><!--T:227--> <tvar name="1">{{Z|Z89}}</tvar> (Type)</translate>
* <code>Z99</code>: <translate><!--T:30--> {{Z|Z99}} (Type): because it looks a bit like a closing quotation mark in English.</translate>
</div></div>
{{Anchor|wikidata-types}}
<translate>
==== Wikidata types ==== <!--T:228-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<code>Z6001</code>: <translate><!--T:229--> <tvar name="1">{{Z|Z6001}}</tvar> (Type)</translate>
*<code>Z6002</code>: <translate><!--T:230--> <tvar name="1">{{Z|Z6002}}</tvar> (Type)</translate>
*<code>Z6003</code>: <translate><!--T:231--> <tvar name="1">{{Z|Z6003}}</tvar> (Type)</translate>
*<code>Z6004</code>: <translate><!--T:232--> <tvar name="1">{{Z|Z6004}}</tvar> (Type)</translate>
*<code>Z6005</code>: <translate><!--T:233--> <tvar name="1">{{Z|Z6005}}</tvar> (Type)</translate>
*<code>Z6006</code>: <translate><!--T:234--> <tvar name="1">{{Z|Z6006}}</tvar> (Type)</translate>
*<code>Z6007</code>: <translate><!--T:235--> <tvar name="1">{{Z|Z6007}}</tvar> (Type)</translate>
*<code>Z6008</code>: <translate><!--T:236--> <tvar name="1">{{Z|Z6008}}</tvar> (Type)</translate>
*<code>Z6010</code>: <translate><!--T:237--> <tvar name="1">{{Z|Z6010}}</tvar> (Type)</translate>
*<code>Z6011</code>: <translate><!--T:238--> <tvar name="1">{{Z|Z6011}}</tvar> (Type)</translate>
*<code>Z6020</code>: <translate><!--T:239--> <tvar name="1">{{Z|Z6020}}</tvar> (Type)</translate>
*<code>Z6021</code>: <translate><!--T:240--> <tvar name="1">{{Z|Z6021}}</tvar> (Claim subtype)</translate>
*<code>Z6022</code>: <translate><!--T:241--> <tvar name="1">{{Z|Z6022}}</tvar> (Claim subtype)</translate>
*<code>Z6023</code>: <translate><!--T:242--> <tvar name="1">{{Z|Z6023}}</tvar> (Claim subtype)</translate>
*<code>Z6030</code>: <translate><!--T:243--> <tvar name="1">{{Z|Z6030}}</tvar> (Type)</translate>
*<code>Z6031</code>: <translate><!--T:244--> <tvar name="1">{{Z|Z6031}}</tvar> (Entity part)</translate>
*<code>Z6032</code>: <translate><!--T:245--> <tvar name="1">{{Z|Z6032}}</tvar> (Entity part)</translate>
*<code>Z6033</code>: <translate><!--T:246--> <tvar name="1">{{Z|Z6033}}</tvar> (Entity part)</translate>
*<code>Z6034</code>: <translate><!--T:247--> <tvar name="1">{{Z|Z6034}}</tvar> (Entity part)</translate>
*<code>Z6035</code>: <translate><!--T:248--> <tvar name="1">{{Z|Z6035}}</tvar> (Entity part)</translate>
*<code>Z6036</code>: <translate><!--T:249--> <tvar name="1">{{Z|Z6036}}</tvar> (Entity part)</translate>
*<code>Z6037</code>: <translate><!--T:250--> <tvar name="1">{{Z|Z6037}}</tvar> (Entity part)</translate>
*<code>Z6038</code>: <translate><!--T:251--> <tvar name="1">{{Z|Z6038}}</tvar> (Entity part)</translate>
*<code>Z6040</code>: <translate><!--T:252--> <tvar name="1">{{Z|Z6040}}</tvar> (Type)</translate>
*<code>Z6041</code>: <translate><!--T:253--> <tvar name="1">{{Z|Z6041}}</tvar> (Statement rank)</translate>
*<code>Z6042</code>: <translate><!--T:254--> <tvar name="1">{{Z|Z6042}}</tvar> (Statement rank)</translate>
*<code>Z6043</code>: <translate><!--T:255--> <tvar name="1">{{Z|Z6043}}</tvar> (Statement rank)</translate>
*<code>Z6060</code>: <translate><!--T:256--> <tvar name="1">{{Z|Z6060}}</tvar> (Type)</translate>
*<code>Z6061</code>: <translate><!--T:257--> <tvar name="1">{{Z|Z6061}}</tvar> (Type)</translate>
*<code>Z6062</code>: <translate><!--T:258--> <tvar name="1">{{Z|Z6062}}</tvar> (Type)</translate>
*<code>Z6063</code>: <translate><!--T:259--> <tvar name="1">{{Z|Z6063}}</tvar> (Type)</translate>
*<code>Z6064</code>: <translate><!--T:260--> <tvar name="1">{{Z|Z6064}}</tvar> (Type)</translate>
*<code>Z6091</code>: <translate><!--T:261--> <tvar name="1">{{Z|Z6091}}</tvar> (Type)</translate>
*<code>Z6092</code>: <translate><!--T:262--> <tvar name="1">{{Z|Z6092}}</tvar> (Type)</translate>
*<code>Z6094</code>: <translate><!--T:263--> <tvar name="1">{{Z|Z6094}}</tvar> (Type)</translate>
*<code>Z6095</code>: <translate><!--T:264--> <tvar name="1">{{Z|Z6095}}</tvar> (Type)</translate>
*<code>Z6096</code>: <translate><!--T:265--> <tvar name="1">{{Z|Z6096}}</tvar> (Type)</translate>
</div></div>
{{Anchor|core-functions}}
<translate>
=== Core functions === <!--T:94-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z801</code> {{Z+|Z801}}: T ➝ T
* <code>Z802</code> {{Z+|Z802}}: Boolean, T, T ➝ T
* <code>Z803</code> {{Z+|Z803}}: Key reference, Any ➝ Any
*: <translate><!--T:96--> Z3/Key</translate>
* <code>Z804</code> {{Z+|Z804}}: List(Key reference) ➝ Abt
* <code>Z805</code> {{Z+|Z805}}: Any ➝ List(Pair(Key reference, Any))
*: <translate><!--T:41--> Reify has five letters</translate>
* <code>Z808</code> {{Z+|Z808}}: List(Pair(Key reference, Any)) ➝ Any
*: <translate><!--T:42--> Abstract has eight letters.</translate>
* <code>Z810</code> {{Z+|Z810}}: T, List(T) ➝ List(T)
*: <translate><!--T:46--> (because Z10 is list).</translate>
* <code>Z811</code> {{Z+|Z811}}: List(T) ➝ T
*: <translate><!--T:43--> (because Z10 was going to be list and we get the first)</translate>
* <code>Z812</code> {{Z+|Z812}}: List(T) ➝ List(T)
*: <translate><!--T:44--> (because Z10 was going to be list and we get the second, the rest)</translate>
* <code>Z813</code> {{Z+|Z813}}: List(T) ➝ Boolean
*: <translate><!--T:45--> (because Z13 was planned to be empty list).</translate>
* <code>Z820</code> {{Z+|Z820}}: String, Any ➝ Any
* <code>Z821</code> {{Z+|Z821}}: Pair(T1, T2) ➝ T1
*: <translate><!--T:47--> (because Z22 is pair).</translate>
* <code>Z822</code> {{Z+|Z822}}: Pair(T1, T2) ➝ T2
*: <translate><!--T:48--> (because Z22 is pair).</translate>
* <code>Z823</code> {{Z+|Z823}}: Quote ➝ Pair(Object, Object)
* <code>Z828</code> {{Z+|Z828}}: Quote ➝ Persistent object
* <code>Z844</code> {{Z+|Z844}}: Boolean, Boolean ➝ Boolean
* <code>Z850</code> {{Z+|Z850}}: Object, Error type, Object ➝ Object
*: <translate><!--T:266--> (because it deals with Z5/Errors)</translate>
* <code>Z851</code> {{Z+|Z851}}: Error type, List(T) ➝ Unit
* <code>Z852</code> {{Z+|Z852}}: Error, Error type ➝ Boolean
* <code>Z853</code> {{Z+|Z853}}: Object ➝ Pair(Error, Object)
* <code>Z854</code> {{Z+|Z854}}: Object ➝ String
* <code>Z860</code> {{Z+|Z860}}: String ➝ Language
* <code>Z866</code> {{Z+|Z866}}: String, String ➝ Boolean
* <code>Z868</code> <translate><!--T:267--> Replaced by <tvar name="1">{{Z+|Z22717}}: String ➝ List(Character)</tvar></translate>
*: <translate><!--T:49--> Because Z6/String and Z86/Character.</translate>
* <code>Z872</code> {{Z+|Z872}}: Function, Typed list (Object) ➝ Object
* <code>Z873</code> {{Z+|Z873}} Function, List ➝ List
* <code>Z876</code> {{Z+|Z876}}: Function, List, Object ➝ Object
* <code>Z877</code> {{Z+|Z877}}: HTML fragment -> HTML fragment
* <code>Z881</code> {{Z+|Z881}}: Type ➝ Type
* <code>Z882</code> {{Z+|Z882}}: Type, Type ➝ Type
* <code>Z883</code> {{Z+|Z883}}: T ➝ T
* <code>Z884</code> {{Z+|Z884}}: Type, List(Reference), String ➝ Type
* <code>Z885</code> {{Z+|Z885}}: Error type ➝ Type
* <code>Z886</code> <translate><!--T:268--> Replaced by <tvar name="1">{{Z+|Z22693}}: List*(Character) ➝ String</tvar></translate>
*: <translate><!--T:50--> because Z86/Character and Z6/String.</translate>
* <code>Z888</code> <translate><!--T:269--> Replaced by <tvar name="1">{{Z+|Z22683}}: Character, Character ➝ Boolean</tvar></translate>
* <code>Z889</code> {{Z+|Z889}}: Typed list (Object), Typed list (Object), Function ➝ Boolean
* <code>Z899</code> {{Z+|Z899}}: Quote ➝ Any
*: <translate><!--T:97--> because Z99/Quote.</translate>
</div></div>
{{Anchor|wikidata-functions}}
<translate>
==== Wikidata functions ==== <!--T:270-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<translate><!--T:271--> <tvar name="1"><code>Z6801</code></tvar> to <tvar name="2"><code>Z6808</code></tvar> are the 'same object' functions corresponding to <tvar name="3"><code>Z6001</code></tvar> to <tvar name="4"><code>Z6008</code></tvar>.</translate>
*<code>Z6820</code> {{Z+|Z6820}}: List(Object) ➝ Map(String, Object)
*<code>Z6821</code> {{Z+|Z6821}}: Item reference ➝ Item
*<code>Z6822</code> {{Z+|Z6822}}: Property reference ➝ Property
*<code>Z6824</code> {{Z+|Z6824}}: Lexeme form reference ➝ Lexeme form
*<code>Z6825</code> {{Z+|Z6825}}: Lexeme reference ➝ Lexeme
*<code>Z6826</code> {{Z+|Z6826}}: Lexeme sense reference ➝ Lexeme sense
*<code>Z6830</code> {{Z+|Z6830}}: Item reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6831</code> {{Z+|Z6831}}: Lexeme sense reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6884</code> {{Z+|Z6884}}: Type, List(Object), String ➝ Type
*<code>Z6894</code> {{Z+|Z6894}}
*<code>Z6895</code> {{Z+|Z6895}}: Object ➝ Object
*<code>Z6896</code> {{Z+|Z6896}}: List(String) ➝ Object
</div></div>
{{Anchor|core-error-types}}
<translate>
=== Core error types === <!--T:98-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <translate><!--T:103--> <tvar name="zid">{{Z|Z501}}</tvar> (error message, input): syntax error</translate>
* <translate><!--T:104--> <tvar name="zid">{{Z|Z502}}</tvar> (subtype, value): not wellformed, points to Z52x or Z53x</translate>
* <translate><!--T:105--> <tvar name="zid">{{Z|Z503}}</tvar> (function name): not implemented yet</translate>
* <translate><!--T:106--> <tvar name="zid">{{Z|Z504}}</tvar> (zid): Zid not found</translate>
* <translate><!--T:107--> <tvar name="zid">{{Z|Z505}}</tvar> (expected, actual, args): number of arguments mismatch</translate>
* <translate><!--T:108--> <tvar name="zid">{{Z|Z506}}</tvar> (expected, actual, arg): argument type mismatches</translate>
* <translate><!--T:109--> <tvar name="zid">{{Z|Z507}}</tvar> (function call): error in evaluation</translate>
* <translate><!--T:110--> <tvar name="zid">{{Z|Z508}}</tvar> (object): competing keys</translate>
* <translate><!--T:198--> <tvar name="zid">{{Z|Z509}}</tvar> (errors): List of errors</translate>
* <translate><!--T:111--> <tvar name="zid">{{Z|Z510}}</tvar> (none): nil</translate>
* <translate><!--T:112--> <tvar name="zid">{{Z|Z511}}</tvar> (key reference, object): key not found</translate>
* <translate><!--T:113--> <tvar name="zid">{{Z|Z512}}</tvar> (object): Z9 error</translate>
* <translate><!--T:114--> <tvar name="zid">{{Z|Z513}}</tvar> (resolved object): resolved object without Z2K2</translate>
* <translate><!--T:115--> <tvar name="zid">{{Z|Z514}}</tvar> (implementation): Builtin does not exist</translate>
* <translate><!--T:116--> <tvar name="zid">{{Z|Z515}}</tvar> (implementation): Builtin ID is erroneous</translate>
* <translate><!--T:117--> <tvar name="zid">{{Z|Z516}}</tvar> (key, bad value): Argument value error</translate>
* <translate><!--T:199--> <tvar name="zid">{{Z|Z517}}</tvar> (expected type, actual type, returned value, propagated error): Return type mismatch</translate>
* <translate><!--T:200--> <tvar name="zid">{{Z|Z518}}</tvar> (expected type, object, propagated error): Object type mismatch</translate>
* <translate><!--T:211--> <tvar name="zid">{{Z|Z519}}</tvar> (object): Undefined list type</translate>
* <translate><!--T:212--> <tvar name="zid">{{Z|Z520}}</tvar> (object): Wrong list type</translate>
* <translate><!--T:118--> <tvar name="zid">{{Z|Z521}}</tvar> (offending value): ZObjects must not be number or boolean or null</translate>
* <translate><!--T:119--> <tvar name="zid">{{Z|Z522}}</tvar> (offending index in array, propagated error): Array element not well formed</translate>
* <translate><!--T:120--> <tvar name="zid">{{Z|Z523}}</tvar> (object): Missing Z1K1</translate>
* <translate><!--T:121--> <tvar name="zid">{{Z|Z524}}</tvar> (value of Z1K1): Z1K1 must not be a string or array</translate>
* <translate><!--T:122--> <tvar name="zid">{{Z|Z525}}</tvar> (key): Invalid key</translate>
* <translate><!--T:123--> <tvar name="zid">{{Z|Z526}}</tvar> (key, propagated error): not wellformed value</translate>]
* <translate><!--T:272--> <tvar name="zid">{{Z|Z529}}</tvar> (host name)</translate>
* <translate><!--T:273--> <tvar name="zid">{{Z|Z530}}</tvar> (function call, propagated error)</translate>
* <translate><!--T:124--> <tvar name="zid">{{Z|Z531}}</tvar> (whole object): Z6 must have 2 keys</translate>
* <translate><!--T:125--> <tvar name="zid">{{Z|Z532}}</tvar> (whole object): Z6 without a Z6K1</translate>
* <translate><!--T:126--> <tvar name="zid">{{Z|Z533}}</tvar> (value of Z6K1): Z6K1 must be a string</translate>
* <translate><!--T:127--> <tvar name="zid">{{Z|Z534}}</tvar> (whole object): Z9 must have 2 keys</translate>
* <translate><!--T:128--> <tvar name="zid">{{Z|Z535}}</tvar> (whole object): Z9 without a Z9K1</translate>
* <translate><!--T:129--> <tvar name="zid">{{Z|Z536}}</tvar> (value of Z9K1): Z9K1 must be a string in JSON</translate>
* <translate><!--T:130--> <tvar name="zid">{{Z|Z537}}</tvar> (value of Z9K1): Z9K1 must look like a reference</translate>
* <translate><!--T:135--> <tvar name="zid">{{Z|Z538}}</tvar> (page title): wrong namespace</translate>
* <translate><!--T:136--> <tvar name="zid">{{Z|Z539}}</tvar> (page title): wrong content type</translate>
* <translate><!--T:137--> <tvar name="zid">{{Z|Z540}}</tvar> (language code): invalid language code</translate>
* <translate><!--T:138--> <tvar name="zid">{{Z|Z541}}</tvar> (language code): language code not found</translate>
* <translate><!--T:139--> <tvar name="zid">{{Z|Z542}}</tvar> (expected type, actual object): expected type, actual object</translate>
* <translate><!--T:140--> <tvar name="zid">{{Z|Z543}}</tvar> (type name): type not found</translate>
* <translate><!--T:141--> <tvar name="zid">{{Z|Z544}}</tvar> (type zid, type name, existing type name): conflicting type names</translate>
* <translate><!--T:142--> <tvar name="zid">{{Z|Z545}}</tvar> (type zid, type name, existing type zid): conflicting type Zids</translate>
* <translate><!--T:143--> <tvar name="zid">{{Z|Z546}}</tvar> (type zid, type name): builtin type not found</translate>
* <translate><!--T:144--> <tvar name="zid">{{Z|Z547}}</tvar> (input): invalid format</translate>
* <translate><!--T:145--> <tvar name="zid">{{Z|Z548}}</tvar> (error message, input): invalid JSON</translate>
* <translate><!--T:146--> <tvar name="zid">{{Z|Z549}}</tvar> (reference value): invalid ZReference</translate>
* <translate><!--T:147--> <tvar name="zid">{{Z|Z550}}</tvar> (reference value): unknown ZReference</translate>
* <translate><!--T:148--> <tvar name="zid">{{Z|Z551}}</tvar> (key, expected type, actual type): schema type mismatch</translate>
* {{Z|Z552}} <translate><!--T:186--> (index, expected type, actual type): array element type mismatch</translate>
* {{Z|Z553}} <translate><!--T:187--> (zobject): disallowed root type</translate>
* {{Z|Z554}} <translate><!--T:188--> (clashing ZID, language): label clashes with another ZObject's label</translate>
* {{Z|Z555}} <translate><!--T:189--> (ZID, title): mis-matched ZID and page title</translate>
* {{Z|Z556}} <translate><!--T:190--> (title): invalid page title</translate>
* {{Z|Z557}} <translate><!--T:191--> (error message): user does not have permission</translate>
* {{Z|Z558}} <translate><!--T:192--> (programming language): invalid programming language</translate>
* {{Z|Z559}} <translate><!--T:201--> (none): user not permitted to evaluate function</translate>
* {{Z|Z560}} <translate><!--T:202--> (evaluation result): invalid evaluation result</translate>
* {{Z|Z561}} <translate><!--T:203--> (propagated error): invalid evaluation request</translate>
* {{Z|Z562}} <translate><!--T:204--> (missing property): incomplete evaluation request</translate>
* {{Z|Z563}} <translate><!--T:205--> (call): call by non-reentrant executor</translate>
* {{Z|Z564}} <translate><!--T:206--> (contents): invalid executor response</translate>
* {{Z|Z565}} <translate><!--T:213--> (missing property): Incomplete executor request</translate>
* {{Z|Z570}} <translate><!--T:196--> (orchestrator rate limit): reached rate limit in orchestrator</translate>
* {{Z|Z571}} <translate><!--T:197--> (evaluator rate limit): reached rate limit in evaluator</translate>
* {{Z|Z572}} <translate><!--T:207--> (recursion limit, function name): reached recursion limit in orchestrator</translate>
* {{Z|Z573}} <translate><!--T:208--> (recursion limit, function name): reached recursion limit in evaluator</translate>
* {{Z|Z574}} <translate><!--T:209--> (time limit): reached time limit in orchestrator</translate>
* {{Z|Z575}} <translate><!--T:210--> (time limit): reached time limit in evaluator</translate>
* {{Z|Z576}} <translate><!--T:274--> (time limit)</translate>
* {{Z|Z580}} <translate><!--T:275--> (duplicate language)</translate>
</div></div>
<translate>
== See also == <!--T:59-->
</translate>
* <translate><!--T:60--> [[<tvar name="notes">:m:Special:MyLanguage/Abstract Wikipedia/Notes</tvar>|Overview of notes]]</translate>
<noinclude>
[[Category:Technical documentation{{#translation:}}|Reserved ZIDs]]
</noinclude>
n9qqd4unp0e9kd67yvzevectc45drce
282401
282400
2026-06-11T23:34:16Z
Virinas-code
2884
Reference Z500
282401
wikitext
text/x-wiki
<noinclude><languages/>{{Technical documentation navbox}}</noinclude>
<translate>
<!--T:214-->
This page details ZIDs that are reserved by Wikilambda, the software that runs Wikifunctions. All ZIDs with four digits or fewer are reserved. See [[Wikifunctions:Reserved ZIDs/all]] for a list of currently pre-defined objects.
=== Ranges === <!--T:62-->
<!--T:10-->
We reserve certain spaces for certain kinds of pre-defined objects.
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code> – <code>Z99</code>: <translate><!--T:63--> core types.</translate> ''<translate><!--T:64--> (See [[<tvar name="a">#core-types</tvar>|§ Core types]] below.)</translate>''
* <code>Z100</code> – <code>Z199</code>: <translate><!--T:65--> validators for the core types (''i.e.'' for each core type, +100 gives the validator), ''e.g.'' Z104 is the validator for Z4/Type</translate>
* <code>Z200</code> – <code>Z299</code>: <translate><!--T:66--> built-in implementations for the validators for the core types (''i.e.'' Z204 is the built-in implementation for the validator for Z4/Type)</translate>
* <code>Z300</code> – <code>Z399</code>: ''<translate><!--T:67--> unassigned for now</translate>''
* <code>Z400</code> – <code>Z499</code>: ''<translate><!--T:68--> reserved for local use</translate>''
* <code>Z500</code> – <code>Z599</code>: <translate><!--T:69--> core error types (<code>Z5xx</code> because <code>Z5</code> is error)</translate> ''<translate><!--T:70--> (See [[<tvar name="a">#core-error-types</tvar>|§ Core error types]] below.)</translate>''
* <code>Z600</code> – <code>Z699</code>: <translate><!--T:131--> core programming languages (<code>Z6xx</code> because <code>Z61</code> is programming language)</translate>
* <code>Z700</code> – <code>Z799</code>: ''<translate><!--T:71--> unassigned for now</translate>''
* <code>Z800</code> – <code>Z899</code>: <translate><!--T:72--> definitions of core functions with built-ins (<code>Z8xx</code> because <code>Z8</code> is function)</translate> ''<translate><!--T:73--> (See [[<tvar name="a">#core-functions</tvar>|§ Core functions]] below.)</translate>''
* <code>Z900</code> – <code>Z999</code>: <translate><!--T:74--> built-ins for the core functions (they are +100 from the respective Z8xx)</translate>
* <code>Z1000</code> – <code>Z2999</code>: <translate><!--T:75--> natural languages (instances of Z60)</translate>
* <code>Z3000</code> – <code>Z5999</code>: ''<translate><!--T:149--> reserved for future use</translate>''
* <code>Z6000</code> – <code>Z6999</code>: <translate><!--T:215--> ''types, functions, ''etc.'' for using content from Wikidata and other Wikimedia sources''</translate>
** <code>Z6000</code> – <code>Z6099</code>: ''<translate><!--T:216--> types for content from Wikidata and other Wikimedia sources</translate>'' ''(See [[<tvar name="1">#wikidata-types</tvar>|§ Wikidata types]] below.)''
** <code>Z6100</code> – <code>Z6199</code>: ''<translate><!--T:217--> validators for these types</translate>''
** <code>Z6200</code> – <code>Z6299</code>: ''<translate><!--T:218--> built-in implementations of the validators</translate>''
** <code>Z6800</code> – <code>Z6899</code>: ''<translate><!--T:219--> helper functions for these types that need to be built-in (e.g., fetching, equality)</translate>'' ''(See [[<tvar name="1">#wikidata-functions</tvar>|§ Wikidata functions]] below.)''
** <code>Z6900</code> – <code>Z6999</code>: ''<translate><!--T:220--> built-in implementations of the helper functions</translate>''
* <code>Z7000</code> – <code>Z7999</code>: ''<translate><!--T:185--> reserved for future use</translate>''
* <code>Z8000</code> – <code>Z8999</code>: <translate><!--T:172--> Testers for each pre-defined function (''e.g.'' Z801 is tested via Z8010, Z8011, Z8012, … Z8019).</translate>
* <code>Z9000</code> – <code>Z9999</code>: ''<translate><!--T:173--> reserved for future use</translate>''
</div></div>
{{Anchor|core-types}}
<translate>
=== Core types === <!--T:76-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code>: <translate><!--T:11--> <tvar name="1">{{Z|Z1}}</tvar> (Type), the root.</translate>
* <code>Z2</code>: <translate><!--T:12--> <tvar name="1">{{Z|Z2}}</tvar> (Type): everything on the wiki is a <tvar name="Z"><code>Z2</code></tvar>, that's why this has such a low ZID.</translate>
* <code>Z3</code>: <translate><!--T:13--> <tvar name="1">{{Z|Z3}}</tvar> (Type): because the word <tvar name="key"><bdi lang="en" dir="ltr">''key''</bdi></tvar> has three letters in English.</translate>
* <code>Z4</code>: <translate><!--T:14--> <tvar name="1">{{Z|Z4}}</tvar> (Type): because the word <tvar name="type"><bdi lang="en" dir="ltr">''type''</bdi></tvar> has four letters in English.</translate>
* <code>Z5</code>: <translate><!--T:15--> <tvar name="1">{{Z|Z5}}</tvar> (Type): because the word <tvar name="error"><bdi lang="en" dir="ltr">''error''</bdi></tvar> has five letters in English.</translate> ''<translate><!--T:77--> (See [[<tvar name="a">#core-error-types</tvar>|§ Core error types]] below.)</translate>''
* <code>Z6</code>: <translate><!--T:16--> <tvar name="1">{{Z|Z6}}</tvar> (Type): because the word <tvar name="string"><bdi lang="en" dir="ltr">''string''</bdi></tvar> has six letters in English.</translate>
* <code>Z7</code>: <translate><!--T:17--> <tvar name="1">{{Z|Z7}}</tvar> (Type): because function calls are the main magic of the system, and 7 is a magic number. It is also close to <tvar name="Z"><code>Z8</code></tvar>.</translate>
* <code>Z8</code>: <translate><!--T:18--> <tvar name="1">{{Z|Z8}}</tvar> (generic type, thus technically a function): because <tvar name="function"><bdi lang="en" dir="ltr">''function''</bdi></tvar> has eight letters in English.</translate> ''<translate><!--T:78--> (See [[<tvar name="a">#core-functions</tvar>|§ Core functions]] below.)</translate>''
* <code>Z9</code>: <translate><!--T:19--> <tvar name="1">{{Z|Z9}}</tvar> (Type): because the word <tvar name="reference"><bdi lang="en" dir="ltr">''reference''</bdi></tvar> has nine letters in English.</translate>
* <code>Z10</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z11</code>: <translate><!--T:21--> <tvar name="1">{{Z|Z11}}</tvar> (Type): because it is just one language, and there's a ''one'' in the name.</translate>
* <code>Z12</code>: <translate><!--T:22--> <tvar name="1">{{Z|Z12}}</tvar> (Type): because it's an extension of <tvar name="Z"><code>Z11</code></tvar>.</translate>
* <code>Z13</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z14</code>: <translate><!--T:23--> <tvar name="1">{{Z|Z14}}</tvar> (Type): because the word <tvar name="implementation"><bdi lang="en" dir="ltr">''implementation''</bdi></tvar> has fourteen letters in English.</translate>
* <code>Z15</code>: <translate><!--T:151--> ''Not yet assigned.''</translate>
* <code>Z16</code>: <translate><!--T:80--> <tvar name="1">{{Z|Z16}}</tvar> (Type): no good reason, it's close to Z14, and Z61/Programming language.</translate>
* <code>Z17</code>: <translate><!--T:81--> <tvar name="1">{{Z|Z17}}</tvar> (Type).</translate>
* <code>Z18</code>: <translate><!--T:82--> <tvar name="1">{{Z|Z18}}</tvar> (Type).</translate>
* <code>Z19</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z20</code>: <translate><!--T:25--> <tvar name="1">{{Z|Z20}}</tvar> (Type): because 20/20 is perfect vision, and tests make errors visible.</translate>
* <code>Z21</code>: <translate><!--T:83--> <tvar name="1">{{Z|Z21}}</tvar> (Type).</translate>
* <code>Z22</code>: <translate><!--T:26--> <tvar name="1">{{Z|Z22}}</tvar> (Type).</translate>
* <code>Z23</code>: <translate><!--T:84--> <tvar name="1">{{Z|Z23}}</tvar> (Type).</translate>
* <code>Z24</code>: <translate><!--T:132--> <tvar name="1">{{Z|Z24}}</tvar> (Unit).</translate>
* <code>Z25</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z26</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z27</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z28</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z29</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z30</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z31</code>: <translate><!--T:133--> <tvar name="1">{{Z|Z31}}</tvar> (Type).</translate>
* <code>Z32</code>: <translate><!--T:134--> <tvar name="1">{{Z|Z32}}</tvar> (Type): because it's an extension of <tvar name="Z"><code>Z31</code></tvar>.</translate>
* <code>Z33</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z34</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z35</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z36</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z37</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z38</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z39</code>: <translate><!--T:85--> <tvar name="1">{{Z|Z39}}</tvar> (Type): because Z3/Key Z9/Reference.</translate>
* <code>Z40</code>: <translate><!--T:86--> <tvar name="1">{{Z|Z40}}</tvar> (Type): because Boole first published in (18)40.</translate>
* <code>Z41</code>: <translate><!--T:87--> <tvar name="1">{{Z|Z41}}</tvar> (Boolean).</translate>
* <code>Z42</code>: <translate><!--T:88--> <tvar name="1">{{Z|Z42}}</tvar> (Boolean).</translate>
* <code>Z43</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z44</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z45</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z46</code>: <translate><!--T:225--> <tvar name="1">{{Z|Z46}}</tvar> (Type): because it converts a Z4/Type into code in a Z61/Programming language.</translate>
* <code>Z47</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z48</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z49</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z50</code>: <translate><!--T:24--> <tvar name="1">{{Z|Z50}}</tvar> (Type): because Error is <tvar name="Z"><code>Z5</code></tvar>.</translate>
<!--<nowiki>
* <code>Z51</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z59</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z60</code>: <translate><!--T:89--> <tvar name="1">{{Z|Z60}}</tvar> (Type): because <code>Z6</code> is a string.</translate>
* <code>Z61</code>: <translate><!--T:90--> <tvar name="1">{{Z|Z61}}</tvar> (Type): because <code>Z16</code> is code.</translate>
* <code>Z64</code>: <translate><!--T:226--> <tvar name="1">{{Z|Z64}}</tvar>: because it is the inverse of <tvar name="2"><code>Z46</code></tvar>.</translate>
<!--<nowiki>
* <code>Z62</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z79</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z80</code>: <translate><!--T:92--> <tvar name="1">{{Z|Z80}}</tvar> (Type): because it is an octet.</translate>
<!--<nowiki>
* <code>Z81</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z69</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z84</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z85</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z86</code>: <translate><!--T:93--> <tvar name="1">{{Z|Z86}}</tvar> (Type): because it is not exactly a Z80/Byte, but more like Z6/String.</translate>
<!--<nowiki>
* <code>Z87</code>: <translate>'''…''' (Type).</translate>
* <code>Z88</code>: <translate>'''…''' (Type).</translate>
</nowiki>
-->
* <code>Z89</code>: <translate><!--T:227--> <tvar name="1">{{Z|Z89}}</tvar> (Type)</translate>
* <code>Z99</code>: <translate><!--T:30--> {{Z|Z99}} (Type): because it looks a bit like a closing quotation mark in English.</translate>
</div></div>
{{Anchor|wikidata-types}}
<translate>
==== Wikidata types ==== <!--T:228-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<code>Z6001</code>: <translate><!--T:229--> <tvar name="1">{{Z|Z6001}}</tvar> (Type)</translate>
*<code>Z6002</code>: <translate><!--T:230--> <tvar name="1">{{Z|Z6002}}</tvar> (Type)</translate>
*<code>Z6003</code>: <translate><!--T:231--> <tvar name="1">{{Z|Z6003}}</tvar> (Type)</translate>
*<code>Z6004</code>: <translate><!--T:232--> <tvar name="1">{{Z|Z6004}}</tvar> (Type)</translate>
*<code>Z6005</code>: <translate><!--T:233--> <tvar name="1">{{Z|Z6005}}</tvar> (Type)</translate>
*<code>Z6006</code>: <translate><!--T:234--> <tvar name="1">{{Z|Z6006}}</tvar> (Type)</translate>
*<code>Z6007</code>: <translate><!--T:235--> <tvar name="1">{{Z|Z6007}}</tvar> (Type)</translate>
*<code>Z6008</code>: <translate><!--T:236--> <tvar name="1">{{Z|Z6008}}</tvar> (Type)</translate>
*<code>Z6010</code>: <translate><!--T:237--> <tvar name="1">{{Z|Z6010}}</tvar> (Type)</translate>
*<code>Z6011</code>: <translate><!--T:238--> <tvar name="1">{{Z|Z6011}}</tvar> (Type)</translate>
*<code>Z6020</code>: <translate><!--T:239--> <tvar name="1">{{Z|Z6020}}</tvar> (Type)</translate>
*<code>Z6021</code>: <translate><!--T:240--> <tvar name="1">{{Z|Z6021}}</tvar> (Claim subtype)</translate>
*<code>Z6022</code>: <translate><!--T:241--> <tvar name="1">{{Z|Z6022}}</tvar> (Claim subtype)</translate>
*<code>Z6023</code>: <translate><!--T:242--> <tvar name="1">{{Z|Z6023}}</tvar> (Claim subtype)</translate>
*<code>Z6030</code>: <translate><!--T:243--> <tvar name="1">{{Z|Z6030}}</tvar> (Type)</translate>
*<code>Z6031</code>: <translate><!--T:244--> <tvar name="1">{{Z|Z6031}}</tvar> (Entity part)</translate>
*<code>Z6032</code>: <translate><!--T:245--> <tvar name="1">{{Z|Z6032}}</tvar> (Entity part)</translate>
*<code>Z6033</code>: <translate><!--T:246--> <tvar name="1">{{Z|Z6033}}</tvar> (Entity part)</translate>
*<code>Z6034</code>: <translate><!--T:247--> <tvar name="1">{{Z|Z6034}}</tvar> (Entity part)</translate>
*<code>Z6035</code>: <translate><!--T:248--> <tvar name="1">{{Z|Z6035}}</tvar> (Entity part)</translate>
*<code>Z6036</code>: <translate><!--T:249--> <tvar name="1">{{Z|Z6036}}</tvar> (Entity part)</translate>
*<code>Z6037</code>: <translate><!--T:250--> <tvar name="1">{{Z|Z6037}}</tvar> (Entity part)</translate>
*<code>Z6038</code>: <translate><!--T:251--> <tvar name="1">{{Z|Z6038}}</tvar> (Entity part)</translate>
*<code>Z6040</code>: <translate><!--T:252--> <tvar name="1">{{Z|Z6040}}</tvar> (Type)</translate>
*<code>Z6041</code>: <translate><!--T:253--> <tvar name="1">{{Z|Z6041}}</tvar> (Statement rank)</translate>
*<code>Z6042</code>: <translate><!--T:254--> <tvar name="1">{{Z|Z6042}}</tvar> (Statement rank)</translate>
*<code>Z6043</code>: <translate><!--T:255--> <tvar name="1">{{Z|Z6043}}</tvar> (Statement rank)</translate>
*<code>Z6060</code>: <translate><!--T:256--> <tvar name="1">{{Z|Z6060}}</tvar> (Type)</translate>
*<code>Z6061</code>: <translate><!--T:257--> <tvar name="1">{{Z|Z6061}}</tvar> (Type)</translate>
*<code>Z6062</code>: <translate><!--T:258--> <tvar name="1">{{Z|Z6062}}</tvar> (Type)</translate>
*<code>Z6063</code>: <translate><!--T:259--> <tvar name="1">{{Z|Z6063}}</tvar> (Type)</translate>
*<code>Z6064</code>: <translate><!--T:260--> <tvar name="1">{{Z|Z6064}}</tvar> (Type)</translate>
*<code>Z6091</code>: <translate><!--T:261--> <tvar name="1">{{Z|Z6091}}</tvar> (Type)</translate>
*<code>Z6092</code>: <translate><!--T:262--> <tvar name="1">{{Z|Z6092}}</tvar> (Type)</translate>
*<code>Z6094</code>: <translate><!--T:263--> <tvar name="1">{{Z|Z6094}}</tvar> (Type)</translate>
*<code>Z6095</code>: <translate><!--T:264--> <tvar name="1">{{Z|Z6095}}</tvar> (Type)</translate>
*<code>Z6096</code>: <translate><!--T:265--> <tvar name="1">{{Z|Z6096}}</tvar> (Type)</translate>
</div></div>
{{Anchor|core-functions}}
<translate>
=== Core functions === <!--T:94-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z801</code> {{Z+|Z801}}: T ➝ T
* <code>Z802</code> {{Z+|Z802}}: Boolean, T, T ➝ T
* <code>Z803</code> {{Z+|Z803}}: Key reference, Any ➝ Any
*: <translate><!--T:96--> Z3/Key</translate>
* <code>Z804</code> {{Z+|Z804}}: List(Key reference) ➝ Abt
* <code>Z805</code> {{Z+|Z805}}: Any ➝ List(Pair(Key reference, Any))
*: <translate><!--T:41--> Reify has five letters</translate>
* <code>Z808</code> {{Z+|Z808}}: List(Pair(Key reference, Any)) ➝ Any
*: <translate><!--T:42--> Abstract has eight letters.</translate>
* <code>Z810</code> {{Z+|Z810}}: T, List(T) ➝ List(T)
*: <translate><!--T:46--> (because Z10 is list).</translate>
* <code>Z811</code> {{Z+|Z811}}: List(T) ➝ T
*: <translate><!--T:43--> (because Z10 was going to be list and we get the first)</translate>
* <code>Z812</code> {{Z+|Z812}}: List(T) ➝ List(T)
*: <translate><!--T:44--> (because Z10 was going to be list and we get the second, the rest)</translate>
* <code>Z813</code> {{Z+|Z813}}: List(T) ➝ Boolean
*: <translate><!--T:45--> (because Z13 was planned to be empty list).</translate>
* <code>Z820</code> {{Z+|Z820}}: String, Any ➝ Any
* <code>Z821</code> {{Z+|Z821}}: Pair(T1, T2) ➝ T1
*: <translate><!--T:47--> (because Z22 is pair).</translate>
* <code>Z822</code> {{Z+|Z822}}: Pair(T1, T2) ➝ T2
*: <translate><!--T:48--> (because Z22 is pair).</translate>
* <code>Z823</code> {{Z+|Z823}}: Quote ➝ Pair(Object, Object)
* <code>Z828</code> {{Z+|Z828}}: Quote ➝ Persistent object
* <code>Z844</code> {{Z+|Z844}}: Boolean, Boolean ➝ Boolean
* <code>Z850</code> {{Z+|Z850}}: Object, Error type, Object ➝ Object
*: <translate><!--T:266--> (because it deals with Z5/Errors)</translate>
* <code>Z851</code> {{Z+|Z851}}: Error type, List(T) ➝ Unit
* <code>Z852</code> {{Z+|Z852}}: Error, Error type ➝ Boolean
* <code>Z853</code> {{Z+|Z853}}: Object ➝ Pair(Error, Object)
* <code>Z854</code> {{Z+|Z854}}: Object ➝ String
* <code>Z860</code> {{Z+|Z860}}: String ➝ Language
* <code>Z866</code> {{Z+|Z866}}: String, String ➝ Boolean
* <code>Z868</code> <translate><!--T:267--> Replaced by <tvar name="1">{{Z+|Z22717}}: String ➝ List(Character)</tvar></translate>
*: <translate><!--T:49--> Because Z6/String and Z86/Character.</translate>
* <code>Z872</code> {{Z+|Z872}}: Function, Typed list (Object) ➝ Object
* <code>Z873</code> {{Z+|Z873}} Function, List ➝ List
* <code>Z876</code> {{Z+|Z876}}: Function, List, Object ➝ Object
* <code>Z877</code> {{Z+|Z877}}: HTML fragment -> HTML fragment
* <code>Z881</code> {{Z+|Z881}}: Type ➝ Type
* <code>Z882</code> {{Z+|Z882}}: Type, Type ➝ Type
* <code>Z883</code> {{Z+|Z883}}: T ➝ T
* <code>Z884</code> {{Z+|Z884}}: Type, List(Reference), String ➝ Type
* <code>Z885</code> {{Z+|Z885}}: Error type ➝ Type
* <code>Z886</code> <translate><!--T:268--> Replaced by <tvar name="1">{{Z+|Z22693}}: List*(Character) ➝ String</tvar></translate>
*: <translate><!--T:50--> because Z86/Character and Z6/String.</translate>
* <code>Z888</code> <translate><!--T:269--> Replaced by <tvar name="1">{{Z+|Z22683}}: Character, Character ➝ Boolean</tvar></translate>
* <code>Z889</code> {{Z+|Z889}}: Typed list (Object), Typed list (Object), Function ➝ Boolean
* <code>Z899</code> {{Z+|Z899}}: Quote ➝ Any
*: <translate><!--T:97--> because Z99/Quote.</translate>
</div></div>
{{Anchor|wikidata-functions}}
<translate>
==== Wikidata functions ==== <!--T:270-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<translate><!--T:271--> <tvar name="1"><code>Z6801</code></tvar> to <tvar name="2"><code>Z6808</code></tvar> are the 'same object' functions corresponding to <tvar name="3"><code>Z6001</code></tvar> to <tvar name="4"><code>Z6008</code></tvar>.</translate>
*<code>Z6820</code> {{Z+|Z6820}}: List(Object) ➝ Map(String, Object)
*<code>Z6821</code> {{Z+|Z6821}}: Item reference ➝ Item
*<code>Z6822</code> {{Z+|Z6822}}: Property reference ➝ Property
*<code>Z6824</code> {{Z+|Z6824}}: Lexeme form reference ➝ Lexeme form
*<code>Z6825</code> {{Z+|Z6825}}: Lexeme reference ➝ Lexeme
*<code>Z6826</code> {{Z+|Z6826}}: Lexeme sense reference ➝ Lexeme sense
*<code>Z6830</code> {{Z+|Z6830}}: Item reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6831</code> {{Z+|Z6831}}: Lexeme sense reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6884</code> {{Z+|Z6884}}: Type, List(Object), String ➝ Type
*<code>Z6894</code> {{Z+|Z6894}}
*<code>Z6895</code> {{Z+|Z6895}}: Object ➝ Object
*<code>Z6896</code> {{Z+|Z6896}}: List(String) ➝ Object
</div></div>
{{Anchor|core-error-types}}
<translate>
=== Core error types === <!--T:98-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <translate><tvar name="zid">{{Z|Z500}}</tvar> (error information): unspecified error</translate>
* <translate><!--T:103--> <tvar name="zid">{{Z|Z501}}</tvar> (error message, input): syntax error</translate>
* <translate><!--T:104--> <tvar name="zid">{{Z|Z502}}</tvar> (subtype, value): not wellformed, points to Z52x or Z53x</translate>
* <translate><!--T:105--> <tvar name="zid">{{Z|Z503}}</tvar> (function name): not implemented yet</translate>
* <translate><!--T:106--> <tvar name="zid">{{Z|Z504}}</tvar> (zid): Zid not found</translate>
* <translate><!--T:107--> <tvar name="zid">{{Z|Z505}}</tvar> (expected, actual, args): number of arguments mismatch</translate>
* <translate><!--T:108--> <tvar name="zid">{{Z|Z506}}</tvar> (expected, actual, arg): argument type mismatches</translate>
* <translate><!--T:109--> <tvar name="zid">{{Z|Z507}}</tvar> (function call): error in evaluation</translate>
* <translate><!--T:110--> <tvar name="zid">{{Z|Z508}}</tvar> (object): competing keys</translate>
* <translate><!--T:198--> <tvar name="zid">{{Z|Z509}}</tvar> (errors): List of errors</translate>
* <translate><!--T:111--> <tvar name="zid">{{Z|Z510}}</tvar> (none): nil</translate>
* <translate><!--T:112--> <tvar name="zid">{{Z|Z511}}</tvar> (key reference, object): key not found</translate>
* <translate><!--T:113--> <tvar name="zid">{{Z|Z512}}</tvar> (object): Z9 error</translate>
* <translate><!--T:114--> <tvar name="zid">{{Z|Z513}}</tvar> (resolved object): resolved object without Z2K2</translate>
* <translate><!--T:115--> <tvar name="zid">{{Z|Z514}}</tvar> (implementation): Builtin does not exist</translate>
* <translate><!--T:116--> <tvar name="zid">{{Z|Z515}}</tvar> (implementation): Builtin ID is erroneous</translate>
* <translate><!--T:117--> <tvar name="zid">{{Z|Z516}}</tvar> (key, bad value): Argument value error</translate>
* <translate><!--T:199--> <tvar name="zid">{{Z|Z517}}</tvar> (expected type, actual type, returned value, propagated error): Return type mismatch</translate>
* <translate><!--T:200--> <tvar name="zid">{{Z|Z518}}</tvar> (expected type, object, propagated error): Object type mismatch</translate>
* <translate><!--T:211--> <tvar name="zid">{{Z|Z519}}</tvar> (object): Undefined list type</translate>
* <translate><!--T:212--> <tvar name="zid">{{Z|Z520}}</tvar> (object): Wrong list type</translate>
* <translate><!--T:118--> <tvar name="zid">{{Z|Z521}}</tvar> (offending value): ZObjects must not be number or boolean or null</translate>
* <translate><!--T:119--> <tvar name="zid">{{Z|Z522}}</tvar> (offending index in array, propagated error): Array element not well formed</translate>
* <translate><!--T:120--> <tvar name="zid">{{Z|Z523}}</tvar> (object): Missing Z1K1</translate>
* <translate><!--T:121--> <tvar name="zid">{{Z|Z524}}</tvar> (value of Z1K1): Z1K1 must not be a string or array</translate>
* <translate><!--T:122--> <tvar name="zid">{{Z|Z525}}</tvar> (key): Invalid key</translate>
* <translate><!--T:123--> <tvar name="zid">{{Z|Z526}}</tvar> (key, propagated error): not wellformed value</translate>]
* <translate><!--T:272--> <tvar name="zid">{{Z|Z529}}</tvar> (host name)</translate>
* <translate><!--T:273--> <tvar name="zid">{{Z|Z530}}</tvar> (function call, propagated error)</translate>
* <translate><!--T:124--> <tvar name="zid">{{Z|Z531}}</tvar> (whole object): Z6 must have 2 keys</translate>
* <translate><!--T:125--> <tvar name="zid">{{Z|Z532}}</tvar> (whole object): Z6 without a Z6K1</translate>
* <translate><!--T:126--> <tvar name="zid">{{Z|Z533}}</tvar> (value of Z6K1): Z6K1 must be a string</translate>
* <translate><!--T:127--> <tvar name="zid">{{Z|Z534}}</tvar> (whole object): Z9 must have 2 keys</translate>
* <translate><!--T:128--> <tvar name="zid">{{Z|Z535}}</tvar> (whole object): Z9 without a Z9K1</translate>
* <translate><!--T:129--> <tvar name="zid">{{Z|Z536}}</tvar> (value of Z9K1): Z9K1 must be a string in JSON</translate>
* <translate><!--T:130--> <tvar name="zid">{{Z|Z537}}</tvar> (value of Z9K1): Z9K1 must look like a reference</translate>
* <translate><!--T:135--> <tvar name="zid">{{Z|Z538}}</tvar> (page title): wrong namespace</translate>
* <translate><!--T:136--> <tvar name="zid">{{Z|Z539}}</tvar> (page title): wrong content type</translate>
* <translate><!--T:137--> <tvar name="zid">{{Z|Z540}}</tvar> (language code): invalid language code</translate>
* <translate><!--T:138--> <tvar name="zid">{{Z|Z541}}</tvar> (language code): language code not found</translate>
* <translate><!--T:139--> <tvar name="zid">{{Z|Z542}}</tvar> (expected type, actual object): expected type, actual object</translate>
* <translate><!--T:140--> <tvar name="zid">{{Z|Z543}}</tvar> (type name): type not found</translate>
* <translate><!--T:141--> <tvar name="zid">{{Z|Z544}}</tvar> (type zid, type name, existing type name): conflicting type names</translate>
* <translate><!--T:142--> <tvar name="zid">{{Z|Z545}}</tvar> (type zid, type name, existing type zid): conflicting type Zids</translate>
* <translate><!--T:143--> <tvar name="zid">{{Z|Z546}}</tvar> (type zid, type name): builtin type not found</translate>
* <translate><!--T:144--> <tvar name="zid">{{Z|Z547}}</tvar> (input): invalid format</translate>
* <translate><!--T:145--> <tvar name="zid">{{Z|Z548}}</tvar> (error message, input): invalid JSON</translate>
* <translate><!--T:146--> <tvar name="zid">{{Z|Z549}}</tvar> (reference value): invalid ZReference</translate>
* <translate><!--T:147--> <tvar name="zid">{{Z|Z550}}</tvar> (reference value): unknown ZReference</translate>
* <translate><!--T:148--> <tvar name="zid">{{Z|Z551}}</tvar> (key, expected type, actual type): schema type mismatch</translate>
* {{Z|Z552}} <translate><!--T:186--> (index, expected type, actual type): array element type mismatch</translate>
* {{Z|Z553}} <translate><!--T:187--> (zobject): disallowed root type</translate>
* {{Z|Z554}} <translate><!--T:188--> (clashing ZID, language): label clashes with another ZObject's label</translate>
* {{Z|Z555}} <translate><!--T:189--> (ZID, title): mis-matched ZID and page title</translate>
* {{Z|Z556}} <translate><!--T:190--> (title): invalid page title</translate>
* {{Z|Z557}} <translate><!--T:191--> (error message): user does not have permission</translate>
* {{Z|Z558}} <translate><!--T:192--> (programming language): invalid programming language</translate>
* {{Z|Z559}} <translate><!--T:201--> (none): user not permitted to evaluate function</translate>
* {{Z|Z560}} <translate><!--T:202--> (evaluation result): invalid evaluation result</translate>
* {{Z|Z561}} <translate><!--T:203--> (propagated error): invalid evaluation request</translate>
* {{Z|Z562}} <translate><!--T:204--> (missing property): incomplete evaluation request</translate>
* {{Z|Z563}} <translate><!--T:205--> (call): call by non-reentrant executor</translate>
* {{Z|Z564}} <translate><!--T:206--> (contents): invalid executor response</translate>
* {{Z|Z565}} <translate><!--T:213--> (missing property): Incomplete executor request</translate>
* {{Z|Z570}} <translate><!--T:196--> (orchestrator rate limit): reached rate limit in orchestrator</translate>
* {{Z|Z571}} <translate><!--T:197--> (evaluator rate limit): reached rate limit in evaluator</translate>
* {{Z|Z572}} <translate><!--T:207--> (recursion limit, function name): reached recursion limit in orchestrator</translate>
* {{Z|Z573}} <translate><!--T:208--> (recursion limit, function name): reached recursion limit in evaluator</translate>
* {{Z|Z574}} <translate><!--T:209--> (time limit): reached time limit in orchestrator</translate>
* {{Z|Z575}} <translate><!--T:210--> (time limit): reached time limit in evaluator</translate>
* {{Z|Z576}} <translate><!--T:274--> (time limit)</translate>
* {{Z|Z580}} <translate><!--T:275--> (duplicate language)</translate>
</div></div>
<translate>
== See also == <!--T:59-->
</translate>
* <translate><!--T:60--> [[<tvar name="notes">:m:Special:MyLanguage/Abstract Wikipedia/Notes</tvar>|Overview of notes]]</translate>
<noinclude>
[[Category:Technical documentation{{#translation:}}|Reserved ZIDs]]
</noinclude>
csoct1kuu8kdt9y944n71dr6ho9ac32
282404
282401
2026-06-11T23:43:23Z
Virinas-code
2884
282404
wikitext
text/x-wiki
<noinclude><languages/>{{Technical documentation navbox}}</noinclude>
<translate>
<!--T:214-->
This page details ZIDs that are reserved by Wikilambda, the software that runs Wikifunctions. All ZIDs with four digits or fewer are reserved. See [[Wikifunctions:Reserved ZIDs/all]] for a list of currently pre-defined objects.
=== Ranges === <!--T:62-->
<!--T:10-->
We reserve certain spaces for certain kinds of pre-defined objects.
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code> – <code>Z99</code>: <translate><!--T:63--> core types.</translate> ''<translate><!--T:64--> (See [[<tvar name="a">#core-types</tvar>|§ Core types]] below.)</translate>''
* <code>Z100</code> – <code>Z199</code>: <translate><!--T:65--> validators for the core types (''i.e.'' for each core type, +100 gives the validator), ''e.g.'' Z104 is the validator for Z4/Type</translate>
* <code>Z200</code> – <code>Z299</code>: <translate><!--T:66--> built-in implementations for the validators for the core types (''i.e.'' Z204 is the built-in implementation for the validator for Z4/Type)</translate>
* <code>Z300</code> – <code>Z399</code>: ''<translate><!--T:67--> unassigned for now</translate>''
* <code>Z400</code> – <code>Z499</code>: ''<translate><!--T:68--> reserved for local use</translate>''
* <code>Z500</code> – <code>Z599</code>: <translate><!--T:69--> core error types (<code>Z5xx</code> because <code>Z5</code> is error)</translate> ''<translate><!--T:70--> (See [[<tvar name="a">#core-error-types</tvar>|§ Core error types]] below.)</translate>''
* <code>Z600</code> – <code>Z699</code>: <translate><!--T:131--> core programming languages (<code>Z6xx</code> because <code>Z61</code> is programming language)</translate>
* <code>Z700</code> – <code>Z799</code>: ''<translate><!--T:71--> unassigned for now</translate>''
* <code>Z800</code> – <code>Z899</code>: <translate><!--T:72--> definitions of core functions with built-ins (<code>Z8xx</code> because <code>Z8</code> is function)</translate> ''<translate><!--T:73--> (See [[<tvar name="a">#core-functions</tvar>|§ Core functions]] below.)</translate>''
* <code>Z900</code> – <code>Z999</code>: <translate><!--T:74--> built-ins for the core functions (they are +100 from the respective Z8xx)</translate>
* <code>Z1000</code> – <code>Z2999</code>: <translate><!--T:75--> natural languages (instances of Z60)</translate>
* <code>Z3000</code> – <code>Z5999</code>: ''<translate><!--T:149--> reserved for future use</translate>''
* <code>Z6000</code> – <code>Z6999</code>: <translate><!--T:215--> ''types, functions, ''etc.'' for using content from Wikidata and other Wikimedia sources''</translate>
** <code>Z6000</code> – <code>Z6099</code>: ''<translate><!--T:216--> types for content from Wikidata and other Wikimedia sources</translate>'' ''(See [[<tvar name="1">#wikidata-types</tvar>|§ Wikidata types]] below.)''
** <code>Z6100</code> – <code>Z6199</code>: ''<translate><!--T:217--> validators for these types</translate>''
** <code>Z6200</code> – <code>Z6299</code>: ''<translate><!--T:218--> built-in implementations of the validators</translate>''
** <code>Z6800</code> – <code>Z6899</code>: ''<translate><!--T:219--> helper functions for these types that need to be built-in (e.g., fetching, equality)</translate>'' ''(See [[<tvar name="1">#wikidata-functions</tvar>|§ Wikidata functions]] below.)''
** <code>Z6900</code> – <code>Z6999</code>: ''<translate><!--T:220--> built-in implementations of the helper functions</translate>''
* <code>Z7000</code> – <code>Z7999</code>: ''<translate><!--T:185--> reserved for future use</translate>''
* <code>Z8000</code> – <code>Z8999</code>: <translate><!--T:172--> Testers for each pre-defined function (''e.g.'' Z801 is tested via Z8010, Z8011, Z8012, … Z8019).</translate>
* <code>Z9000</code> – <code>Z9999</code>: ''<translate><!--T:173--> reserved for future use</translate>''
</div></div>
{{Anchor|core-types}}
<translate>
=== Core types === <!--T:76-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code>: <translate><!--T:11--> <tvar name="1">{{Z|Z1}}</tvar> (Type), the root.</translate>
* <code>Z2</code>: <translate><!--T:12--> <tvar name="1">{{Z|Z2}}</tvar> (Type): everything on the wiki is a <tvar name="Z"><code>Z2</code></tvar>, that's why this has such a low ZID.</translate>
* <code>Z3</code>: <translate><!--T:13--> <tvar name="1">{{Z|Z3}}</tvar> (Type): because the word <tvar name="key"><bdi lang="en" dir="ltr">''key''</bdi></tvar> has three letters in English.</translate>
* <code>Z4</code>: <translate><!--T:14--> <tvar name="1">{{Z|Z4}}</tvar> (Type): because the word <tvar name="type"><bdi lang="en" dir="ltr">''type''</bdi></tvar> has four letters in English.</translate>
* <code>Z5</code>: <translate><!--T:15--> <tvar name="1">{{Z|Z5}}</tvar> (Type): because the word <tvar name="error"><bdi lang="en" dir="ltr">''error''</bdi></tvar> has five letters in English.</translate> ''<translate><!--T:77--> (See [[<tvar name="a">#core-error-types</tvar>|§ Core error types]] below.)</translate>''
* <code>Z6</code>: <translate><!--T:16--> <tvar name="1">{{Z|Z6}}</tvar> (Type): because the word <tvar name="string"><bdi lang="en" dir="ltr">''string''</bdi></tvar> has six letters in English.</translate>
* <code>Z7</code>: <translate><!--T:17--> <tvar name="1">{{Z|Z7}}</tvar> (Type): because function calls are the main magic of the system, and 7 is a magic number. It is also close to <tvar name="Z"><code>Z8</code></tvar>.</translate>
* <code>Z8</code>: <translate><!--T:18--> <tvar name="1">{{Z|Z8}}</tvar> (generic type, thus technically a function): because <tvar name="function"><bdi lang="en" dir="ltr">''function''</bdi></tvar> has eight letters in English.</translate> ''<translate><!--T:78--> (See [[<tvar name="a">#core-functions</tvar>|§ Core functions]] below.)</translate>''
* <code>Z9</code>: <translate><!--T:19--> <tvar name="1">{{Z|Z9}}</tvar> (Type): because the word <tvar name="reference"><bdi lang="en" dir="ltr">''reference''</bdi></tvar> has nine letters in English.</translate>
* <code>Z10</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z11</code>: <translate><!--T:21--> <tvar name="1">{{Z|Z11}}</tvar> (Type): because it is just one language, and there's a ''one'' in the name.</translate>
* <code>Z12</code>: <translate><!--T:22--> <tvar name="1">{{Z|Z12}}</tvar> (Type): because it's an extension of <tvar name="Z"><code>Z11</code></tvar>.</translate>
* <code>Z13</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z14</code>: <translate><!--T:23--> <tvar name="1">{{Z|Z14}}</tvar> (Type): because the word <tvar name="implementation"><bdi lang="en" dir="ltr">''implementation''</bdi></tvar> has fourteen letters in English.</translate>
* <code>Z15</code>: <translate><!--T:151--> ''Not yet assigned.''</translate>
* <code>Z16</code>: <translate><!--T:80--> <tvar name="1">{{Z|Z16}}</tvar> (Type): no good reason, it's close to Z14, and Z61/Programming language.</translate>
* <code>Z17</code>: <translate><!--T:81--> <tvar name="1">{{Z|Z17}}</tvar> (Type).</translate>
* <code>Z18</code>: <translate><!--T:82--> <tvar name="1">{{Z|Z18}}</tvar> (Type).</translate>
* <code>Z19</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z20</code>: <translate><!--T:25--> <tvar name="1">{{Z|Z20}}</tvar> (Type): because 20/20 is perfect vision, and tests make errors visible.</translate>
* <code>Z21</code>: <translate><!--T:83--> <tvar name="1">{{Z|Z21}}</tvar> (Type).</translate>
* <code>Z22</code>: <translate><!--T:26--> <tvar name="1">{{Z|Z22}}</tvar> (Type).</translate>
* <code>Z23</code>: <translate><!--T:84--> <tvar name="1">{{Z|Z23}}</tvar> (Type).</translate>
* <code>Z24</code>: <translate><!--T:132--> <tvar name="1">{{Z|Z24}}</tvar> (Unit).</translate>
* <code>Z25</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z26</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z27</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z28</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z29</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z30</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z31</code>: <translate><!--T:133--> <tvar name="1">{{Z|Z31}}</tvar> (Type).</translate>
* <code>Z32</code>: <translate><!--T:134--> <tvar name="1">{{Z|Z32}}</tvar> (Type): because it's an extension of <tvar name="Z"><code>Z31</code></tvar>.</translate>
* <code>Z33</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z34</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z35</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z36</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z37</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z38</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z39</code>: <translate><!--T:85--> <tvar name="1">{{Z|Z39}}</tvar> (Type): because Z3/Key Z9/Reference.</translate>
* <code>Z40</code>: <translate><!--T:86--> <tvar name="1">{{Z|Z40}}</tvar> (Type): because Boole first published in (18)40.</translate>
* <code>Z41</code>: <translate><!--T:87--> <tvar name="1">{{Z|Z41}}</tvar> (Boolean).</translate>
* <code>Z42</code>: <translate><!--T:88--> <tvar name="1">{{Z|Z42}}</tvar> (Boolean).</translate>
* <code>Z43</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z44</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z45</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z46</code>: <translate><!--T:225--> <tvar name="1">{{Z|Z46}}</tvar> (Type): because it converts a Z4/Type into code in a Z61/Programming language.</translate>
* <code>Z47</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z48</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z49</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z50</code>: <translate><!--T:24--> <tvar name="1">{{Z|Z50}}</tvar> (Type): because Error is <tvar name="Z"><code>Z5</code></tvar>.</translate>
<!--<nowiki>
* <code>Z51</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z59</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z60</code>: <translate><!--T:89--> <tvar name="1">{{Z|Z60}}</tvar> (Type): because <code>Z6</code> is a string.</translate>
* <code>Z61</code>: <translate><!--T:90--> <tvar name="1">{{Z|Z61}}</tvar> (Type): because <code>Z16</code> is code.</translate>
* <code>Z64</code>: <translate><!--T:226--> <tvar name="1">{{Z|Z64}}</tvar>: because it is the inverse of <tvar name="2"><code>Z46</code></tvar>.</translate>
<!--<nowiki>
* <code>Z62</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z79</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z80</code>: <translate><!--T:92--> <tvar name="1">{{Z|Z80}}</tvar> (Type): because it is an octet.</translate>
<!--<nowiki>
* <code>Z81</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z69</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z84</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z85</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z86</code>: <translate><!--T:93--> <tvar name="1">{{Z|Z86}}</tvar> (Type): because it is not exactly a Z80/Byte, but more like Z6/String.</translate>
<!--<nowiki>
* <code>Z87</code>: <translate>'''…''' (Type).</translate>
* <code>Z88</code>: <translate>'''…''' (Type).</translate>
</nowiki>
-->
* <code>Z89</code>: <translate><!--T:227--> <tvar name="1">{{Z|Z89}}</tvar> (Type)</translate>
* <code>Z99</code>: <translate><!--T:30--> {{Z|Z99}} (Type): because it looks a bit like a closing quotation mark in English.</translate>
</div></div>
{{Anchor|wikidata-types}}
<translate>
==== Wikidata types ==== <!--T:228-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<code>Z6001</code>: <translate><!--T:229--> <tvar name="1">{{Z|Z6001}}</tvar> (Type)</translate>
*<code>Z6002</code>: <translate><!--T:230--> <tvar name="1">{{Z|Z6002}}</tvar> (Type)</translate>
*<code>Z6003</code>: <translate><!--T:231--> <tvar name="1">{{Z|Z6003}}</tvar> (Type)</translate>
*<code>Z6004</code>: <translate><!--T:232--> <tvar name="1">{{Z|Z6004}}</tvar> (Type)</translate>
*<code>Z6005</code>: <translate><!--T:233--> <tvar name="1">{{Z|Z6005}}</tvar> (Type)</translate>
*<code>Z6006</code>: <translate><!--T:234--> <tvar name="1">{{Z|Z6006}}</tvar> (Type)</translate>
*<code>Z6007</code>: <translate><!--T:235--> <tvar name="1">{{Z|Z6007}}</tvar> (Type)</translate>
*<code>Z6008</code>: <translate><!--T:236--> <tvar name="1">{{Z|Z6008}}</tvar> (Type)</translate>
*<code>Z6010</code>: <translate><!--T:237--> <tvar name="1">{{Z|Z6010}}</tvar> (Type)</translate>
*<code>Z6011</code>: <translate><!--T:238--> <tvar name="1">{{Z|Z6011}}</tvar> (Type)</translate>
*<code>Z6020</code>: <translate><!--T:239--> <tvar name="1">{{Z|Z6020}}</tvar> (Type)</translate>
*<code>Z6021</code>: <translate><!--T:240--> <tvar name="1">{{Z|Z6021}}</tvar> (Claim subtype)</translate>
*<code>Z6022</code>: <translate><!--T:241--> <tvar name="1">{{Z|Z6022}}</tvar> (Claim subtype)</translate>
*<code>Z6023</code>: <translate><!--T:242--> <tvar name="1">{{Z|Z6023}}</tvar> (Claim subtype)</translate>
*<code>Z6030</code>: <translate><!--T:243--> <tvar name="1">{{Z|Z6030}}</tvar> (Type)</translate>
*<code>Z6031</code>: <translate><!--T:244--> <tvar name="1">{{Z|Z6031}}</tvar> (Entity part)</translate>
*<code>Z6032</code>: <translate><!--T:245--> <tvar name="1">{{Z|Z6032}}</tvar> (Entity part)</translate>
*<code>Z6033</code>: <translate><!--T:246--> <tvar name="1">{{Z|Z6033}}</tvar> (Entity part)</translate>
*<code>Z6034</code>: <translate><!--T:247--> <tvar name="1">{{Z|Z6034}}</tvar> (Entity part)</translate>
*<code>Z6035</code>: <translate><!--T:248--> <tvar name="1">{{Z|Z6035}}</tvar> (Entity part)</translate>
*<code>Z6036</code>: <translate><!--T:249--> <tvar name="1">{{Z|Z6036}}</tvar> (Entity part)</translate>
*<code>Z6037</code>: <translate><!--T:250--> <tvar name="1">{{Z|Z6037}}</tvar> (Entity part)</translate>
*<code>Z6038</code>: <translate><!--T:251--> <tvar name="1">{{Z|Z6038}}</tvar> (Entity part)</translate>
*<code>Z6040</code>: <translate><!--T:252--> <tvar name="1">{{Z|Z6040}}</tvar> (Type)</translate>
*<code>Z6041</code>: <translate><!--T:253--> <tvar name="1">{{Z|Z6041}}</tvar> (Statement rank)</translate>
*<code>Z6042</code>: <translate><!--T:254--> <tvar name="1">{{Z|Z6042}}</tvar> (Statement rank)</translate>
*<code>Z6043</code>: <translate><!--T:255--> <tvar name="1">{{Z|Z6043}}</tvar> (Statement rank)</translate>
*<code>Z6060</code>: <translate><!--T:256--> <tvar name="1">{{Z|Z6060}}</tvar> (Type)</translate>
*<code>Z6061</code>: <translate><!--T:257--> <tvar name="1">{{Z|Z6061}}</tvar> (Type)</translate>
*<code>Z6062</code>: <translate><!--T:258--> <tvar name="1">{{Z|Z6062}}</tvar> (Type)</translate>
*<code>Z6063</code>: <translate><!--T:259--> <tvar name="1">{{Z|Z6063}}</tvar> (Type)</translate>
*<code>Z6064</code>: <translate><!--T:260--> <tvar name="1">{{Z|Z6064}}</tvar> (Type)</translate>
*<code>Z6091</code>: <translate><!--T:261--> <tvar name="1">{{Z|Z6091}}</tvar> (Type)</translate>
*<code>Z6092</code>: <translate><!--T:262--> <tvar name="1">{{Z|Z6092}}</tvar> (Type)</translate>
*<code>Z6094</code>: <translate><!--T:263--> <tvar name="1">{{Z|Z6094}}</tvar> (Type)</translate>
*<code>Z6095</code>: <translate><!--T:264--> <tvar name="1">{{Z|Z6095}}</tvar> (Type)</translate>
*<code>Z6096</code>: <translate><!--T:265--> <tvar name="1">{{Z|Z6096}}</tvar> (Type)</translate>
</div></div>
{{Anchor|core-functions}}
<translate>
=== Core functions === <!--T:94-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z801</code> {{Z+|Z801}}: T ➝ T
* <code>Z802</code> {{Z+|Z802}}: Boolean, T, T ➝ T
* <code>Z803</code> {{Z+|Z803}}: Key reference, Any ➝ Any
*: <translate><!--T:96--> Z3/Key</translate>
* <code>Z804</code> {{Z+|Z804}}: List(Key reference) ➝ Abt
* <code>Z805</code> {{Z+|Z805}}: Any ➝ List(Pair(Key reference, Any))
*: <translate><!--T:41--> Reify has five letters</translate>
* <code>Z808</code> {{Z+|Z808}}: List(Pair(Key reference, Any)) ➝ Any
*: <translate><!--T:42--> Abstract has eight letters.</translate>
* <code>Z810</code> {{Z+|Z810}}: T, List(T) ➝ List(T)
*: <translate><!--T:46--> (because Z10 is list).</translate>
* <code>Z811</code> {{Z+|Z811}}: List(T) ➝ T
*: <translate><!--T:43--> (because Z10 was going to be list and we get the first)</translate>
* <code>Z812</code> {{Z+|Z812}}: List(T) ➝ List(T)
*: <translate><!--T:44--> (because Z10 was going to be list and we get the second, the rest)</translate>
* <code>Z813</code> {{Z+|Z813}}: List(T) ➝ Boolean
*: <translate><!--T:45--> (because Z13 was planned to be empty list).</translate>
* <code>Z820</code> {{Z+|Z820}}: String, Any ➝ Any
* <code>Z821</code> {{Z+|Z821}}: Pair(T1, T2) ➝ T1
*: <translate><!--T:47--> (because Z22 is pair).</translate>
* <code>Z822</code> {{Z+|Z822}}: Pair(T1, T2) ➝ T2
*: <translate><!--T:48--> (because Z22 is pair).</translate>
* <code>Z823</code> {{Z+|Z823}}: Quote ➝ Pair(Object, Object)
* <code>Z825</code> {{Z+|Z825}}: Item reference, Natural language, Gregorian calendar date ➝ HTML fragment
* <code>Z828</code> {{Z+|Z828}}: Quote ➝ Persistent object
* <code>Z832</code> {{Z+|Z832}}: Monolingual stringset, Monolingual stringset ➝ Boolean
* <code>Z844</code> {{Z+|Z844}}: Boolean, Boolean ➝ Boolean
* <code>Z850</code> {{Z+|Z850}}: Object, Error type, Object ➝ Object
*: <translate><!--T:266--> (because it deals with Z5/Errors)</translate>
* <code>Z851</code> {{Z+|Z851}}: Error type, List(T) ➝ Unit
* <code>Z852</code> {{Z+|Z852}}: Error, Error type ➝ Boolean
* <code>Z853</code> {{Z+|Z853}}: Object ➝ Pair(Error, Object)
* <code>Z854</code> {{Z+|Z854}}: Object ➝ String
* <code>Z860</code> {{Z+|Z860}}: String ➝ Language
* <code>Z862</code> {{Z+|Z862}}: Natural language, Natural language ➝ Boolean
* <code>Z866</code> {{Z+|Z866}}: String, String ➝ Boolean
* <code>Z868</code> <translate><!--T:267--> Replaced by <tvar name="1">{{Z+|Z22717}}: String ➝ List(Character)</tvar></translate>
*: <translate><!--T:49--> Because Z6/String and Z86/Character.</translate>
* <code>Z872</code> {{Z+|Z872}}: Function, Typed list (Object) ➝ Object
* <code>Z873</code> {{Z+|Z873}} Function, List ➝ List
* <code>Z876</code> {{Z+|Z876}}: Function, List, Object ➝ Object
* <code>Z877</code> {{Z+|Z877}}: HTML fragment -> HTML fragment
* <code>Z881</code> {{Z+|Z881}}: Type ➝ Type
* <code>Z882</code> {{Z+|Z882}}: Type, Type ➝ Type
* <code>Z883</code> {{Z+|Z883}}: T ➝ T
* <code>Z884</code> {{Z+|Z884}}: Type, List(Reference), String ➝ Type
* <code>Z885</code> {{Z+|Z885}}: Error type ➝ Type
* <code>Z886</code> <translate><!--T:268--> Replaced by <tvar name="1">{{Z+|Z22693}}: List*(Character) ➝ String</tvar></translate>
*: <translate><!--T:50--> because Z86/Character and Z6/String.</translate>
* <code>Z888</code> <translate><!--T:269--> Replaced by <tvar name="1">{{Z+|Z22683}}: Character, Character ➝ Boolean</tvar></translate>
* <code>Z889</code> {{Z+|Z889}}: Typed list (Object), Typed list (Object), Function ➝ Boolean
* <code>Z899</code> {{Z+|Z899}}: Quote ➝ Any
*: <translate><!--T:97--> because Z99/Quote.</translate>
</div></div>
{{Anchor|wikidata-functions}}
<translate>
==== Wikidata functions ==== <!--T:270-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<translate><!--T:271--> <tvar name="1"><code>Z6801</code></tvar> to <tvar name="2"><code>Z6808</code></tvar> are the 'same object' functions corresponding to <tvar name="3"><code>Z6001</code></tvar> to <tvar name="4"><code>Z6008</code></tvar>.</translate>
*<code>Z6820</code> {{Z+|Z6820}}: List(Object) ➝ Map(String, Object)
*<code>Z6821</code> {{Z+|Z6821}}: Item reference ➝ Item
*<code>Z6822</code> {{Z+|Z6822}}: Property reference ➝ Property
*<code>Z6824</code> {{Z+|Z6824}}: Lexeme form reference ➝ Lexeme form
*<code>Z6825</code> {{Z+|Z6825}}: Lexeme reference ➝ Lexeme
*<code>Z6826</code> {{Z+|Z6826}}: Lexeme sense reference ➝ Lexeme sense
*<code>Z6830</code> {{Z+|Z6830}}: Item reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6831</code> {{Z+|Z6831}}: Lexeme sense reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6884</code> {{Z+|Z6884}}: Type, List(Object), String ➝ Type
*<code>Z6894</code> {{Z+|Z6894}}
*<code>Z6895</code> {{Z+|Z6895}}: Object ➝ Object
*<code>Z6896</code> {{Z+|Z6896}}: List(String) ➝ Object
</div></div>
{{Anchor|core-error-types}}
<translate>
=== Core error types === <!--T:98-->
</translate>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <translate><tvar name="zid">{{Z|Z500}}</tvar> (error information): unspecified error</translate>
* <translate><!--T:103--> <tvar name="zid">{{Z|Z501}}</tvar> (error message, input): syntax error</translate>
* <translate><!--T:104--> <tvar name="zid">{{Z|Z502}}</tvar> (subtype, value): not wellformed, points to Z52x or Z53x</translate>
* <translate><!--T:105--> <tvar name="zid">{{Z|Z503}}</tvar> (function name): not implemented yet</translate>
* <translate><!--T:106--> <tvar name="zid">{{Z|Z504}}</tvar> (zid): Zid not found</translate>
* <translate><!--T:107--> <tvar name="zid">{{Z|Z505}}</tvar> (expected, actual, args): number of arguments mismatch</translate>
* <translate><!--T:108--> <tvar name="zid">{{Z|Z506}}</tvar> (expected, actual, arg): argument type mismatches</translate>
* <translate><!--T:109--> <tvar name="zid">{{Z|Z507}}</tvar> (function call): error in evaluation</translate>
* <translate><!--T:110--> <tvar name="zid">{{Z|Z508}}</tvar> (object): competing keys</translate>
* <translate><!--T:198--> <tvar name="zid">{{Z|Z509}}</tvar> (errors): List of errors</translate>
* <translate><!--T:111--> <tvar name="zid">{{Z|Z510}}</tvar> (none): nil</translate>
* <translate><!--T:112--> <tvar name="zid">{{Z|Z511}}</tvar> (key reference, object): key not found</translate>
* <translate><!--T:113--> <tvar name="zid">{{Z|Z512}}</tvar> (object): Z9 error</translate>
* <translate><!--T:114--> <tvar name="zid">{{Z|Z513}}</tvar> (resolved object): resolved object without Z2K2</translate>
* <translate><!--T:115--> <tvar name="zid">{{Z|Z514}}</tvar> (implementation): Builtin does not exist</translate>
* <translate><!--T:116--> <tvar name="zid">{{Z|Z515}}</tvar> (implementation): Builtin ID is erroneous</translate>
* <translate><!--T:117--> <tvar name="zid">{{Z|Z516}}</tvar> (key, bad value): Argument value error</translate>
* <translate><!--T:199--> <tvar name="zid">{{Z|Z517}}</tvar> (expected type, actual type, returned value, propagated error): Return type mismatch</translate>
* <translate><!--T:200--> <tvar name="zid">{{Z|Z518}}</tvar> (expected type, object, propagated error): Object type mismatch</translate>
* <translate><!--T:211--> <tvar name="zid">{{Z|Z519}}</tvar> (object): Undefined list type</translate>
* <translate><!--T:212--> <tvar name="zid">{{Z|Z520}}</tvar> (object): Wrong list type</translate>
* <translate><!--T:118--> <tvar name="zid">{{Z|Z521}}</tvar> (offending value): ZObjects must not be number or boolean or null</translate>
* <translate><!--T:119--> <tvar name="zid">{{Z|Z522}}</tvar> (offending index in array, propagated error): Array element not well formed</translate>
* <translate><!--T:120--> <tvar name="zid">{{Z|Z523}}</tvar> (object): Missing Z1K1</translate>
* <translate><!--T:121--> <tvar name="zid">{{Z|Z524}}</tvar> (value of Z1K1): Z1K1 must not be a string or array</translate>
* <translate><!--T:122--> <tvar name="zid">{{Z|Z525}}</tvar> (key): Invalid key</translate>
* <translate><!--T:123--> <tvar name="zid">{{Z|Z526}}</tvar> (key, propagated error): not wellformed value</translate>]
* <translate><!--T:272--> <tvar name="zid">{{Z|Z529}}</tvar> (host name)</translate>
* <translate><!--T:273--> <tvar name="zid">{{Z|Z530}}</tvar> (function call, propagated error)</translate>
* <translate><!--T:124--> <tvar name="zid">{{Z|Z531}}</tvar> (whole object): Z6 must have 2 keys</translate>
* <translate><!--T:125--> <tvar name="zid">{{Z|Z532}}</tvar> (whole object): Z6 without a Z6K1</translate>
* <translate><!--T:126--> <tvar name="zid">{{Z|Z533}}</tvar> (value of Z6K1): Z6K1 must be a string</translate>
* <translate><!--T:127--> <tvar name="zid">{{Z|Z534}}</tvar> (whole object): Z9 must have 2 keys</translate>
* <translate><!--T:128--> <tvar name="zid">{{Z|Z535}}</tvar> (whole object): Z9 without a Z9K1</translate>
* <translate><!--T:129--> <tvar name="zid">{{Z|Z536}}</tvar> (value of Z9K1): Z9K1 must be a string in JSON</translate>
* <translate><!--T:130--> <tvar name="zid">{{Z|Z537}}</tvar> (value of Z9K1): Z9K1 must look like a reference</translate>
* <translate><!--T:135--> <tvar name="zid">{{Z|Z538}}</tvar> (page title): wrong namespace</translate>
* <translate><!--T:136--> <tvar name="zid">{{Z|Z539}}</tvar> (page title): wrong content type</translate>
* <translate><!--T:137--> <tvar name="zid">{{Z|Z540}}</tvar> (language code): invalid language code</translate>
* <translate><!--T:138--> <tvar name="zid">{{Z|Z541}}</tvar> (language code): language code not found</translate>
* <translate><!--T:139--> <tvar name="zid">{{Z|Z542}}</tvar> (expected type, actual object): expected type, actual object</translate>
* <translate><!--T:140--> <tvar name="zid">{{Z|Z543}}</tvar> (type name): type not found</translate>
* <translate><!--T:141--> <tvar name="zid">{{Z|Z544}}</tvar> (type zid, type name, existing type name): conflicting type names</translate>
* <translate><!--T:142--> <tvar name="zid">{{Z|Z545}}</tvar> (type zid, type name, existing type zid): conflicting type Zids</translate>
* <translate><!--T:143--> <tvar name="zid">{{Z|Z546}}</tvar> (type zid, type name): builtin type not found</translate>
* <translate><!--T:144--> <tvar name="zid">{{Z|Z547}}</tvar> (input): invalid format</translate>
* <translate><!--T:145--> <tvar name="zid">{{Z|Z548}}</tvar> (error message, input): invalid JSON</translate>
* <translate><!--T:146--> <tvar name="zid">{{Z|Z549}}</tvar> (reference value): invalid ZReference</translate>
* <translate><!--T:147--> <tvar name="zid">{{Z|Z550}}</tvar> (reference value): unknown ZReference</translate>
* <translate><!--T:148--> <tvar name="zid">{{Z|Z551}}</tvar> (key, expected type, actual type): schema type mismatch</translate>
* {{Z|Z552}} <translate><!--T:186--> (index, expected type, actual type): array element type mismatch</translate>
* {{Z|Z553}} <translate><!--T:187--> (zobject): disallowed root type</translate>
* {{Z|Z554}} <translate><!--T:188--> (clashing ZID, language): label clashes with another ZObject's label</translate>
* {{Z|Z555}} <translate><!--T:189--> (ZID, title): mis-matched ZID and page title</translate>
* {{Z|Z556}} <translate><!--T:190--> (title): invalid page title</translate>
* {{Z|Z557}} <translate><!--T:191--> (error message): user does not have permission</translate>
* {{Z|Z558}} <translate><!--T:192--> (programming language): invalid programming language</translate>
* {{Z|Z559}} <translate><!--T:201--> (none): user not permitted to evaluate function</translate>
* {{Z|Z560}} <translate><!--T:202--> (evaluation result): invalid evaluation result</translate>
* {{Z|Z561}} <translate><!--T:203--> (propagated error): invalid evaluation request</translate>
* {{Z|Z562}} <translate><!--T:204--> (missing property): incomplete evaluation request</translate>
* {{Z|Z563}} <translate><!--T:205--> (call): call by non-reentrant executor</translate>
* {{Z|Z564}} <translate><!--T:206--> (contents): invalid executor response</translate>
* {{Z|Z565}} <translate><!--T:213--> (missing property): Incomplete executor request</translate>
* {{Z|Z570}} <translate><!--T:196--> (orchestrator rate limit): reached rate limit in orchestrator</translate>
* {{Z|Z571}} <translate><!--T:197--> (evaluator rate limit): reached rate limit in evaluator</translate>
* {{Z|Z572}} <translate><!--T:207--> (recursion limit, function name): reached recursion limit in orchestrator</translate>
* {{Z|Z573}} <translate><!--T:208--> (recursion limit, function name): reached recursion limit in evaluator</translate>
* {{Z|Z574}} <translate><!--T:209--> (time limit): reached time limit in orchestrator</translate>
* {{Z|Z575}} <translate><!--T:210--> (time limit): reached time limit in evaluator</translate>
* {{Z|Z576}} <translate><!--T:274--> (time limit)</translate>
* {{Z|Z580}} <translate><!--T:275--> (duplicate language)</translate>
</div></div>
<translate>
== See also == <!--T:59-->
</translate>
* <translate><!--T:60--> [[<tvar name="notes">:m:Special:MyLanguage/Abstract Wikipedia/Notes</tvar>|Overview of notes]]</translate>
<noinclude>
[[Category:Technical documentation{{#translation:}}|Reserved ZIDs]]
</noinclude>
65t6urp11l3twdx90hnd0td0uuz0wzv
Wikifunctions:Administrators' noticeboard
4
9491
282527
281955
2026-06-12T03:08:11Z
SpBot
978
archive 1 section: 1 to [[Wikifunctions:Administrators' noticeboard/Archive/2026/06]] (after section [[Wikifunctions:Administrators' noticeboard/Archive/2026/06#Navbar_broken|Navbar_broken]]) - previous edit: [[:User:YoshiRulz|YoshiRulz]], 2026-06-10 13:46
282527
wikitext
text/x-wiki
{{dynamite|title=Administrators' noticeboard|t=yes}}
{{Autoarchive resolved section
|age = 1
|archive = ((FULLPAGENAME))/Archive/((year))/((month:##))
|timeout=30
}}
{{Archives|{{Flatlist|{{Special:PrefixIndex/Wikifunctions:Administrators' noticeboard/Archive/|stripprefix=1}} }}}}
<!-- Add new reports below this line -->
== Inactive functioneers ==
* [[User:Autom]]
* <del>[[User:Butko]]</del>
* [[User:Egezort]]
* [[User:Elwinlhq]]
* <del>[[User:Habst]]</del>
* <del>[[User:Lucas Werkmeister]]</del>
* <del>[[User:Mahir256]]</del>
* <del>[[User:Papuass]]</del>
* [[User:Renamerr]]
* [[User:Sannita (WMF)]] (I'm not sure if the right should be removed from a staff member, but they ''are'' inactive)
* [[User:Wooze]]
* <del>[[User:ZI Jony]]</del>
* [[User:Zippybonzo]]
* <del>[[User:沈澄心]]</del>
All of these users meet the threshold of inactivity on [[WF:Functioneer]]. Thanks, [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 18:56, 20 May 2026 (UTC)
:Hello @[[User:Feeglgeef|Feeglgeef]],
:I have stopped adding new functions, and I wouldn't mind if I'm removed from the functioneers list. If at any point I want it back, I'll request it. Thanks,
:Ege [[User:Egezort|Egezort]] ([[User talk:Egezort|talk]]) 19:00, 20 May 2026 (UTC)
:I have been inactive for some time, indeed. I just made an useful edit with intention to return at some point. [[User:Papuass|Papuass]] ([[User talk:Papuass|talk]]) 19:49, 20 May 2026 (UTC)
:I'm still interested in making new functions, but if there is a process for re-requesting access I don't mind requesting again. --[[User:Habst|Habst]] ([[User talk:Habst|talk]]) 20:35, 20 May 2026 (UTC)
::We're not a bureaucracy, so in my opinion just expressing interest in keeping the role is enough. I'll strike your name. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 20:36, 20 May 2026 (UTC)
:I'm still interested in project and I would like to keep the Functioneer rights, but don't have enough time at the moment. I hope that I'll can create thome new functions sporadically. --[[User:Butko|Butko]] ([[User talk:Butko|talk]]) 09:53, 21 May 2026 (UTC)
::Stricken. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 03:31, 25 May 2026 (UTC)
:I'm still interested in making new functions. Regards, [[User:ZI Jony|<span style="color:#8B0000">'''ZI Jony'''</span>]] [[User talk:ZI Jony|<sup><span style="color:Green"><i>(Talk)</i></span></sup>]] 17:15, 21 May 2026 (UTC)
:Am fine with it being removed, I was interested at one point in the concept of WF but when I rarely contribute to enwp I see no reason right now in keeping it around and will re-request if I gain interest again [[User:Zippybonzo|Zippybonzo]] ([[User talk:Zippybonzo|talk]]) 18:06, 21 May 2026 (UTC)
:I would like to keep the Functioneer rights, as they could be useful in future when someone sets up Wikifunctions for more Wikidata Lexeme Forms templates (see [[Wikifunctions:Projects using Wikifunctions]] and [[:d:Wikidata:Wikidata Lexeme Forms#Wikifunctions support]]). I’ve just made an edit on the [[Z10119|sandbox function]], maybe that suffices to technically fulfill the requirement. [[User:Lucas Werkmeister|Lucas Werkmeister]] ([[User talk:Lucas Werkmeister|talk]]) 21:23, 21 May 2026 (UTC)
::I've stricken your name. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 22:21, 21 May 2026 (UTC)
:You can remove my permissions as well, I will not have time to contribute regularly again until winter at the earliest. [[User:Autom|Autom]] ([[User talk:Autom|talk]]) 19:20, 22 May 2026 (UTC)
: I'm still interested in making new functions and implementations (e.g. [[Z34743]]). '''<span style="font-family:Iosevka,monospace">[[User:沈澄心|<span style="color:#9f3526">dring</span>]][[User talk:沈澄心|<span style="color:#534fa3">sim</span>]]</span>''' 10:38, 24 May 2026 (UTC)
:: I've stricken your name. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 14:10, 24 May 2026 (UTC)
: I do still plan to make new functions, particularly around transliteration from different pronunciation schemes into given target languages (and as long as discussions around abstract content architecture remain stagnant). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 18:48, 25 May 2026 (UTC)
cv2af5ktnfbs41c5oh0pcaqg1rgayrc
Z12668
0
20400
282567
252469
2026-06-12T09:49:20Z
GrounderUK
50
[nudged]
282567
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z12668"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z12668K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "daftar"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "তালিকা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ndepụta: Edepụtara ndepụta ( Ihe )"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Liste"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "列表"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "串列"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "liste"
}
]
}
}
],
"Z8K2": "Z1",
"Z8K3": [
"Z20",
"Z12670",
"Z12717",
"Z13725",
"Z13755",
"Z16540",
"Z17702",
"Z17707",
"Z17716",
"Z18474"
],
"Z8K4": [
"Z14",
"Z17708",
"Z17717",
"Z12810",
"Z17718",
"Z12669",
"Z17798",
"Z14217",
"Z31639"
],
"Z8K5": "Z12668"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "reverse untyped list"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "membalik daftar"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "তালিকা প্রতিক্রম"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "tụgharia ndepụta"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "kehre Liste um"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "反转列表"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "反轉串列"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "inverser une liste non typée"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"reverse",
"reverse list",
"backwards"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"balikkan daftar"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1430",
"Z31K2": [
"Z6",
"umkehren",
"Liste umkehren",
"rückwärts"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "reverse the order of elements in an untyped ordered list"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "membalik urutan elemen dalam daftar yang menjadi masukan fungsi"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "কোনো তালিকার প্রতিটি বস্তুর ক্রমকে প্রতিক্রম করে"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "tụgharịa usoro nke mmewere na ndepụta ahaziri"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "kehrt die Reihenfolge der Elemente einer Liste um"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "反转有序列表中元素的顺序"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "反轉有序串列中元素的順序"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "inverse l'ordre des éléments dans une liste ordonnée non typée"
}
]
}
}
7rprqjbhgvhwau5weppao921wxictzt
Z13436
0
24360
282388
278475
2026-06-11T21:43:44Z
GrounderUK
50
Removed Z31253 from the approved list of test cases
282388
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z13436"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z8",
"Z17K2": "Z13436K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "function to apply"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1818",
"Z11K2": "iṣẹ́ láti lò"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "anzuwendende Funktion"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z13436K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "common first argument"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1818",
"Z11K2": "àríyànjiyàn àkọ́kọ́ tó wọ́pọ̀"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "erstes Argument"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z13436K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of second arguments"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1818",
"Z11K2": "àkójọpọ̀ àríyànjiyàn kejì"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Liste des zweiten Arguments"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z8K3": [
"Z20",
"Z13437",
"Z13439",
"Z30832",
"Z33748",
"Z35751"
],
"Z8K4": [
"Z14",
"Z13438",
"Z30957"
],
"Z8K5": "Z13436"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply a two-parameter function to a common first argument and a list of second arguments"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "tinye ọrụ oke abụọ na arụmụka mbụ nkịtị na ndepụta arụmụka nke abụọ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1818",
"Z11K2": "lo iṣẹ́ pàrámítà méjì sí àríyànjiyàn àkọ́kọ́ tó wọ́pọ̀ àti àkójọpọ̀ àríyànjiyàn kejì"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Funktion mit zwei Parametern anwenden"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"apply2 scalar and list",
"map function with argument to list",
"scalar and vector"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns a list of results"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "weghachi ndepụta nke rịzọlt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1818",
"Z11K2": "ìdápadà àkójọpọ̀ àwọn èsì"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "gibt eine Liste von Ergebnissen aus"
}
]
}
}
f82gy660lioczzr0r0aytq0dnm6056q
Z13464
0
24433
282370
282058
2026-06-11T20:47:21Z
GrounderUK
50
Added Z36287 to the approved list of implementations
282370
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z13464"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z8",
"Z17K2": "Z13464K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "function to apply"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "anzuwendende Funktion"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "aplikovaná funkce"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z13464K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of first arguments"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Liste des ersten Arguments"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "seznam hodnot prvního argumentu"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z13464K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "common second argument"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zweites Argument"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "společný druhý argument"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z8K3": [
"Z20",
"Z13465",
"Z33120",
"Z33903",
"Z34975",
"Z35638",
"Z35750"
],
"Z8K4": [
"Z14",
"Z13466",
"Z31249",
"Z35755",
"Z36287"
],
"Z8K5": "Z13464"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply a two-parameter function to a list of first arguments and a common second argument"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "tinye ọrụ paramita abụọ na ndepụta nke arụmụka mbụ na arụmụka nke abụọ nkịtị"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Funktion mit zwei Parametern auf Liste anwenden"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "aplikovat 2-funkci na seznam a fixní druhý arg"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"apply2 list scalar",
"apply a two parameter function to a list of first arguments and a common second argument",
"map function to list with argument",
"map2",
"apply two-parameter function to list and common second arg",
"function of list and scalar",
"apply 2-parameter function to list and common second argument",
"function of scalar and list"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns a list of the results of running the function once for each item on the list, each time with the first argument from the list and the second argument in common."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "weghachi ndepụta nke rịzọlt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "gibt eine Liste der Ergebnisse aus"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Aplikuje funkci se dvěma argumenty, přičemž pro první parametr bere hodnoty dodaného seznamu, druhý parametr je dodaný fixní. Vrátí seznam výsledků těchto volání."
}
]
}
}
ljqoho3un4bgoajycg8t4io2m7dxqfy
Z13518
0
24716
282417
260264
2026-06-12T00:42:47Z
七八年再来一次
10776
282417
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z13518"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z13518",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z13518K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "মান"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "wartość"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "數值"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Wert"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "värde"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "ערך"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "hodnota"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "nilai"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "valeur"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "قيمة"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "valore"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "вредност"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "waarde"
}
]
}
}
],
"Z4K3": "Z101",
"Z4K4": "Z13522",
"Z4K5": "Z14280",
"Z4K6": "Z14290",
"Z4K7": [
"Z46",
"Z13519",
"Z13531"
],
"Z4K8": [
"Z64",
"Z13520",
"Z13532"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Natural number"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "entier naturel"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1282",
"Z11K2": "niver naturel"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Número natural"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Numero naturale"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "স্বাভাবিক সংখ্যা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "Liczba naturalna"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1882",
"Z11K2": "lami"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "φυσικός αριθμός"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1304",
"Z11K2": "Liczba naturalnŏ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "Натуральне число"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "自然数"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "自然數"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "Натуральное число"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "natürliche Zahl"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "Naturligt tal"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מספר טבעי"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Přirozené číslo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Bilangan alami"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1643",
"Z11K2": "자연수"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1099",
"Z11K2": "natierlech Zuel"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Ọnụọgụgụ eke"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1501",
"Z11K2": "Chū-jiân-sò͘"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1922",
"Z11K2": "Tsū-jiân-sòo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1892",
"Z11K2": "自然數"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1360",
"Z11K2": "ℕ₀"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "自然数"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1314",
"Z11K2": "zenbaki arrunt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1199",
"Z11K2": "Natural number"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Número natural"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Număr natural"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "عدد طبيعي"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1051",
"Z11K2": "luonnollinen luku"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1789",
"Z11K2": "nombre natural"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1394",
"Z11K2": "Prirodan broj"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "Природан број"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "प्राकृतिक संख्या"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1106",
"Z11K2": "Náttúrulegar tölur"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1179",
"Z11K2": "A̱za̱za̱rak la̱mba"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1362",
"Z11K2": "wilangan alami"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "natuurlijk getal"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1237",
"Z11K2": "doğal sayı"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"natural number",
"counting number",
"whole number",
"positive integer (including 0)",
"positive number (including 0)",
"number (natural)",
"int (natural number)",
"integer (positive including 0)",
"BigInt",
"BigNum",
"non-negative integer",
"non-negative number (integer)",
"positive whole number (including 0)",
"unsigned integer",
"int ≥ 0",
"n ∈ ℕ₀",
"ℕ₀",
"uint"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"অঋণাত্মক পূর্ণসংখ্যা",
"অখণ্ডসংখ্যা",
"প্রাকৃতিক সংখ্যা",
"সমগ্র সংখ্যা"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1025",
"Z31K2": [
"Z6",
"Nieujemna liczba całkowita"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1186",
"Z31K2": [
"Z6",
"טבעי",
"שלם אי שלילי",
"שלם אי־שלילי",
"שלם אי-שלילי"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1360",
"Z31K2": [
"Z6",
"ℕ",
"ℕ_0",
"ℕ^0",
"N",
"N_0",
"N^0",
"ℕ0",
"N0"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"nezáporné celé číslo",
"N",
"uint"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"Bilangan asli",
"Bilangan cacah"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1643",
"Z31K2": [
"Z6",
"자연수",
"범자연수"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1381",
"Z31K2": [
"Z6",
"número natural",
"número de contagem",
"número inteiro"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1003",
"Z31K2": [
"Z6",
"número entero",
"número natural"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1664",
"Z31K2": [
"Z6",
"număr întreg ",
"număr întreg pozitiv ",
"int",
"integer ",
"întreg ",
"BigInt",
"BigNum"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"intero positivo o nullo",
"intero non negativo"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1106",
"Z31K2": [
"Z6",
"náttúrleg tala, náttúruleg tala"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1157",
"Z31K2": [
"Z6",
"tellend getal",
"geheel getal",
"positief geheel getal (inclusief 0)",
"positief getal (inclusief 0)",
"getal (natuurlijk)",
"niet-negatief geheel getal",
"geheel getal (positief, inclusief 0)",
"niet-negatief getal (geheel getal)",
"ongetekend geheel getal"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1645",
"Z31K2": [
"Z6",
"自然数",
"计数数",
"整数",
"含0的正整数",
"数(自然数)",
"整型(自然数)",
"非负整数",
"无符号整数",
"整型 ≥ 0",
"n ∈ ℕ₀",
"ℕ₀"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "an arbitrarily-large whole number, either zero or positive"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "0,1,2,3...nombre entier positif incluant zéro "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "একটি পূর্ণসংখ্যা যার মান ধনাত্মক অথবা শূন্য"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1025",
"Z11K2": "Liczba całkowita, dodatnia bądź zero"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1882",
"Z11K2": "uzh"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "целые положительные числа, включая 0"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "eine ganze Zahl, entweder Null oder positiv"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "heltal, antingen positiva eller noll"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "ціле число, нуль або додатне"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מספר שלם ואי־שלילי. אפס או חיובי."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "nezáporné celé číslo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "bilangan bulat positif atau nol"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1643",
"Z11K2": "0이 아닌, 자연적으로 사람이 셀 수 있는 수"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ọnụọgụgụ zuru oke nke otu ọbụla, ma ọ bụ efu ma ọ bụ nke ziri ezi"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "正の整数"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1314",
"Z11K2": "edozein zenbaki oso positibo, zero barne"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "um número inteiro arbitrário grande, zero ou positivo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "包含0的正整數"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "un număr întreg, fie pozitiv sau zero, de mărime arbitrară "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "عدد صحيح أكبر أو يساوي الصفر"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Un numero intero positivo o nullo arbitrariamente grande"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1394",
"Z11K2": "ceo nenegativan broj proizvoljne veličine"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "цео ненегативан број произвољне величине"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "शून्य या फिर कोई भी सकारात्मक संख्या"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1106",
"Z11K2": "núll eða jákvæðna heiltala sem er"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1362",
"Z11K2": "wilangan alami"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "een willekeurig groot geheel getal, nul of positief"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "含0的正整数"
}
]
}
}
2guu8n6pasr87xrg1kuy0048gkfj4h6
Z14592
0
27594
282343
270605
2026-06-11T17:21:09Z
WikiLambda system
3
Updated the implementation list (see [[Help:Wikifunctions/Implementation_ordering_and_choosing|About implementation selection]])
282343
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z14592"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z14592K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial string"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "eriri mbụ: Eriri "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "ursprüngliche Zeichenkette"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "текст"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "chaîne initiale"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z14592K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number of characters to keep"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ọnụọgụ mkpụrụedemede ị ga-edobe: Nọmba eke"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Anzahl der Zeichen die behalten werden sollen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "кількість символів (N)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "nombre de caractères à conserver"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z14593",
"Z16808"
],
"Z8K4": [
"Z14",
"Z19142",
"Z28633",
"Z14594"
],
"Z8K5": "Z14592"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first N characters of string"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "קבלת n התווים הראשונים של מחרוזת"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": " mkpụrụedemede N mbụ nke eriri"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "erste N Zeichen der Zeichenkette"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "Перші N символів рядка"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "premiers N caractères d'une chaîne"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "karakter pertama N dari string"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"left",
"first N characters of a string",
"initial substring of a string",
"starting N characters of string",
"initial characters of string"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1430",
"Z31K2": [
"Z6",
"Zeichen vom Anfang der Zeichenkette",
"Zeichen am Anfang der Zeichenkette",
"Anfang der Zeichenkette",
"Teilzeichenkette am Anfang der Zeichenkette",
"erster Teil der Zeichenkette",
"erste Zeichen der Zeichenkette"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"kiri",
"karakter pertama N dari sebuah string",
"substring awal N dari sebuah string",
"substring awal dari sebuah string",
"karakter awal dari sebuah string"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns a substring from the beginning of a specified string up to a number of characters"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "na-eweghachi mkpịsị eriri site na mmalite nke eriri akọwapụtara ruo ọtụtụ mkpụrụedemede"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "gibt nur die ersten N Zeichen der ursprünglichen Zeichenkette zurück"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "повертає перші N символів текстового рядка, відкидуючи решту"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "renvoie une sous-chaîne depuis le début d'une chaîne spécifiée jusqu'à un nombre de caractères demandé"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "mengembalikan substring dari awal string yang ditentukan hingga sejumlah karakter."
}
]
}
}
hgqxuuv5lwmza9k8gj7t3w2b8s2j4cs
Z14779
0
27916
282380
246881
2026-06-11T21:29:31Z
99of9
1622
Added Z31251 to the approved list of implementations
282380
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z14779"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z8",
"Z17K2": "Z14779K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "function to apply"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ọrụ itinye: Ọrụ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "anzuwendende Funktion"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z14779K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of first parameters"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ndepụta nke mbụ parameters: Edepụtara ndepụta(Ihe)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Liste der ersten Parameter"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z14779K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of second parameters"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ndepụta nke abụọ parameters: Edepụtara ndepụta(Ihe)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "liste der zweiten Parameter"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z8K3": [
"Z20",
"Z14780",
"Z23289",
"Z30628",
"Z31252"
],
"Z8K4": [
"Z14",
"Z14781",
"Z31251"
],
"Z8K5": "Z14779"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply a two-parameter function pairwise to elements of two lists of the same length"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "tinye ọrụ nrịbama abụọ n'otu aka ahụ n'ime ihe ndepụta abụọ nke otu ogologo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Funktion mit zwei Parametern paarweise anwenden"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns a list of the same length"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "weghachi ndepụta nke otu ogologo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "gibt eine Liste der gleichen Länge aus"
}
]
}
}
qa1osflk7fpnm099oixw53fwx9r11gt
282381
282380
2026-06-11T21:30:05Z
99of9
1622
Added Z36292 to the approved list of implementations
282381
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z14779"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z8",
"Z17K2": "Z14779K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "function to apply"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ọrụ itinye: Ọrụ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "anzuwendende Funktion"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z14779K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of first parameters"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ndepụta nke mbụ parameters: Edepụtara ndepụta(Ihe)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Liste der ersten Parameter"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z14779K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of second parameters"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ndepụta nke abụọ parameters: Edepụtara ndepụta(Ihe)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "liste der zweiten Parameter"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z8K3": [
"Z20",
"Z14780",
"Z23289",
"Z30628",
"Z31252"
],
"Z8K4": [
"Z14",
"Z14781",
"Z31251",
"Z36292"
],
"Z8K5": "Z14779"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply a two-parameter function pairwise to elements of two lists of the same length"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "tinye ọrụ nrịbama abụọ n'otu aka ahụ n'ime ihe ndepụta abụọ nke otu ogologo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Funktion mit zwei Parametern paarweise anwenden"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns a list of the same length"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "weghachi ndepụta nke otu ogologo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "gibt eine Liste der gleichen Länge aus"
}
]
}
}
ragj8kfwjfhu6vrtifujm02dbyjrstg
282382
282381
2026-06-11T21:31:52Z
99of9
1622
Nudge
282382
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z14779"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z8",
"Z17K2": "Z14779K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "function to apply"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ọrụ itinye: Ọrụ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "anzuwendende Funktion"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z14779K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of first parameters"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ndepụta nke mbụ parameters: Edepụtara ndepụta(Ihe)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Liste der ersten Parameter"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z14779K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of second parameters"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "ndepụta nke abụọ parameters: Edepụtara ndepụta(Ihe)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "liste der zweiten Parameter"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z8K3": [
"Z20",
"Z14780",
"Z23289",
"Z30628",
"Z31252"
],
"Z8K4": [
"Z14",
"Z14781",
"Z31251",
"Z36292"
],
"Z8K5": "Z14779"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply a two-parameter function pairwise to elements of two lists of the same length"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "tinye ọrụ nrịbama abụọ n'otu aka ahụ n'ime ihe ndepụta abụọ nke otu ogologo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Funktion mit zwei Parametern paarweise anwenden"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"function of two equal length vectors"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns a list of the same length"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "weghachi ndepụta nke otu ogologo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "gibt eine Liste der gleichen Länge aus"
}
]
}
}
83awt00l3mlbpb6d0rxcknazfotziyt
Z15560
0
28762
282360
271265
2026-06-11T19:01:03Z
WikiLambda system
3
Updated the implementation list (see [[Help:Wikifunctions/Implementation_ordering_and_choosing|About implementation selection]])
282360
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z15560"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z15560K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Fahrenheit (°F)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מעלות פרנהייט"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Fahrenheit (°F)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Fahrenheit (°F)"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z15572",
"Z15571",
"Z15573",
"Z15563"
],
"Z8K4": [
"Z14",
"Z15561",
"Z19160",
"Z34567"
],
"Z8K5": "Z15560"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Fahrenheit to Celsius"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Fahrenheit ruo Celsius"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "המרת פרנהייט לצלזיוס"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Fahrenheit in Celsius"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "华氏度转摄氏度"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "華氏度轉攝氏度"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Fahrenheit ke Celcius"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1186",
"Z31K2": [
"Z6",
"פרנהייט לצלזיוס"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Converts Fahrenheit (°F) to Celsius (°C)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Na-atụgharị Fahrenheit (°F) ka ọ bụrụ Celsius (°C)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "המרת מעלות פרנהייט למעלות צלזיוס. ר' Z16487 להופכית."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "wandelt Fahrenheit (°F) in Celsius (°C) um"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "将华氏度(°F)转换为摄氏度(°C)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Konversi Fahrenheit (°F) ke Celsius (°C)"
}
]
}
}
1sdf7tinsc5no41kl8w1k4e5x0jao3b
Z16659
0
31382
282420
260261
2026-06-12T00:47:02Z
七八年再来一次
10776
将 sign 译作数符
282420
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z16659"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z16659",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z16659",
"Z3K2": "Z16659K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "identity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Identität"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "identité"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "identità"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "पहचान"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
],
"Z4K3": "Z101",
"Z4K4": "Z16667",
"Z4K7": [
"Z46",
"Z16663",
"Z16664"
],
"Z4K8": [
"Z64",
"Z16665",
"Z16666"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Sign"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "akara (Ejila banye )"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1332",
"Z11K2": "Знак"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Vorzeichen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1099",
"Z11K2": "Virzeechen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "চিহ্ন"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1061",
"Z11K2": "fortegn"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Znaménko"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1272",
"Z11K2": "predznak"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "סימן"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "πρόσημο "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Sinal"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1709",
"Z11K2": "Zīme"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Tanda"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "signe"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Semn"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "إشارة"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Segno"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1051",
"Z11K2": "etumerkki"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "Знак"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "चिह्न"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1237",
"Z11K2": "işaret"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "数符"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"charge sign"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1186",
"Z31K2": [
"Z6",
"כיווניות מספר"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1381",
"Z31K2": [
"Z6",
"sinal de carga"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1181",
"Z31K2": [
"Z6",
"знак наелектрисања"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1645",
"Z31K2": [
"Z6",
"正\u0026负号",
"符号"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "The sign of a number"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "কোনো সংখ্যার চিহ্ন"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1061",
"Z11K2": "fortegnet af et tal"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "znaménko čísla"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "סימן של מספר מכוון"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "το πρόσημο ενός αριθμού (θετικό, αρνητικό ουδέτερο)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "O sinal de um número"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Tanda dari sebuah angka."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "signe d'un nombre"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Semnul unui număr "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "إشارة العدد"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Il segno di un numero"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "Знак броја"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "किसी संख्या का चिह्न"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "数字的符号"
}
]
}
}
t2wgi0vg1om29fwhwjg88a1k8oomzge
Z16683
0
31406
282423
260263
2026-06-12T00:49:31Z
七八年再来一次
10776
282423
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z16683"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z16683",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z16659",
"Z3K2": "Z16683K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "sign"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Zeichen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "signe"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "semn"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "segno"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "চিহ্ন"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "πρόσημο"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "знак"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "चिह्न"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "teken"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "znaménko"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
{
"Z1K1": "Z3",
"Z3K1": "Z13518",
"Z3K2": "Z16683K2",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "absolute value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "absoluter Wert"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "valeur absolue"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "valoare absolută"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "valore assoluto"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরম মান"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "απόλυτος αριθμός"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "апсолутна вредност"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "निरपेक्ष मान"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "absolute waarde"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "absolutní hodnota"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
],
"Z4K3": "Z101",
"Z4K4": "Z16688",
"Z4K5": "Z16700",
"Z4K6": "Z16705",
"Z4K7": [
"Z46",
"Z16684",
"Z16685"
],
"Z4K8": [
"Z64",
"Z16686",
"Z16687"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Celé číslo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পূর্ণ সংখ্যা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מספר שלם"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1360",
"Z11K2": "ℤ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1827",
"Z11K2": "ακέραιος αριθμός"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "整数"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Intero"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "Inteiro"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Integer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "entier"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "heltal"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "Целое число"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "عدد صحيح"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Număr întreg"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1051",
"Z11K2": "kokonaisluku"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "पूर्णांक"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "geheel getal"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1237",
"Z11K2": "tam sayı"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "整数"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"whole numbers",
"signed integer",
"ℤ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"celá čísla",
"int"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"পূর্ণসংখ্যা"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1430",
"Z31K2": [
"Z6",
"Ganzzahl",
"ganze Zahl"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1381",
"Z31K2": [
"Z6",
"números inteiros",
"inteiro assinado",
"ℤ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"bilangan bulat",
"ℤ "
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1664",
"Z31K2": [
"Z6",
"întreg",
"ℤ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"Numero intero",
"Numero relativo",
"Intero con segno"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1157",
"Z31K2": [
"Z6",
"getekend geheel getal",
"Z"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1237",
"Z31K2": [
"Z6",
"tamsayı"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1645",
"Z31K2": [
"Z6",
"带符号整数",
"ℤ"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "arbitrarily large whole numbers, including negative ones and 0. 0 is the only value allowed to have a neutral sign (and it must have that sign; positive and negative 0 are possible but not valid)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "libovolně velké celé číslo, může být kladné, záporné, nebo nula"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "বড় পূর্ণ সংখ্যা, ঋণাত্মক এবং শূন্য। ০ হল একমাত্র মান যা একটি নিরপেক্ষ চিহ্নের জন্য অনুমোদিত।"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "ganze Zahlen, darunter negative Zahlen und 0"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "ר' Z13518 למספר טבעי בלבד."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1360",
"Z11K2": "{..., -3, -2, -1, 0, 1, 2, 3, ...}"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1381",
"Z11K2": "números inteiros arbitrariamente grandes, incluindo negativos e 0. 0 é o único valor que pode ter um sinal neutro (e deve ter esse sinal; 0 positivo e negativo são possíveis, mas não válidos)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "bilangan bulat besar, temasuk negatif dan 0 (nol). Hanya 0 yang diperbolehkan untuk memiliki tanda netral, angka lain harus memiliki tanda positif atau negatif."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "nombres entiers arbitrairement grands, y compris des nombres négatifs et 0. 0 est la seule valeur autorisée à avoir un signe neutre. Les entiers NATURELs Z13518 commencent eux avec 0 1 2 3..."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "positivt eller negativt heltal, inklusive noll"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "الأعداد بدون كسور أو فاصلة عشرية بما في ذلك الأرقام السالبة والصفر. 0 هي القيمة الوحيدة المحايدة بدون إشارة (ويجب أن تكون كذلك؛ فالـ 0 بكلا الإشارتين ممكنة ولكنها غير صالحة)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "numere întregi arbitrar de mari, inclusiv cele negative și 0. 0 este singura valoare care poate avea un semn neutru (și trebuie să aibă acest semn; 0 pozitiv și negativ sunt posibile, dar nu valide)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Un numero intero arbitrariamente grande, compresi anche i valori negativi e nulli. Lo 0 è l'unico valore che può avere un segno neutro (e deve averlo; +0 e -0 sono possibili ma non validi)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "willekeurig grote gehele getallen, inclusief negatieve waarden en 0, waarbij alleen 0 een verplicht neutraal teken mag hebben en positieve of negatieve 0 wel mogelijk maar ongeldig zijn"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "任意大的整数,包括负数和0。0是唯一允许具有中性号的值(且必得有该符号;正0和负0虽有可能但不视作有效)"
}
]
}
}
2f381sr4yyrb6icribkrwg5l1x24yte
Talk:Z16914
1
33393
282570
113178
2026-06-12T10:17:48Z
Rai282
13867
/* Recursive useless compositions */ new section
282570
wikitext
text/x-wiki
== Missing Months ==
@[[User:Dolphyb|Dolphyb]] I can not select November and December as Months in this function. Can you please check why it is not possible to select these months and add them. Where can I see the definitions of the inputs. I do not have special rights like Functioneer rights on Wikifunctions and I have not seen the place where the inputs have been defined. [[User:Hogü-456|Hogü-456]] ([[User talk:Hogü-456|talk]]) 20:04, 4 July 2024 (UTC)
:@[[User:Hogü-456|Hogü-456]] I think the issue is coming from internal bug (affecting functions with [[Z16098|Gregorian calendar month]] or [[Z16927|Igbo calendar month]] as an input) which already has an open [[phab:T368147|ticket]] on phabricator. the definition of wikifunction inputs should be in same place with description of wikifunction but currently this function doesn't have one, will add them later nice thought though 👍👍 [[User:Dolphyb|Dolphyb]] ([[User talk:Dolphyb|talk]]) 21:35, 4 July 2024 (UTC)
== Recursive useless compositions ==
The composition implementation of [https://www.wikifunctions.org/view/en/Z16914 get weekday number (starting Sunday=1) from date] uses [https://www.wikifunctions.org/view/en/Z17540 get day of the week from numerical date] that uses the first function, in a loop. I don't think this is allowed. [[User:Rai282|Rai282]] ([[User talk:Rai282|talk]]) 10:17, 12 June 2026 (UTC)
722qj0cwkxzpd77unzrs75b0essil4p
Z19151
0
40791
282351
132358
2026-06-11T18:53:33Z
Ameisenigel
44
de
282351
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19151"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19135",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19135",
"Z19135K1": {
"Z1K1": "Z13518",
"Z13518K1": "25"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "not a valid number for this function"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Moroccan Arabic ordinal (up to 10), input = 25"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "25 ist ungültig"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
6ayd2505aguqp1jbupq1456xoboghuz
Z19152
0
40792
282352
132361
2026-06-11T18:54:03Z
Ameisenigel
44
de
282352
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19152"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19135",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19135",
"Z19135K1": {
"Z1K1": "Z13518",
"Z13518K1": "10"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "عاشر"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Moroccan Arabic ordinal (up to 10), input = 10"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "10 ist عاشر"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
fzdmucj83dx0sx2zi050x3mi4ggw6qe
Z19153
0
40793
282353
138866
2026-06-11T18:54:38Z
Ameisenigel
44
de
282353
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19153"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z18541",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z18541",
"Z18541K1": "ur"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "urak"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "ur becomes urak"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Plural von ur ist urak"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
i8a5z5s1h9dnakhmdccsupw1jbd9fhy
Z19154
0
40794
282354
138867
2026-06-11T18:55:06Z
Ameisenigel
44
de
282354
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19154"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z18541",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z18541",
"Z18541K1": "zur"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "zurak"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "zur becomes zurak"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Plural von zur ist zurak"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
c32xj1bon0uozqaikhgnx8j5dj96t4l
Z19156
0
40910
282355
253748
2026-06-11T18:58:14Z
Ameisenigel
44
de
282355
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19156"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z19156K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "x"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "x"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z19156"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "inverse tangent"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "arc tangente"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Arkustangens"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"tangent",
"python",
"javascript",
"inverse",
"inverse tangent",
"tan",
"atan",
"atan()",
"math"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "atan(x)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "arctan(x)"
}
]
}
}
2n6fg4uzs4tjfvhwpvq7aj6i54vn821
Z19157
0
40911
282356
253753
2026-06-11T18:58:59Z
Ameisenigel
44
de
282356
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19157"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z19156",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z19156(Z19156K1):\n\tmath = __import__('math')\n\treturn str(float(math.atan(int(Z19156K1))))"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "inverse tangent python"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "arc tangente, python"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Arkustangens in Python"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "atan"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Python-Implementierung der Funktion zur Berechnung des Arkustangens"
}
]
}
}
bl6r6svo20z62m109miu7vzboqpu1p5
Z19158
0
40912
282357
253754
2026-06-11T18:59:34Z
Ameisenigel
44
de
282357
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19158"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19156",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19156",
"Z19156K1": {
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "2"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "1.10714872"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Inverse tangent of 2 is 1.10714872"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "arc tangente de 2 vaut 1.10714872"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "arctan(2) = 1.10714872"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
8zah7fyaf3j3qaea7u1xsoqanytxmik
Z19159
0
40913
282358
135076
2026-06-11T19:00:29Z
Ameisenigel
44
de
282358
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19159"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z11328",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z11328( Z11328K1, Z11328K2 ) {\n\tconst a = Z11328K1.length === Z11328K2.length ? \n\t\t[...Z11328K1].reduce((a, c, i) =\u003E a + (c !== Z11328K2.at(i)), 0)\n\t : -1;\n\treturn Number(a)\n}"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "hamming distance using reduce, JavaScript"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Hamming-Abstand zwischen 2 Zeichenk., JavaScript"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
q91z2bj76x8ftgmj3w2v9cv4eii24cm
Z19160
0
40914
282359
195498
2026-06-11T19:00:57Z
Ameisenigel
44
de
282359
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19160"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z15560",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z15560( Z15560K1 ) {\n\treturn `${Math.round((Z15560K1 - 32) * 5/9)}`;\n}"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Fahrenheit to Celsius - JavaScript"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Fahrenheit in Celsius in JavaScript"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
f41x21va5eaucdcyu9w1we0e4ieyiqu
Z19677
0
42420
282427
260287
2026-06-12T00:53:47Z
七八年再来一次
10776
282427
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19677"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z19677",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z16659",
"Z3K2": "Z19677K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "sign"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Vorzeichen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "চিহ্ন"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "signe"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "semn"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "segno"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "знак"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "चिह्न"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "סימן"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "teken"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "znaménko"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
{
"Z1K1": "Z3",
"Z3K1": "Z13518",
"Z3K2": "Z19677K2",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "numerator"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Zähler"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "লব"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "numérateur"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "numărător"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "numeratore"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "бројилац"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "अंश"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מספר טבעי (מחולק; מונה)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "teller"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "čitatel"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
{
"Z1K1": "Z3",
"Z3K1": "Z13518",
"Z3K2": "Z19677K3",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "denominator"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Nenner"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "হর"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "dénominateur"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "numitor"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "denominatore"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "именилац"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "हर"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מספר טבעי (מחלק; מכנה)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "noemer"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "jmenovatel"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
],
"Z4K3": "Z101",
"Z4K4": "Z19686",
"Z4K5": "Z21971",
"Z4K6": "Z21930",
"Z4K7": [
"Z46",
"Z19678",
"Z19701"
],
"Z4K8": [
"Z64",
"Z19681",
"Z19702"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Rational number"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "rationale Zahl"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "Rationellt tal"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1037",
"Z11K2": "Número racional"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1099",
"Z11K2": "Rational Zuel"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "মূলদ সংখ্যা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "nombre rationnel"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Număr rațional"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "Рациональное число"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Numero razionale"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1051",
"Z11K2": "rationaaliluku"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "有理数"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1643",
"Z11K2": "유리수"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "Рационалан број"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "परिमेय संख्या"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מספר רציונלי"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "عدد كسري"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "rationaal getal"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Racionální číslo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "有理数"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"rational",
"fraction",
"division"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1664",
"Z31K2": [
"Z6",
"rațional",
"împărțire",
"fracție"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"razionale",
"frazione",
"rapporto"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1181",
"Z31K2": [
"Z6",
"разломак",
"рационални број"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1820",
"Z31K2": [
"Z6",
"अपूर्णांक"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1186",
"Z31K2": [
"Z6",
"יחס",
"שבר",
"חלוקה",
"מנה",
"רציונלי"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1157",
"Z31K2": [
"Z6",
"rationaal"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"Zlomek",
"Podíl"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1645",
"Z31K2": [
"Z6",
"分数",
"除法"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "a signed ratio of two Natural numbers (equivalent to a ratio of integers) not necessarily with the simplest representation "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1592",
"Z11K2": "positivt eller negativt tal som kan uttryckas som en kvot av två heltal"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "দুটি প্রাকৃতিক সংখ্যার একটি চিহ্ন যুক্ত অনুপাত (পূর্ণসংখ্যার অনুপাতের সমতুল্য)।"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "un rapport signé de deux nombres naturels (équivalent à un rapport d'entiers) pas nécessairement avec la représentation la plus simple"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "un raport cu semn dintre două numere naturale (sau întregi), nu neapărat în reprezentarea cea mai simplificată"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Una frazione con un segno e due numeri naturali come numeratore e denominatore. La frazione non è necessariamente semplificata."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "означен однос два природна броја, не нужно најпростија репрезентација броја"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "दो प्राकृतिक संख्याओं का एक चिह्नयुक्त अनुपात (पूर्णांकों के एक अनुपात के समकक्ष), मगर ज़रूरी नहीं सबसे सरल प्रतिनिधित्व में"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1186",
"Z11K2": "מספר שהוא מנה בין שני מספרים שלמים, לאו דווקא בצורתו המצומצמת."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "getekende verhouding van twee natuurlijke getallen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "znaménkový podíl dvou Přirozených čísel (odpovídající podílu dvou celých čísel), nikoli nutně v základním tvaru"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "两个自然数(即两个整数)的有符号比值,其表示形式未必最简"
}
]
}
}
mcrcc0ie7ciej53ngcqz5idjh8xmk3g
Z20825
0
45493
282429
277082
2026-06-12T01:05:03Z
七八年再来一次
10776
282429
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z20825"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z20825",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z20825",
"Z3K2": "Z20825K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "identity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "identité"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Identität"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "identità"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "identitas"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "पहचान"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
],
"Z4K3": "Z101",
"Z4K4": "Z21439",
"Z4K7": [
"Z46"
],
"Z4K8": [
"Z64"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Floating point special value"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "valeur spéciale de nombre à virgule flottante"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "spezieller Wert für Gleitkommazahl"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1005",
"Z11K2": "Особое значение с плавающей запятой"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "ফ্লোট সংখ্যা বিশেষ মান"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Valore speciale di virgola mobile"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1181",
"Z11K2": "посебна вредност броја са покретним зарезом"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "फ़्लोटिंग पॉइंट विशेष मान"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Speciální hodnota s plovoucí řádovou čárkou"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "浮点特值"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Některá ze speciálních hodnot v reprezentacích čísel pomocí plovoucí řádové čárky"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "an enumeration Type used as part of the ZObject encoding of floating-point numbers: [[Z20838]]"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "一种用于浮点数:[[Z20838]] Z 对象编码的枚举类型"
}
]
}
}
drfp6mniw3z2pg8x5kk8g5optljld4o
Z22112
0
48906
282402
261999
2026-06-11T23:40:18Z
七八年再来一次
10776
将 Kleenean 翻译为三值逻辑
282402
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z22112"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z22112",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z22112",
"Z3K2": "Z22112K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "identity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "identité"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Identität"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরিচয়"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "identità"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "पहचान"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "identiteit"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "identitate"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
],
"Z4K3": "Z101",
"Z4K4": "Z22120",
"Z4K7": [
"Z46",
"Z22116",
"Z22118"
],
"Z4K8": [
"Z64",
"Z22464",
"Z22117"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Kleenean"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "triléen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "dreiwertig"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "ثلاثي التكافئ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "ত্রিমূলক যুক্তি"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Kleeneano"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "क्लीनियन"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "kleeneaan "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Kleeneho logická hodnota"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Tip ternar"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "三值逻辑"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"three-valued logic",
"trivalent truth values",
"truth values with uncertainty"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1001",
"Z31K2": [
"Z6",
"كلينياني"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"ক্লীনিয়ান",
"ত্রিমাত্রিক যুক্তি"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1004",
"Z31K2": [
"Z6",
"logique ternaire",
"trois états",
"trinaire",
"trivalente",
"triléenne"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1820",
"Z31K2": [
"Z6",
"तीन-मानीय तर्क"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"Tříhodnotová logika"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1664",
"Z31K2": [
"Z6",
"Kleenean, ternar, tip logic ternar, tip trivalent"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1645",
"Z31K2": [
"Z6",
"三元逻辑",
"三价逻辑"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "valeurs logiques consistant en vrai, faux et peut-être"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Un valore logico che può assumere 3 valori (Vero, Falso, Forse)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "logic values consisting of true, false and maybe"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "'सच', 'झूठ' और 'शायद' वाला तर्क मान"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "driewaardige logica, driewaardige waarheidswaarden, waarheidswaarden met onzekerheid"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Typ pro tříhodnotovou logiku, jedna z: pravda, nepravda, možná"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "valori logice constând în adevărat, fals și probabil"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "包含真、假和或的逻辑"
}
]
}
}
7qxbr46p5wr6yeds62h79wp7si3juka
282426
282402
2026-06-12T00:50:45Z
七八年再来一次
10776
282426
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z22112"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z22112",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z22112",
"Z3K2": "Z22112K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "identity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "identité"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Identität"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "পরিচয়"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "identità"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "पहचान"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "identiteit"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "identitate"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
],
"Z4K3": "Z101",
"Z4K4": "Z22120",
"Z4K7": [
"Z46",
"Z22116",
"Z22118"
],
"Z4K8": [
"Z64",
"Z22464",
"Z22117"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Kleenean"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "triléen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "dreiwertig"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1001",
"Z11K2": "ثلاثي التكافئ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "ত্রিমূলক যুক্তি"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Kleeneano"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "क्लीनियन"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "kleeneaan "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Kleeneho logická hodnota"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "Tip ternar"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "三值"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"three-valued logic",
"trivalent truth values",
"truth values with uncertainty"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1001",
"Z31K2": [
"Z6",
"كلينياني"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"ক্লীনিয়ান",
"ত্রিমাত্রিক যুক্তি"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1004",
"Z31K2": [
"Z6",
"logique ternaire",
"trois états",
"trinaire",
"trivalente",
"triléenne"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1820",
"Z31K2": [
"Z6",
"तीन-मानीय तर्क"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"Tříhodnotová logika"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1664",
"Z31K2": [
"Z6",
"Kleenean, ternar, tip logic ternar, tip trivalent"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1645",
"Z31K2": [
"Z6",
"三元逻辑",
"三价逻辑",
"三值逻辑"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "valeurs logiques consistant en vrai, faux et peut-être"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Un valore logico che può assumere 3 valori (Vero, Falso, Forse)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "logic values consisting of true, false and maybe"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "'सच', 'झूठ' और 'शायद' वाला तर्क मान"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "driewaardige logica, driewaardige waarheidswaarden, waarheidswaarden met onzekerheid"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Typ pro tříhodnotovou logiku, jedna z: pravda, nepravda, možná"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1664",
"Z11K2": "valori logice constând în adevărat, fals și probabil"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "包含真、假和或的逻辑"
}
]
}
}
54js9en2joeeqfbgd1m21nsd7ne6iqu
Wikifunctions:NLG SIG
4
49539
282340
235099
2026-06-11T15:17:00Z
DVrandecic (WMF)
7
/* Upcoming meeting */
282340
wikitext
text/x-wiki
This page is for coordinating the work of the NLG SIG - the '''natural language generation special interest group''' on Wikifunctions.
This page is just a starter page. It aims to collect links to documents by the group, plan upcoming meetings of the group, and help the members coordinate.
You want to join? Anyone can become a member. Enter your wiki user name below to become a publicly listed member. Work happens on-wiki, off-wiki and through meetings.
== Upcoming meeting ==
The next meeting of the NLG SIG is scheduled for Tuesday, June 16, 2026 at 16:00-17:00 UTC ([https://zonestamp.toolforge.org/1781625600 timestamp] on [[toolforge:]]) via [https://meet.google.com/xzn-kqer-mah Google Meet]. The meeting may not be [[commons:category:Abstract Wikipedia NLG SIG meetings|recorded]] (depends on who is there). If you want to add something to the agenda, please feel free to do so below:
* Talking about and working with [[Wikifunctions:Status_updates/2026-05-15#News_in_Types:_way_forward_for_natural_language_generation_types|the new types for NLG]]
== Past meetings ==
=== 2025-11-18 ===
[[User:Mahir256|Mahir256]]: exploring design choices from the [https://umr4nlp.github.io/web/ Uniform Meaning Representation] compared to Ninai/Udiron ([https://elemwala.toolforge.org/static/nlgsig-nov2025.html slides])
=== 2025-09-23 ===
The fifth meeting of the NLG SIG was held on Tuesday, September 23, 2025 at 16:00-17:00 UTC on [https://meet.google.com/xzn-kqer-mah Google Meet]. [[:File:Abstract Wikipedia NLG SIG Meeting 2025-09.webm|The meeting was recorded.]]
* Denny Vrandečić, Representing abstract content
=== 2025-07-15 ===
The fourth meeting of the NLG SIG was held on Tuesday, July 15, 2025 at 16:00-17:00 UTC on [https://meet.google.com/xzn-kqer-mah Google Meet]. [[:File:Abstract Wikipedia NLG SIG Meeting 2025-07.webm|The meeting was recorded.]]
* [[User:CMassaro (WMF)|Cory Massaro]] led a session on our upcoming work to demonstrate NLG content and create sentences in many languages.
=== 2025-06-17 ===
The third meeting of the NLG SIG was held on Tuesday, June 17, 2025 at 16:00-17:00 UTC on [https://meet.google.com/xzn-kqer-mah Google Meet]. The meeting was not recorded due to low attendance.
* [[User:Mahir256|Mahir256]]: exploring sources for constructs used in abstract content ([https://elemwala.toolforge.org/static/nlgsig-17june.html slides])
=== 2025-03-18 ===
The second meeting of the NLG SIG was held on [https://zonestamp.toolforge.org/1742313600 Tuesday, March 18, 2025, at 16:00-17:00 UTC] on [https://meet.google.com/xzn-kqer-mah Google Meet]. The meeting was recorded.
* [[User:Mahir256|Mahir256]]: Finding lexemes for concepts, and actual and potential fallback mechanisms for this task ([https://elemwala.toolforge.org/static/nlgsig-18march.html slides])
=== 2025-02-18 ===
The first meeting of the NLG SIG was held on [https://zonestamp.toolforge.org/1739894400 Tuesday, February 18, 2025, at 16:00-17:00 UTC] using [https://meet.google.com/xzn-kqer-mah Google Meet]. The meeting was recorded.
* [[User:Denny|Denny]]: [[Wikifunctions:Type proposals/Syntactic type|Representing lexemes on Wikifunctions]]
== Documents ==
Collect lists of interesting documents by and for the group. Can be on-wiki or external references.
* [[Wikifunctions:Status updates/2024-10-17]] begins with an article about abstract content constructors by [[User:Mahir256|Mahir256]].
== Publicly listed members ==
# [[user:Denny|Denny]]
# [[user:Arlo Barnes|Arlo Barnes]]
# [[User:Jérémy-Günther-Heinz Jähnick|Jérémy-Günther-Heinz Jähnick]]
# [[User:Mahir256|Mahir256]]
# [[User:VIGNERON|VIGNERON]] ([[User talk:VIGNERON|talk]])
# [[User:Fexpr|Fexpr]]
# [[User:King ChristLike|King ChristLike]]
# [[User:GrounderUK|GrounderUK]]
jkpzk72gvlfwkaur0kggsk0kdnf1zvf
282341
282340
2026-06-11T15:17:23Z
DVrandecic (WMF)
7
/* Upcoming meeting */
282341
wikitext
text/x-wiki
This page is for coordinating the work of the NLG SIG - the '''natural language generation special interest group''' on Wikifunctions.
This page is just a starter page. It aims to collect links to documents by the group, plan upcoming meetings of the group, and help the members coordinate.
You want to join? Anyone can become a member. Enter your wiki user name below to become a publicly listed member. Work happens on-wiki, off-wiki and through meetings.
== Upcoming meeting ==
The next meeting of the NLG SIG is scheduled for Tuesday, June 16, 2026 at 16:00-17:00 UTC ([https://zonestamp.toolforge.org/1781625600 timestamp] on [[toolforge:]]) via [https://meet.google.com/xzn-kqer-mah Google Meet]. The meeting may not be [[commons:category:Abstract Wikipedia NLG SIG meetings|recorded]] (depends on who is there). If you want to add something to the agenda, please feel free to do so below:
* [[User:DVrandecic (WMF)|Denny]]: Talking about and working with [[Wikifunctions:Status_updates/2026-05-15#News_in_Types:_way_forward_for_natural_language_generation_types|the new types for NLG]]
== Past meetings ==
=== 2025-11-18 ===
[[User:Mahir256|Mahir256]]: exploring design choices from the [https://umr4nlp.github.io/web/ Uniform Meaning Representation] compared to Ninai/Udiron ([https://elemwala.toolforge.org/static/nlgsig-nov2025.html slides])
=== 2025-09-23 ===
The fifth meeting of the NLG SIG was held on Tuesday, September 23, 2025 at 16:00-17:00 UTC on [https://meet.google.com/xzn-kqer-mah Google Meet]. [[:File:Abstract Wikipedia NLG SIG Meeting 2025-09.webm|The meeting was recorded.]]
* Denny Vrandečić, Representing abstract content
=== 2025-07-15 ===
The fourth meeting of the NLG SIG was held on Tuesday, July 15, 2025 at 16:00-17:00 UTC on [https://meet.google.com/xzn-kqer-mah Google Meet]. [[:File:Abstract Wikipedia NLG SIG Meeting 2025-07.webm|The meeting was recorded.]]
* [[User:CMassaro (WMF)|Cory Massaro]] led a session on our upcoming work to demonstrate NLG content and create sentences in many languages.
=== 2025-06-17 ===
The third meeting of the NLG SIG was held on Tuesday, June 17, 2025 at 16:00-17:00 UTC on [https://meet.google.com/xzn-kqer-mah Google Meet]. The meeting was not recorded due to low attendance.
* [[User:Mahir256|Mahir256]]: exploring sources for constructs used in abstract content ([https://elemwala.toolforge.org/static/nlgsig-17june.html slides])
=== 2025-03-18 ===
The second meeting of the NLG SIG was held on [https://zonestamp.toolforge.org/1742313600 Tuesday, March 18, 2025, at 16:00-17:00 UTC] on [https://meet.google.com/xzn-kqer-mah Google Meet]. The meeting was recorded.
* [[User:Mahir256|Mahir256]]: Finding lexemes for concepts, and actual and potential fallback mechanisms for this task ([https://elemwala.toolforge.org/static/nlgsig-18march.html slides])
=== 2025-02-18 ===
The first meeting of the NLG SIG was held on [https://zonestamp.toolforge.org/1739894400 Tuesday, February 18, 2025, at 16:00-17:00 UTC] using [https://meet.google.com/xzn-kqer-mah Google Meet]. The meeting was recorded.
* [[User:Denny|Denny]]: [[Wikifunctions:Type proposals/Syntactic type|Representing lexemes on Wikifunctions]]
== Documents ==
Collect lists of interesting documents by and for the group. Can be on-wiki or external references.
* [[Wikifunctions:Status updates/2024-10-17]] begins with an article about abstract content constructors by [[User:Mahir256|Mahir256]].
== Publicly listed members ==
# [[user:Denny|Denny]]
# [[user:Arlo Barnes|Arlo Barnes]]
# [[User:Jérémy-Günther-Heinz Jähnick|Jérémy-Günther-Heinz Jähnick]]
# [[User:Mahir256|Mahir256]]
# [[User:VIGNERON|VIGNERON]] ([[User talk:VIGNERON|talk]])
# [[User:Fexpr|Fexpr]]
# [[User:King ChristLike|King ChristLike]]
# [[User:GrounderUK|GrounderUK]]
2rp267djlt85oybprslenkbotkk28u0
Z23166
0
51879
282349
218979
2026-06-11T17:50:43Z
Jdforrester (WMF)
4
Edit to purge cache.
282349
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z23166"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z23136",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z23136( Z23136K1, Z23136K2 ) {\n\tlet first_default = '';\n\tlet Multiple_default = '';\n\tlet English_default = '';\n\tlet claims = Z23136K1.Z6001K5;\n\tfor (const claim of claims) {\n\t\tlet PID = claim.Z6003K2.Z6092K1;\n\t\tif (PID == 'P5061') {\n\t\t\tif (claim.Z6003K4.Z6040K1.Z9K1!='Z6043') { //reject deprecated claims\n\t\t\t\tlet langcode = claim.Z6003K3.Z11K1.Z60K1;\n\t\t\t\tif (langcode == Z23136K2.Z60K1) return claim.Z6003K3.Z11K2;\n\t\t\t\tif (langcode == \"mul\") Multiple_default = claim.Z6003K3.Z11K2;\n\t\t\t\tif (langcode == \"en\") English_default = claim.Z6003K3.Z11K2;\n\t\t\t\tif (first_default == '') first_default = claim.Z6003K3.Z11K2;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tWikifunctions.Debug(Multiple_default);\n\tWikifunctions.Debug(English_default);\n\tWikifunctions.Debug(first_default);\n\t\n\tif (Multiple_default != '')\treturn(Multiple_default);\n\tif (English_default != '')\treturn(English_default);\n\tif (first_default != '')\treturn(first_default);\n\treturn ('');\n}"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "unit symbol of item, JavaScript"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
2o4lr41czix0v7v1kg9kmf9lgxej43g
Z6884
0
56620
282415
277183
2026-06-12T00:34:18Z
七八年再来一次
10776
282415
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z6884"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z4",
"Z17K2": "Z6884K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Wikidata reference type"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Wikidata-Referenz-Typ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "tipo dei riferimenti Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1272",
"Z11K2": "vrst upućivanja"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "উইকিউপাত্ত উল্লেখের ধরণ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "विकिडेटा संदर्भ का प्रकार"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "Wikidata-referentietype"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "typ referencí na Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": " 维基数据引用类型"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z6884K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of Wikidata references"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Liste von Wikidata-Referenzen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "lista di riferimenti Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1272",
"Z11K2": "nabroj"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "liste de références Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "উইকিউপাত্ত উল্লেখসমূহের তালিকা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "विकिडेटा संदर्भों की सूची"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "lijst met Wikidata-referenties"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "seznam referencí na Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": " 维基数据引用列表"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z6884K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "ZID of result type (assigned by WikiLambda)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "ZID des resultierenden Typs"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "ZID del tipo risultante (assegnato da WikiLambda)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1272",
"Z11K2": "ZID tipa (automatski napunjeno)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "ফলাফলের ধরনের ZID (উইকিল্যাম্বডা দ্বারানির্ধারিত)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "परिणाम के प्रकार का ZID"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "ZID van het resultaattype (toegewezen door WikiLam"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "ZID výsledného typu (přiřazuje WikiLambda)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": " 结果类型的 Z 编码(由 WikiLambda 分配)"
}
]
}
}
],
"Z8K2": "Z4",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z6984"
],
"Z8K5": "Z6884"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Typed enum of Wikidata references"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "typisierte Aufzählung von Wikidata-Referenzen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Enumerazione tipizzata di riferimenti Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1272",
"Z11K2": "nabroj upućivanja na Wikipodatci"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "énumération typée de références Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "উইকিউপাত্ত উল্লেখসমূহের ধরনযুক্ত এনাম"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1820",
"Z11K2": "विकिडेटा संदर्भों की प्रकारयुक्त सूची"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1157",
"Z11K2": "getypeerde opsomming van Wikidata-referenties"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Výčtový typ referencí na Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": " 维基数据引用类型的枚举"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"lightweight enum",
"enumerate type",
"enumerated type",
"type from enumerated values"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"typ z vyjmenovaných hodnot"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1645",
"Z31K2": [
"Z6",
"轻型枚举、枚举类型、枚举值类型、基于枚举值的类型"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Generický typ pro výčtové typy, jejichž možné hodnoty jsou definované seznamem referencí na položky Wikidat"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "used to construct enumeration types, see [[Help:Wikidata#Lightweight enumerations]]"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": " 用于构建枚举类型,参见[[Help:Wikidata#Lightweight enumerations]]"
}
]
}
}
bddlgwee5r499h6urmpm9rwqile9lty
User:99of9/Sandbox2
2
58825
282444
193933
2026-06-12T01:21:38Z
99of9
1622
proposed
282444
wikitext
text/x-wiki
*[[:f:Z36038]]
*[[:f:Z36200]]
*[[:f:Z36218]]
*[[:f:Z31921]]
*[[:f:Z33068]]
*[[:f:Z35672]]
*[[:f:Z32145]]
*[[:f:Z33690]]
*[[:f:Z36083]]
*[[:f:Z32179]]
4vulsm7821y0uuwfu8kxgqkazl043dn
Wikifunctions:Type/zh-hans
4
62326
282247
282199
2026-06-11T12:57:33Z
七八年再来一次
10776
282247
wikitext
text/x-wiki
<languages/>{{Technical documentation navbox}}
维基函数中每一对象均有类属。类决定该类对象如何建构,以及它们有何意味。类还用于指定函数的参数以及函数返回什么。
目前,有以下几种 <del>{{formatnum:{{NUMBEROFTYPES}}}}</del> ~{{formatnum:100}} 类型可用于指定函数的参数和返回类型:
* {{Z+|Z1}}
* {{Z+|Z4}}
* {{Z+|Z8}}
* {{Z+|Z23}}
* {{Z+|Z21}}
* {{Z+|Z40}}
* {{Z+|Z22112}}
* {{Z+|Z881}} (这含参即它是一返回一个类的函数)
* {{Z+|Z882}} (含参)
* {{Z+|Z883}} (含参)
* {{Z+|Z6884}} (含参,用于定义[[Special:MyLanguage/WF:Function_model#Lightweight_enumerations|轻型枚举]])
<span id="Numeric_types"></span>
=== 数据类型 ===
* {{Z+|Z80}}
* {{Z+|Z13518}}
* {{Z+|Z16659}}
* {{Z+|Z16683}}
* {{Z+|Z19677}}
* {{Z+|Z20825}}
* {{Z+|Z20838}}
* {{Z+|Z33198}}
<span id="Language_and_text_types"></span>
=== 语言与文本类型 ===
* {{Z+|Z86}}
* {{Z+|Z6}}
* {{Z+|Z60}}
* {{Z+|Z11}}
* {{Z+|Z31}}
* {{Z+|Z12}}
* {{Z+|Z32}}
* {{Z+|Z89}}
* {{Z+|Z14293}}
* {{Z+|Z14294}}
<span id="Grammatical_feature_enums"></span>
==== 语法范畴枚举 ====
* {{Z+|Z28516}} (轻型枚举)
* {{Z+|Z28519}} (轻型枚举)
* {{Z+|Z25502}} (轻型枚举)
* {{Z+|Z25340}} (轻型枚举)
* {{Z+|Z25501}} (轻型枚举)
* {{Z+|Z26935}} (轻型枚举)
* {{Z+|Z26934}} (轻型枚举)
* {{Z+|Z28215}} (轻型枚举)
* {{Z+|Z28515}} (轻型枚举)
* {{Z+|Z28517}} (轻型枚举)
* {{Z+|Z32792}} (轻型枚举)
* {{Z+|Z32789}} (轻型枚举)
* {{Z+|Z27970}} (轻型枚举)
* {{Z+|Z28518}} (轻型枚举)
* {{Z+|Z28520}} (轻型枚举)
* {{Z+|Z33568}} (轻型枚举)
* {{Z+|Z27971}} (轻型枚举)
<span id="Calendar_types"></span>
=== 历法种类 ===
<span id="Gregorian_calendar"></span>
==== 格里历 ====
* {{Z+|Z17402}}
* {{Z+|Z16098}}
* {{Z+|Z17813}}
* {{Z+|Z20159}}
* {{Z+|Z20342}}
* {{Z+|Z20420}}
<span id="Hijri_(Islamic)_calendar"></span>
==== 伊斯兰历 ====
* {{Z+|Z26582}} (轻型枚举)
<span id="Igbo_calendar"></span>
==== 伊博历 ====
* {{Z+|Z16927}}
<span id="Wikidata_types"></span>
=== 维基数据类型 ===
{{see also|Help:Wikidata#Statement model}}
* {{Z+|Z6030}}
<span id="Wikidata_entities"></span>
==== 维基数据实体 ====
* {{Z+|Z6001}}
* {{Z+|Z6002}}
* {{Z+|Z6004}}
* {{Z+|Z6005}}
* {{Z+|Z6006}}
<span id="Wikidata_references"></span>
==== 维基数据引用 ====
* {{Z+|Z6091}}
* {{Z+|Z6092}}
* {{Z+|Z6094}}
* {{Z+|Z6095}}
* {{Z+|Z6096}}
<span id="Wikidata_statements"></span>
==== 维基数据声明 ====
* {{Z+|Z6020}}
* {{Z+|Z6007}}
* {{Z+|Z6003}}
* {{Z+|Z6040}}
* {{Z+|Z6008}}
* {{Z+|Z6039}}
<span id="Wikidata_datatypes"></span>
=== 维基数据数据类型 ===
* {{Z+|Z6010}}
* {{Z+|Z6011}}
* {{Z+|Z6060}}
* {{Z+|Z6061}}
* {{Z+|Z6062}} (轻型枚举)
* {{Z+|Z6063}} (轻型枚举)
* {{Z+|Z6064}}
<span id="Miscellaneous"></span>
=== 杂项 ===
* {{Z+|Z27951}} (轻型枚举)
* {{Z+|Z28579}}
* {{Z+|Z33827}} (轻型枚举)
<span id="WikiLambda_structure"></span>
=== WikiLambda 结构 ===
* {{Z+|Z2}}
* {{Z+|Z9}}
* {{Z+|Z3}}
* {{Z+|Z39}}
* {{Z+|Z46}}
* {{Z+|Z64}}
* {{Z+|Z17}}
* {{Z+|Z18}}
* {{Z+|Z20}}
* {{Z+|Z14}}
* {{Z+|Z16}}
* {{Z+|Z61}}
<span id="Evaluation"></span>
==== 评估 ====
* {{Z+|Z7}}
* {{Z+|Z22}}
* {{Z+|Z5}}
* {{Z+|Z50}}
* {{Z+|Z99}}
其他类型也可被使用但或存漏洞。至于全类型的清单,参阅[[Special:ListObjectsByType/Z4|所有类型的总表]](不过该列表不包括返回类型的[[Special:ListObjectsByType/Z7|持久调用]],例如轻型枚举,也不包括泛型,例如{{Z|881}})。
可以在 [[Wikifunctions:Type proposals]] 上提议新类。
<span id="See_also"></span>
== 参阅 ==
* {{ll|Wikifunctions:Function model}}
[[Category:Technical documentation{{#translation:}}|Type]]
7ru7kbzmgb7hz2a7fzek54sos8v6oio
Z26955
0
62700
282552
281947
2026-06-12T06:55:29Z
99of9
1622
Removed Z33161 from the approved list of implementations
282552
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z26955"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z26955K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Predicate (concept expressing verb)"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z26955K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "agent (doing the action), ~subject in English"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z26955K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "patient (receiving the action), ~object in English"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z26955K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z26956",
"Z26958",
"Z33383",
"Z33384",
"Z33480",
"Z33481",
"Z33482",
"Z33483",
"Z33484",
"Z33485",
"Z33486",
"Z33487",
"Z33488",
"Z33489",
"Z33491",
"Z33490",
"Z33516",
"Z33517",
"Z33518",
"Z33519",
"Z33520",
"Z33521",
"Z33522",
"Z33523",
"Z33524",
"Z33525",
"Z33526",
"Z33527",
"Z33528",
"Z33529",
"Z33530",
"Z33531",
"Z33533",
"Z33532",
"Z33534",
"Z33535",
"Z33536",
"Z33537",
"Z33538",
"Z33539"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z26955"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "(DO NOT USE) SPO sentence (singulars in present)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Make a sentence such as \"English is a language.\" Where the subject and object are singular, and the tense is present. This function does not currently work in any language."
}
]
}
}
mwyyh59g00b4dushznhmlptan3je7x0
Z27410
0
63811
282421
277915
2026-06-12T00:47:09Z
99of9
1622
nudge
282421
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z27410"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z27410K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "lessema"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "lexeme"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "語彙素"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z27410K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "caratteristiche grammaticali"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "grammatical features"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "文法的特徴"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z27411",
"Z27412",
"Z27415",
"Z27426",
"Z27548",
"Z32505",
"Z33018"
],
"Z8K4": [
"Z14",
"Z34946",
"Z27414"
],
"Z8K5": "Z27410"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "miglior stringa di rappr. di lessema compatibile"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "better matching representation string from lexeme"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "より良く一致する表現の語彙素文字列"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"string from lexeme",
"lexeme to string",
"lexeme and grammar to string"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Restituisce la stringa di rappresentazione di lessema che è più compatibile con le caratteristiche grammaticali date."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "The representation string of the forms that better fits the given grammatical features. Tries for best form with other criteria, the grammatical matching is priority. w/fallback Z32504, multiL Z34943"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "指定された文法的特徴によりよく一致する語形の表現文字列を返します。"
}
]
}
}
emy89bvw82xj9n9tv616fprjj65t3yh
282422
282421
2026-06-12T00:47:17Z
WikiLambda system
3
Updated the implementation list (see [[Help:Wikifunctions/Implementation_ordering_and_choosing|About implementation selection]])
282422
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z27410"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z27410K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "lessema"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "lexeme"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "語彙素"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z27410K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "caratteristiche grammaticali"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "grammatical features"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "文法的特徴"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z27411",
"Z27412",
"Z27415",
"Z27426",
"Z27548",
"Z32505",
"Z33018"
],
"Z8K4": [
"Z14",
"Z27414",
"Z34946"
],
"Z8K5": "Z27410"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "miglior stringa di rappr. di lessema compatibile"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "better matching representation string from lexeme"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "より良く一致する表現の語彙素文字列"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"string from lexeme",
"lexeme to string",
"lexeme and grammar to string"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Restituisce la stringa di rappresentazione di lessema che è più compatibile con le caratteristiche grammaticali date."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "The representation string of the forms that better fits the given grammatical features. Tries for best form with other criteria, the grammatical matching is priority. w/fallback Z32504, multiL Z34943"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1830",
"Z11K2": "指定された文法的特徴によりよく一致する語形の表現文字列を返します。"
}
]
}
}
9ykb9pbyryi6tj6zhkfsh8i5kjk96q0
Z28016
0
65058
282396
281761
2026-06-11T22:57:45Z
99of9
1622
nudge
282396
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z28016"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z28016K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "subject"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "sujet"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Subjekt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "subjekt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "subjekto"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z28016K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "role"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "rôle"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Rolle"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "role"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "rolo"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z28016K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "dependency"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "dépendance"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Abhängigkeit"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "kontext"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "de kio"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z28016K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "langue"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Sprache"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "jazyk"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "lingvo"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z28017",
"Z28033",
"Z35054",
"Z36126"
],
"Z8K4": [
"Z14",
"Z28032",
"Z28034"
],
"Z8K5": "Z28016"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "defining role sentence (monolingual)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "phrase de définition de rôle"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Satz, um etwas mit einer Rolle zu definieren"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "věta definiční role"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "frazo pri rolo"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"is the",
"is the of",
"of",
"X is the Y of Z",
"defining role sentence",
"is the one and only"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1004",
"Z31K2": [
"Z6",
"est le, est le de, de, X est le Y de Z"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1430",
"Z31K2": [
"Z6",
"X ist das Y von Z"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"[X] je [Y] [Z]"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1576",
"Z31K2": [
"Z6",
"[X] estas la [Y] de [Z]",
"estas la"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Sentences of the type \"Paris is the capital of France.\" or \"Elisabeth II is the mother of Charles III.\" (with a definite article, like \"the\")"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "Phrases du type \"Paris est la capitale de la France.\" ou \"Elisabeth II est la mère de Charles III.\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Sätze wie „Berlin ist die Hauptstadt von Deutschland“"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Sestaví větu definující konkrétní entitu pomocí její role, např. „Paříž je hlavní město Francie.“ nebo „Alžběta II. je matka Karla III.“"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "Por krei frazojn kiel \"Parizo estas la ĉefurbo de Francujo\" aŭ \"Elizabeto la 2-a estas la patrino de Karlo la 3-a\""
}
]
}
}
nzill0wyfnnc7xykkvfdgkcgzz1exxx
282399
282396
2026-06-11T23:05:15Z
99of9
1622
Added Z36298 to the approved list of implementations
282399
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z28016"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z28016K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "subject"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "sujet"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Subjekt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "subjekt"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "subjekto"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z28016K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "role"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "rôle"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Rolle"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "role"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "rolo"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z28016K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "dependency"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "dépendance"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Abhängigkeit"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "kontext"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "de kio"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z28016K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "langue"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Sprache"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "jazyk"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "lingvo"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z28017",
"Z28033",
"Z35054",
"Z36126"
],
"Z8K4": [
"Z14",
"Z28032",
"Z28034",
"Z36298"
],
"Z8K5": "Z28016"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "defining role sentence (monolingual)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "phrase de définition de rôle"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Satz, um etwas mit einer Rolle zu definieren"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "věta definiční role"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "frazo pri rolo"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"is the",
"is the of",
"of",
"X is the Y of Z",
"defining role sentence",
"is the one and only"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1004",
"Z31K2": [
"Z6",
"est le, est le de, de, X est le Y de Z"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1430",
"Z31K2": [
"Z6",
"X ist das Y von Z"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"[X] je [Y] [Z]"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1576",
"Z31K2": [
"Z6",
"[X] estas la [Y] de [Z]",
"estas la"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Sentences of the type \"Paris is the capital of France.\" or \"Elisabeth II is the mother of Charles III.\" (with a definite article, like \"the\")"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "Phrases du type \"Paris est la capitale de la France.\" ou \"Elisabeth II est la mère de Charles III.\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Sätze wie „Berlin ist die Hauptstadt von Deutschland“"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Sestaví větu definující konkrétní entitu pomocí její role, např. „Paříž je hlavní město Francie.“ nebo „Alžběta II. je matka Karla III.“"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1576",
"Z11K2": "Por krei frazojn kiel \"Parizo estas la ĉefurbo de Francujo\" aŭ \"Elizabeto la 2-a estas la patrino de Karlo la 3-a\""
}
]
}
}
eim90ia3m66seu86w6f2jk3rb25u7d0
Z31581
0
76247
282397
252310
2026-06-11T23:01:07Z
GrounderUK
50
extended to 33 items
282397
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z31581"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z31580",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z31580",
"Z31580K1": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z1"
},
"K1": [
"Z13518",
{
"Z1K1": "Z13518",
"Z13518K1": "1"
},
{
"Z1K1": "Z13518",
"Z13518K1": "2"
},
{
"Z1K1": "Z13518",
"Z13518K1": "3"
},
{
"Z1K1": "Z13518",
"Z13518K1": "4"
},
{
"Z1K1": "Z13518",
"Z13518K1": "5"
},
{
"Z1K1": "Z13518",
"Z13518K1": "6"
},
{
"Z1K1": "Z13518",
"Z13518K1": "7"
},
{
"Z1K1": "Z13518",
"Z13518K1": "8"
},
{
"Z1K1": "Z13518",
"Z13518K1": "9"
},
{
"Z1K1": "Z13518",
"Z13518K1": "10"
},
{
"Z1K1": "Z13518",
"Z13518K1": "11"
},
{
"Z1K1": "Z13518",
"Z13518K1": "12"
},
{
"Z1K1": "Z13518",
"Z13518K1": "13"
},
{
"Z1K1": "Z13518",
"Z13518K1": "14"
},
{
"Z1K1": "Z13518",
"Z13518K1": "15"
},
{
"Z1K1": "Z13518",
"Z13518K1": "16"
},
{
"Z1K1": "Z13518",
"Z13518K1": "17"
},
{
"Z1K1": "Z13518",
"Z13518K1": "18"
},
{
"Z1K1": "Z13518",
"Z13518K1": "19"
},
{
"Z1K1": "Z13518",
"Z13518K1": "20"
},
{
"Z1K1": "Z13518",
"Z13518K1": "21"
},
{
"Z1K1": "Z13518",
"Z13518K1": "22"
},
{
"Z1K1": "Z13518",
"Z13518K1": "23"
},
{
"Z1K1": "Z13518",
"Z13518K1": "24"
},
{
"Z1K1": "Z13518",
"Z13518K1": "25"
},
{
"Z1K1": "Z13518",
"Z13518K1": "26"
},
{
"Z1K1": "Z13518",
"Z13518K1": "27"
},
{
"Z1K1": "Z13518",
"Z13518K1": "28"
},
{
"Z1K1": "Z13518",
"Z13518K1": "29"
},
{
"Z1K1": "Z13518",
"Z13518K1": "30"
},
{
"Z1K1": "Z13518",
"Z13518K1": "31"
},
{
"Z1K1": "Z13518",
"Z13518K1": "32"
},
{
"Z1K1": "Z13518",
"Z13518K1": "33"
}
],
"K2": [
"Z13518"
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z19586",
"Z19586K2": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z1"
},
"K1": [
"Z13518"
],
"K2": [
"Z13518",
{
"Z1K1": "Z13518",
"Z13518K1": "33"
},
{
"Z1K1": "Z13518",
"Z13518K1": "32"
},
{
"Z1K1": "Z13518",
"Z13518K1": "31"
},
{
"Z1K1": "Z13518",
"Z13518K1": "30"
},
{
"Z1K1": "Z13518",
"Z13518K1": "29"
},
{
"Z1K1": "Z13518",
"Z13518K1": "28"
},
{
"Z1K1": "Z13518",
"Z13518K1": "27"
},
{
"Z1K1": "Z13518",
"Z13518K1": "26"
},
{
"Z1K1": "Z13518",
"Z13518K1": "25"
},
{
"Z1K1": "Z13518",
"Z13518K1": "24"
},
{
"Z1K1": "Z13518",
"Z13518K1": "23"
},
{
"Z1K1": "Z13518",
"Z13518K1": "22"
},
{
"Z1K1": "Z13518",
"Z13518K1": "21"
},
{
"Z1K1": "Z13518",
"Z13518K1": "20"
},
{
"Z1K1": "Z13518",
"Z13518K1": "19"
},
{
"Z1K1": "Z13518",
"Z13518K1": "18"
},
{
"Z1K1": "Z13518",
"Z13518K1": "17"
},
{
"Z1K1": "Z13518",
"Z13518K1": "16"
},
{
"Z1K1": "Z13518",
"Z13518K1": "15"
},
{
"Z1K1": "Z13518",
"Z13518K1": "14"
},
{
"Z1K1": "Z13518",
"Z13518K1": "13"
},
{
"Z1K1": "Z13518",
"Z13518K1": "12"
},
{
"Z1K1": "Z13518",
"Z13518K1": "11"
},
{
"Z1K1": "Z13518",
"Z13518K1": "10"
},
{
"Z1K1": "Z13518",
"Z13518K1": "9"
},
{
"Z1K1": "Z13518",
"Z13518K1": "8"
},
{
"Z1K1": "Z13518",
"Z13518K1": "7"
},
{
"Z1K1": "Z13518",
"Z13518K1": "6"
},
{
"Z1K1": "Z13518",
"Z13518K1": "5"
},
{
"Z1K1": "Z13518",
"Z13518K1": "4"
},
{
"Z1K1": "Z13518",
"Z13518K1": "3"
},
{
"Z1K1": "Z13518",
"Z13518K1": "2"
},
{
"Z1K1": "Z13518",
"Z13518K1": "1"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "reversed: Natural numbers (typed list)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
9z2jngpvkqdx4xjubqbgdk9810h0wr8
Z32179
0
78338
282438
258432
2026-06-12T01:19:09Z
99of9
1622
282438
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z32179"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z17K2": "Z32179K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of items"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z32186"
],
"Z8K4": [
"Z14",
"Z32184"
],
"Z8K5": "Z32179"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "unordered list with item tagging"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"HTML unordered list with item tagging"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "takes a list of the contents of HTML fragment list items, wraps each in \u003Cli\u003E\u003C/li\u003E, then creates an HTML unordered \"bullet\" list"
}
]
}
}
l1uoa4u9rds3dw9fsra07czin0gd8mk
Z32428
0
78671
282545
267336
2026-06-12T06:26:04Z
99of9
1622
Added Z36309 to the approved list of test cases
282545
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z32428"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z32428K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "article"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z32428K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z32429",
"Z32595",
"Z33772",
"Z36309"
],
"Z8K4": [
"Z14",
"Z32594",
"Z32597",
"Z32430",
"Z33771"
],
"Z8K5": "Z32428"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "abstract wikilink"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"link",
"Abstract Wikipedia article hyperlink"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a link to an Abstract Wikipedia article with a label in the preferred language or the first available fallback. Use Z33848 for sentence case."
}
]
}
}
ptrmk9rqipukwsp3zc4bocgre8j7dwf
282547
282545
2026-06-12T06:28:24Z
WikiLambda system
3
Updated the implementation list (see [[Help:Wikifunctions/Implementation_ordering_and_choosing|About implementation selection]])
282547
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z32428"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z32428K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "article"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z32428K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z32429",
"Z32595",
"Z33772",
"Z36309"
],
"Z8K4": [
"Z14",
"Z33771",
"Z32597",
"Z32594",
"Z32430"
],
"Z8K5": "Z32428"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "abstract wikilink"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"link",
"Abstract Wikipedia article hyperlink"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a link to an Abstract Wikipedia article with a label in the preferred language or the first available fallback. Use Z33848 for sentence case."
}
]
}
}
684ki70ga07a6qcae8vmn0tb70rtwmn
282549
282547
2026-06-12T06:30:43Z
WikiLambda system
3
Updated the implementation list (see [[Help:Wikifunctions/Implementation_ordering_and_choosing|About implementation selection]])
282549
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z32428"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z32428K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "article"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z32428K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z32429",
"Z32595",
"Z33772",
"Z36309"
],
"Z8K4": [
"Z14",
"Z32594",
"Z33771",
"Z32597",
"Z32430"
],
"Z8K5": "Z32428"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "abstract wikilink"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"link",
"Abstract Wikipedia article hyperlink"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a link to an Abstract Wikipedia article with a label in the preferred language or the first available fallback. Use Z33848 for sentence case."
}
]
}
}
4te12f9u519mm5ineoewkjr4vhna2zi
282551
282549
2026-06-12T06:31:27Z
WikiLambda system
3
Updated the implementation list (see [[Help:Wikifunctions/Implementation_ordering_and_choosing|About implementation selection]])
282551
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z32428"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z32428K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "article"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z32428K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z32429",
"Z32595",
"Z33772",
"Z36309"
],
"Z8K4": [
"Z14",
"Z33771",
"Z32597",
"Z32594",
"Z32430"
],
"Z8K5": "Z32428"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "abstract wikilink"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"link",
"Abstract Wikipedia article hyperlink"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a link to an Abstract Wikipedia article with a label in the preferred language or the first available fallback. Use Z33848 for sentence case."
}
]
}
}
684ki70ga07a6qcae8vmn0tb70rtwmn
Z32594
0
78844
282548
259956
2026-06-12T06:29:57Z
99of9
1622
switch to QID backstop after mul
282548
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z32594"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z32428",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27873",
"Z27873K1": {
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z32428K1"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z32428K2"
}
}
},
"Z27873K2": "a",
"Z27873K3": [
"Z6",
"href"
],
"Z27873K4": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"Z10000K1": "https://abstract.wikipedia.org/wiki/",
"Z10000K2": {
"Z1K1": "Z7",
"Z7K1": "Z803",
"Z803K1": {
"Z1K1": "Z39",
"Z39K1": "Z6091K1"
},
"Z803K2": {
"Z1K1": "Z18",
"Z18K1": "Z32428K1"
}
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "abstract wikilink, Composition: Z24766"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
re5yyudook72b1xl5d1fkmatnv6y41a
Z32597
0
78847
282550
259980
2026-06-12T06:31:11Z
99of9
1622
switch to QID backstop after mul
282550
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z32597"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z32428",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27873",
"Z27873K1": {
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z32428K1"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z32428K2"
}
}
},
"Z27873K2": "a",
"Z27873K3": [
"Z6",
"href"
],
"Z27873K4": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"Z10000K1": "https://abstract.wikipedia.org/wiki/",
"Z10000K2": {
"Z1K1": "Z7",
"Z7K1": "Z803",
"Z803K1": {
"Z1K1": "Z39",
"Z39K1": "Z6091K1"
},
"Z803K2": {
"Z1K1": "Z18",
"Z18K1": "Z32428K1"
}
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "abstract wikilink, compose qid label"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
g3ooj17glssh5xy3ya5i2sxhtrk9ivo
Z32981
0
79511
282564
277260
2026-06-12T08:40:19Z
Hakimi97
198
282564
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z32981"
},
"Z2K2": {
"Z1K1": "Z14294",
"Z14294K1": [
"Z14293",
{
"Z1K1": "Z14293",
"Z14293K1": "Z32244",
"Z14293K2": "Z33034"
},
{
"Z1K1": "Z14293",
"Z14293K1": "Z32985",
"Z14293K2": [
"Z60",
"Z1844",
"Z1226"
]
},
{
"Z1K1": "Z14293",
"Z14293K1": "Z36310",
"Z14293K2": [
"Z60",
"Z1531"
]
}
],
"Z14294K2": "Z32244"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "config for non-defining role sentence"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "konfigurace pro větu nedefiniční role"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"config for non-defining role sentence"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "konfigurace pro Z32982"
}
]
}
}
hxulz9hceixw3jqtau9f36vxto6t4yn
Wikifunctions:Type proposals/Syntactic unit
4
79606
282345
275533
2026-06-11T17:37:41Z
Mahir256
38
282345
wikitext
text/x-wiki
''This is one of a few type proposals based on the Ninai/Udiron project, and thus should be considered alongside others similarly marked--some of which will be listed on the talk page of this proposal.''
''This proposal and others related to it are contingent on certain functionalities being present on Abstract Wikipedia/Wikifunctions, as listed under the section "Converting to code" below and related sections listed at the [[Wikifunctions:Type proposals/Semantic unit|semantic unit proposal]]. Please do not hesitate to ask for clarifications about those sections! The author of this proposal is not inherently better than you, so there is no need to simply defer to his reasoning (à la "he knows what he's doing, so I'll just trust it")!''
== Summary ==
This type holds a syntactic unit that holds a base word/stem of some kind, with links to any dependents (as construed in [[:w:en:dependency grammar]]s).
For more on this particular construct (named 'Catena' in my own work), see the first paragraph of Section 2.2, and the first part of section 4.2.1, of {{Q|130478475}}, as well as [https://gitlab.com/mahir256/udiron/-/blob/main/udiron/base/catena.py?ref_type=heads#L49 the implementation of this construct in Udiron].
== Uses ==
* This is one of two fundamental data structures (and a few less fundamental but still important others) that will become necessary for abstract content to truly be abstract. Rather than process lists/sets of strings in assembling a sentence, these units can be manipulated [https://gitlab.com/mahir256/udiron/-/blob/main/udiron/base/rendering.py and then rendered] according to functions that can be defined per language.
* Many of the instance methods listed in the Udiron implementation linked above would need to be defined as functions here for this to work.
* This is intended to correspond with the notion of a '[[:w:en:Catena (linguistics)|catena]]' in dependency grammar, and more specifically to a unit used in [https://universaldependencies.org Universal Dependencies] ([[:d:Wikidata:Lexicographical data/Universal Dependencies|with a mapping to Wikidata here]]). (To help make this just a little less mysterious for this mostly non-linguistic audience, however, I've named this type proposal 'syntactic unit'.)
== Structure ==
* lexeme: The lexeme which this syntactic unit represents.
** See the note under 'sense' below.
* language: The language to be applied when this syntactic unit is rendered.
** Note that languages in Ninai/Udiron are pairs of language item and language code; this requires that https://phabricator.wikimedia.org/T344170 be resolved.
* sense: The specific meaning of the lexeme which this syntactic unit represents.
** The lexeme and the sense are both included separately because details present at both levels will be needed downstream; as but mere examples, the grammatical gender of a lexeme does not reside on its senses, and if a particular grammatical feature is required when using a particular sense then that feature won't be marked on the lexeme level.
** This and 'lexeme' are not references simply because this unit does not have to represent something that is on wikidata.org; if a custom lexeme/sense were created by some other function, that should be usable here as well.
* inflections: The inflections to be applied in rendering this syntactic unit.
** This was inspired by the lists of grammatical features on Wikidata lexeme forms, though the values present in this list do not have to be actual such features on a form of the lexeme.
* config: Specific settings for rendering this syntactic unit may be applied here, potentially altering every aspect of the rendering process.
** The current implementation of such a configuration object (introduced because it is not clear whether the Python notion of 'keyword arguments' will be replicated in Wikifunctions) is found [https://gitlab.com/mahir256/udiron/-/blob/main/udiron/base/functionconfig.py on this page].
** This object could be a dedicated configuration type, or it could be a typed map from strings to objects as given in the example below.
* left_dependents: The dependents of this syntactic unit that are ''logically'' preceding this one, each with some relationship to this unit.
* right_dependents: The dependents of this syntactic unit that are ''logically'' following this one, each with some relationship to this unit.
** For example, in a phrase like "the little old lady who lived in a shoe", the root of this phrase is "lady" (since that phrase at its core denotes a lady).
** Since "the", "little", and "old" precede "lady" when spoken, those words are considered left dependents (''not a single functional unit'', since those words are but a determiner and two adjectives).
** Since "who lived in a shoe" follows "lady" when spoken, those words (forming a single functional unit—a relative clause) are considered a ''single'' right dependent.
*** That right dependent has its own structure: its root is "live", its left dependent is "who", and its right dependent is "in a shoe".
*** ''That'' right dependent has a root "shoe" and two left dependents "in" and "a".
** Udiron currently groups these into a tuple of lists 'dependents'.
* id: A unique identifier for the syntactic unit.
** This was introduced in Udiron (and maintained simply by having a counter that is incremented each time a new syntactic unit is created) in order to deal with the consequences of all objects being immutable in Wikifunctions; if this did not exist, then any time any of the other fields of this syntactic unit was modified, its internal identifier and that of other equally immutable objects that would also need to be modified (such as other syntactic units that have this syntactic unit as a dependent) and comparisons between objects before and after a modification would become considerably more complicated and difficult to track.
=== Example values ===
The English phrase "he saw me" (without punctuation!) would consist of three syntactic units whose fields are defined below:
* [[:d:Lexeme:L485|L485]], Z1002, [[:d:Lexeme:L485#S1|L485-S1]], ({{Q|131105}}), {}, [], [], "theseentitiesneedsomesortofidscheme"
* [[:d:Lexeme:L185|L185]], Z1002, [[:d:Lexeme:L185#S1|L185-S1]], ({{Q|1392475}}, {{Q|21714344}}, {{Q|110786}}), {}, [(''bullet point above'', {{Q|164573}})], [(''bullet point below'', {{Q|2990574}})], "comeupwithanidschemeforthesethings"
* [[:d:Lexeme:L485|L487]], Z1002, [[:d:Lexeme:L487#S1|L487-S1]], ({{Q|1233197}}), {}, [], [], "someidschemethatneedstobecomeupwith"
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "syntactic unit",
"lexeme": "Wikidata lexeme",
"language": "language",
"sense": "Wikidata lexeme sense",
"inflections": "typed list(Wikidata item reference)",
"config": "typed map(string, object)",
"left_dependents": "typed list(typed pair(syntactic unit, Wikidata item reference))",
"right_dependents": "typed list(typed pair(syntactic unit, Wikidata item reference))",
"id": "string",
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Zxyz",
"ZxyzK1": "Z6005",
"ZxyzK2": "Z60",
"ZxyzK3": "Z6006",
"ZxyzK4": "Z881(Z6091)",
"ZxyzK5": "Z883(Z60, Z1)",
"ZxyzK6": "Z881(Z882(syntactic unit, Z6091))",
"ZxyzK7": "Z881(Z882(syntactic unit, Z6091))",
"ZxyzK8": "Z6",
}</syntaxhighlight>
|}
== Validator ==
The validator ensures that the lexeme, language, and sense are all valid realizations of those types, all inflections in the inflection set are Wikidata item IDs, and the configuration and dependents lists are well-formed according to their type definitions.
== Identity ==
Equality between syntactic units implies that the components all compare equal, per https://gitlab.com/mahir256/udiron/-/blob/main/udiron/base/catena.py?ref_type=heads#L126 . (Note that the "id" value is ''not'' considered as part of this check.)
== Converting to code ==
=== Python ===
Ideally this would be directly portable from https://gitlab.com/mahir256/udiron/-/blob/main/udiron/base/catena.py , since it has been designed to make such a transfer easier, although due to lack of confirmation from the Abstract Wikipedia team of the points of section 2.4 of {{Q|130478475}} this degree of easiness has not been made certain.
== Display function ==
Perhaps something similar to the 'abbr' function at https://gitlab.com/mahir256/udiron/-/blob/main/udiron/base/catena.py?ref_type=heads#L365 could be used.
== Read function ==
No one should be inputting these as strings; they should be created exclusively by other functions that seek to generate language and perform syntactic manipulations.
== Comments ==
*{{S}}. A question: what is the difference between left and righ dependencies? [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 19:23, 12 April 2026 (UTC)
*:@[[User:Mahir256|Mahir256]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 19:23, 12 April 2026 (UTC)
*:{{re|Dv103}} I added a hopefully more illustrative example above. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 21:47, 12 April 2026 (UTC)
*::Thanks. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 05:31, 13 April 2026 (UTC)
* @[[User:Mahir256|Mahir256]] Another question: how do you encode syntactic units without a lexeme? (Like a person's name, the title of a book...) [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 12:00, 14 April 2026 (UTC)
*:{{re|Dv103}} I sort of allude to this in the notes under the 'lexeme' and 'sense' members: "if a custom lexeme/sense were created by some other function, that should be usable here as well". As such proper names would need to be wrapped by functions in 'pseudo-lexemes' before they could be included in any syntactic structure. (An example of a function that assembles a lexeme for downstream use in the syntactic tree is one [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/graph/__init__.py#L28 that assembles a person's name from the 'given name' and 'surname' items linked to it].) [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 15:29, 14 April 2026 (UTC)
*::@[[User:Mahir256|Mahir256]] Another question: why put an entire lexeme sense, instead of a lexeme sense reference? The lexeme already contains the sense, so it would be duplicate information.
*::Even for "on-the-fly lexemes", the ID fields need to be filled, so we just could just insert the sense in the lexeme, assign it an ID, and then just reference it in the "sense" key of this type.
*::I'm asking this because on Wikifunctions, moving around duplicate information means that there is an additional cost in the convertion of the values every time an implementation is called. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 15:59, 16 May 2026 (UTC)
*:::{{re|Dv103}} The main reason for this is when a calque needs to be constructed from another lexeme, or when the parts of a compound lexeme need to be moved to discontinuous places (requiring that a lexeme be split based on its {{P|5238}} statements), some features noted on the original lexeme's senses may be needed. (Some examples I have in mind include {{P|9971}} values when calquing a verb, handling separable verbs in Germanic languages, or the inflection of idioms with fixed complements.) [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 16:16, 16 May 2026 (UTC)
*::::Makes sense. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 16:34, 16 May 2026 (UTC)
inqxcd0vq7mmrybkt9jvpfqslmze346
Wikifunctions:Type proposals/Semantic unit
4
79607
282342
275929
2026-06-11T17:18:00Z
Mahir256
38
282342
wikitext
text/x-wiki
''This is one of a few type proposals based on the Ninai/Udiron project, and thus should be considered alongside others similarly marked--some of which will be listed on the talk page of this proposal.''
''This proposal and others related to it are contingent on certain functionalities being present on Abstract Wikipedia/Wikifunctions, as listed under the sections "Required global mappings", "Converting to code", and "Read function" below. Please do not hesitate to ask for clarifications about those sections! The author of this proposal is not inherently better than you, so there is no need to simply defer to his reasoning (à la "he knows what he's doing, so I'll just trust it")!''
== Summary ==
This type holds semantic units, very broadly construed, containing other semantic units as members.
These units can represent any number of semantically meaningful entities ([https://journals.sagepub.com/doi/full/10.3233/SW-243564#sec-2-2 §2.2]), such as
# '''concepts''' (''[[:d:User:Mahir256/language-generation/basic-notions#Concepts|examples!]]'') (whether nominal, such as {{Q|482994}}, or adjectival, such as {{Q|138866260}}, or adverbial, such as {{Q|6004788}});
# dependent '''phrases''' (whether subordinating, such as [[:d:Q131451405|"although the dog ran away"]], or attributive (''[[:d:User:Mahir256/language-generation/secondary-predication|examples!]]''), such as [[:d:Q126200060|concrete brick wall]]);
# independent '''clauses''' (whether verbal, such as [[:d:Q179080|"he saw me"]], or nonverbal (''[[:d:User:Mahir256/language-generation/nonverbal-predication|examples!]]''), such as [[:d:Q124317532|"the boat is mine"]]);
# full-on '''sentences''' (whether [[:d:Q135512218|by joining two clauses together that apply simultaneously]] or [[:d:Q124317561|through simply stating the simple existence of a concept]]);
# '''containers for those''' (perhaps a [[:d:Q196626|context]] in which things referred to in the text need to be specified, or where particular aspects of the text's [[:d:Q594739|framing]] need to apply); or
# '''signals for any of them''' (perhaps to mark an [[:d:Q1773882|identifier]] on a semantic unit, or to mark something to be [[:d:Q65044042|emphasized]] or raised to be a sentence's [[:d:Q22338337|topic]]).
'''All the semantic unit needs is a type designation''' (named 'Constructor type' in the Structure below) '''for the rendering process to handle it properly.'''
For more on this particular construct (named 'Constructor' in my own work), see
* the second paragraph of Section 2.2, all of Section 2.3, and section 4.1.1, of {{Q|130478475}}; as well as
* [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/constructor.py#L21 the implementation of this construct in Ninai] (and adjacent files within that folder); and
* descriptions of semantic unit definitions in Ninai, such as [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/constructors/nonverbals.py the nonverbal constructions] (and adjacent files within that folder).
== Uses and motivations ==
* This is one of two fundamental data structures (the other being [[Wikifunctions:Type proposals/Syntactic unit|''syntactic units'']], plus a few less fundamental but still important others) that will become necessary for abstract content to truly be abstract.
** The distinction between 'semantic units' and 'syntactic units' is directly inspired by established linguistic theories that separate layers of language processing, namely semantics and syntax; semantics is more clearly focused on ''organizing meaning'', while syntax is clearly more focused on ''organizing words''. ''Content authors'' should only organize meanings; ''rendering functions'' should only organize words.
** Rather than assembling factual information directly using function calls, these units can be composed and manipulated [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/constructorrenderer.py and then rendered] according to functions that can be defined per language (see "Required global mappings" below).
*** The rendering functions for individual semantic unit types can be set up to provide necessary fallback values for particular semantic features in situations where the content or any context doesn't suggest those features to reflect in the output.
** The terms linked from the six types of possible semantic units above are general, language-independent linguistic semantic notions; while this proposal does not inherently ''prescribe'' their use, they have been chosen in the example pages above based on analyses of constructs both within and across languages, with those analyses given as references on those items, so from the get-go notions distinguished in more typologically diverse languages will already be handle-able with those items.
*** For example, rather than broadly defining a "noun complement" or "adjective complement" (which refer to syntactic categories in their names!), the attributive indication that something is also something else might be called a {{Q|126200060}} <small>(as defined by e.g. {{Q|126124086}})</small>.
*** For example, rather than calling a semantic unit "although" or "but" (both of which have their nuances, the latter having multiple varied meanings, and in either case tying them to particular English words) or even "concession" (still a somewhat broad term), the link between a sentence and a statement such as "although the dog ran away" might be called a {{Q|131451405}} <small>(as defined by e.g. {{Q|131451287}})</small>.
*** For example, rather than calling a semantic unit "there is" (particularly since the equivalents of this phrase in other languages have more meanings than the one simply stating the existence of something), a simple declaration of that existence might be called a {{Q|124317561}} <small>(as defined by e.g. {{Q|124316703}})</small>.
* Many of the instance methods listed in the Ninai implementation of this construct would need to be defined as functions here for this to work.
* This corresponds with the notion of a ''''Constructor'''' described in lots of prior writings about Abstract Wikipedia, such as '''[https://dl.acm.org/doi/10.1145/3425778 from the original Abstract Wikipedia paper]'''. (To help make this just a little less mysterious for this mostly non-linguistic audience, however, I've named this type proposal 'semantic unit'.)
== Structure ==
The structure is intentionally very simple, to prevent an excess of ''Wikifunctions types'' for different types of semantic units, and to keep the core steps for processing nested semantic units as streamlined as possible.
* '''Constructor type''': The type of semantic unit that the object represents.
** (Because all Wikifunctions types must go through a proposal process—much like this one!—there is necessarily an indeterminate delay between when one can be conceived of and when one can be used in abstract content. Any modifications to Wikifunctions types likely will also need to go through that process. By simplifying the semantic unit structure as much as possible, the need to propose a type for any new or modified semantic concept is bypassed, such that, among those able to modify the mappings listed under "Required global mappings" below, anyone can define their own semantic units and use them immediately.)
* '''Core arguments''': Mapping of names of core arguments to actual <u>semantic unit</u> arguments.
** This basically holds a list of expected input parameters for a semantic unit when it is used; when written in the syntax listed under "Read function" below, the first argument is treated as the first core argument, the second the second, and so on.
** Here the argument names do not have to be Wikidata item IDs, though it is recommended for language-neutral semantic unit definitions that they should be such IDs.
* '''Scope arguments''': List of other <u>semantic unit</u> arguments provided that have not been mapped to core argument names.
** These can correspond to '''subordinating clauses''' ("when I went to the store"), '''relative clauses''' ("that went to the store"), and '''signals''' ([this unit is the topic of the sentence!], [this unit should be emphasized!])
** Most definitions of semantic units are unlikely to treat those kinds of semantic units as ''core'' arguments, given that they can often be removed from an expression without ''necessarily'' affecting sentence structure.
* '''Other arguments''': List of arguments that are neither core nor scope arguments, primarily those that are not semantic units at all.
** If a semantic unit does not take another semantic unit as input, then the arguments it needs to process are stored here.
*** (For example, {{Q|151885}} takes an entity ID as an argument; since this entity ID is not itself a semantic unit, it is stored in other_arguments).
** The notions of 'core', 'scope', and 'other' are handled by ''argument filters'' defined for different ''Constructor types'' (since they filter inputs into one of those three groups).
*** (The logic behind some of them in Ninai may be found [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py on this page].)
*** ''Note that argument filters <u>can</u> be parameterized themselves; it is not likely that those will proliferate, since semantic unit <u>renderers</u> will end up being more diverse in actual argument transformation anyways!''
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "semantic unit",
"constructor_type": "Wikidata item reference",
"core_arguments": "typed map(string, semantic unit)",
"scope_arguments": "typed list(semantic unit)",
"other_arguments": "typed list(object)"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Zxyz",
"ZxyzK1": "Z6005",
"ZxyzK2": "Z883(Z6, Zxyz)",
"ZxyzK3": "Z881(Zxyz)",
"ZxyzK4": "Z881(Z1)",
}</syntaxhighlight>
|}
{{collapse top|Excluded from structure above per comments below}}
* '''Child identifiers''':
** If a semantic unit has as an immediate descendant a semantic unit with constructor_type {{Q|1773882}}, then the string provided by the {{Q|1773882}} semantic unit appears in this mapping and that of its parent semantic units.
** This mapping holds paths that need to be taken to reach, from a top-level semantic unit, other nested semantic units that directly contain {{Q|1773882}} semantic units. (More on these may be found in the Ninai implementation.)
** (''Unless the abstract content author wishes to specifically name a semantic unit'', '''this will be empty by default'''!)
* '''Identifier''': Identifier assigned to this semantic unit.
** This is intended more to allow other semantic units to reference this one, no matter how separated--whether laterally or in depth--they are from this one. ''It does not serve as a mandatory link between a semantic unit and either its direct parent or its direct children!''
** See also the note under the 'id' field in [[Wikifunctions:Type proposals/Syntactic unit|the syntactic unit proposal]].
{{collapse bottom}}
=== Required global mappings ===
(taken from [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/constructorinterfaces.py#L9 the Ninai implementation])
* Mapping from '''Constructor types''' to '''argument filter functions''':
*:Typed map(Wikidata item reference, Function)
** Example: {{Q|124316841}} → (some function resembling [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L23 this one])
* Mapping from '''Constructor types''' to '''lists of names''' for core arguments:
*:Typed map(Wikidata item reference, Typed list(String))
** Example: {{Q|124316841}} → <nowiki>[</nowiki>{{Q|164573}}, {{Q|16889133}}<nowiki>]</nowiki>
* Mapping from '''Constructor types''' to any parent '''Constructor types''':
*:Typed map(Wikidata item reference, Typed list(Wikidata item reference))
** Example: {{Q|124316841}} → <nowiki>[</nowiki>{{Q|124316813}}<nowiki>]</nowiki>
* Mapping from '''Constructor type'''-'''language pairs''' to '''rendering functions''':
*:Typed map(Typed pair(Wikidata item reference, language), Function)
** Example: ({{Q|124316841}}, {{Z|1227}}) → (some function resembling [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/renderers/norwegian.py#L59 this one])
'''Once an entry in each of those four mappings is provided for a semantic unit, rendering abstract content using that semantic unit in a target language becomes possible!'''
* Creating and modifying functions is something more people can do, and adding entries to mappings is rather cheap!
* If a '''''semantic unit'' type''''s core argument list, or its parent semantic unit types, needs to be changed, just
*# change the rendering function for that type to handle both 'before' and 'after' situations;
*# make the core argument/parent semantic unit definition changes, then
*# (if you've adjusted abstract content using that semantic unit) remove the 'before' situation handling from the rendering function!
*# '''(no new or modified [[Z4|''Wikifunctions'' types]] necessary!)'''
* <small>(If one wanted to build an ''entirely'' parallel set of semantic unit types to the ones commonly in use at a given point, nothing stops them from adding those types, and the necessary functions for handling them, to the mappings above so that they can be processed with the same general rendering steps!)</small>
There are a few more global mappings that [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/renderers/__mappings__.py could be listed here] that perform other steps noted in ([https://journals.sagepub.com/doi/full/10.3233/SW-243564#sec-5 §5]), but they are not that different from the ones above, and most only need to be filled in under special circumstances.
=== Example values ===
The content corresponding to the phrase "Thriller is an album" (assigning a class to a proper noun) consists of the following top level semantic unit:
* {{Q|124316841}}, {''core argument mapping''}, [], []
The elements of ''core argument mapping'' are the following string-semantic unit pairs:
* Q164573: ({{Q|151885}}, {}, [], ["Q44320"])
* Q16889133: ({{Q|151885}}, {}, [], ["Q482994"])
More on the semantic unit types and their arguments may be found [[:d:User:Mahir256/language-generation|on this set of pages being compiled]].
== Validator ==
The validator ensures that the constructor_type is a valid Wikidata item reference, the identifier is a valid string, the core argument mapping and scope argument list consist of valid semantic units, and the child_identifier mapping is coherent with respect to the argument lists.
== Identity ==
Equality between semantic units implies that the components all compare equal. (Note that unlike with syntactic units, the "identifier" value ''is'' considered as part of this check.)
== Converting to code ==
=== Python ===
Ideally this would be directly portable from https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/constructor.py , since it has been designed to make such a transfer easier, although due to lack of confirmation from the Abstract Wikipedia team of the points of section 2.4 of {{Q|130478475}} this degree of easiness has not been made certain.
== Display function ==
The Ninai implementation [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/constructor.py?ref_type=heads#L97 does have a string representation], but that may not be the best for displaying in a web interface like this one.
== Read function ==
These should in general be composed using the Lisp-like syntax described [[Wikifunctions:Status_updates/2024-10-17|in a previous newsletter]], rather than as individual units.
Slightly modifying from ([https://journals.sagepub.com/doi/full/10.3233/SW-243564#sec-2-3 §2.3]):
* The specific choice to represent all semantic units as similarly structured nested function-like objects is largely inspired by the parenthesized syntax of Lisp-like programming languages, and to a lesser extent by Wikifunctions’ ‘composition’ syntax for defining functions entirely in terms of other functions.
* This is intended to make abstract content highly declarative, since the intended meaning of nested semantic units is frequently sufficiently clear on a surface reading of their constructor types and arguments.
* This choice also allows abstract content to be effectively homoiconic, since modifications to that content within the content itself become a possibility [...].
* It also ensures, from an implementation standpoint, that differences in how Constructors are handled are dealt with purely by functions at different stages in the overall rendering process.
The content given in the example above could be indicated as follows:
["Q124316841",
["Q151885", "Q44320"],
["Q151885", "Q482994"]]
== Alternatives ==
* [[Wikifunctions:Type proposals/Syntactic table]]
* [[Wikifunctions:Type proposals/Abstract sentence]]
== Example ==
[[/Douglas Adams|Here]] is a practical example of how Syntactic utits could be used to represent abstract content.
== Comments ==
* {{s}} as proposer (''not something I'd generally find necessary, but since it's part of the template for whatever reason, I don't want to confuse anyone''). [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 23:36, 8 April 2026 (UTC)
*:A question: why is "other_arguments" a typed list, and not a typed map? Wouldn't it be better to have the possibility to name the arguments? [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 20:55, 9 April 2026 (UTC)
*:@[[User:Mahir256|Mahir256]] I have a question and a couple of suggestions:
*:# Why ''signals'' are stored in the '''Scope arguments''' field? Why force them to be of type Semantic unit?
*:# Mapping from Constructor type-language pairs to rendering functions (the last required global mapping), in practice would be better to be of type:
*:#:{{Z|Z883}} ({{Z|Z6091}}, {{Z|Z14294}})
*:#:(since {{Z|Z14294}} is already widely used, and allows to better group language varieties under a single handling function, when necessary)
*:# The output of the display function should be a valid input of the read function; a read function should be able to input all the possible valid values, and if two values are different, the display function should output two different strings.
*:#* A type does not necessarily need a read and display function, and it is always possible to think about them in a second moment, after the type creation.
*:[[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 09:46, 13 April 2026 (UTC)
*::{{re|Dv103}} "other_arguments" is a typed list simply because I had implemented it that way in Ninai initially; I don't think it would be 'impossible' to make it a typed map, but then there is the question of how to add extra arguments to that map that have not been specifically named (e.g. for a semantic unit that could have an indefinite number of input arguments), and I have not considered it in detail yet.
*:# The treatment of signals as semantic units (and thus their treatment as scope arguments) is more than anything else for uniformity in representation with the rest of the abstract content.
*:# This is probably true; I had only used a typed pair as a key to the rendering function map in order to eliminate an extra map lookup.
*:# I am generally sympathetic to this idea, and am a little disappointed that I didn't think to try implementing this in Ninai yet! [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 14:31, 13 April 2026 (UTC)
*:#:@[[User:Mahir256|Mahir256]]: Part of my confusion was that I thought that "signals" would end up going in the "other_arguments" field, while I see that they would end up in the "scope_arguments" field.
*:#:# In practice, for example, how would you signal the topic? How would you note the number for nominal concepts?
*:#:# We'll see what we will be able to do with the execution time constraints. It's not fundamental to set in stone now this detail, since it is not directly part of the type itself.
*:#:[[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 14:56, 13 April 2026 (UTC)
*:@[[User:Mahir256|Mahir256]] A note about the Python converter: in Wikifunctions, type converters cannot create global variables/functions/classes. This means that the code won't be able to access the classes you define in the constructors (just the objects that you pass to the implementation). This means that implementations won't be able to create new instances of your class, and you can't assume they will be able to return instances of it. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 06:14, 18 May 2026 (UTC)
* <s>{{neutral}}</s> This proposal is an excellent starting point. The thing that does not convince me is the fact that I wouldn't see this proposal applied directly in Wikifunction as it is now, since it is very Python-y and not very Wikifunction-y, meaning that it has a structure that is optimized to be implemented in Python, but does not respect the general spirit of the other Wikifunction types. For example, I'm not convinced by the fact that it uses IDs to link the various Semantic units. Another thing that can be improved: this proposal is a very technical one, and uses a lot of thechnical jargon that can make it quite difficult to understand. Considering that both Wikifunctions and Abstract Wikipedia are collaborative projects, I think that clarity should be a priority. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 09:07, 6 April 2026 (UTC)
** {{re|Dv103}}
*# The Python-iness of it all stemmed from this initially being developed in 2021 and Wikifunctions only coming into existence two years later, during which many development choices were made for operational efficiency and future system flexibility. If you read section 2.4 of the paper I wrote, I have declared the various ways that I've set up the code to make transfer to Wikifunctions implementations possible while making it feasible to develop externally; you're welcome to also ask the Abstract Wikipedia team as well if those assumptions hold.
*# I'd be interested to learn which Wikifunctions types aren't being respected by this proposal; I have given a specification of both semantic and syntactic units in terms of the ZIDs of the types of their components, and do not seek to use or abuse any other types that may have been created entirely ad hoc for some unplanned language generation purpose.
*# (With respect to the use of IDs, they do not 'link the various Semantic units'; they exist for content authors to refer to them when wanting to perform arbitrary transformations on parts of abstract content. This is mainly inspired by the notion of elements having IDs in HTML--an output markup language being used for the Abstract Wikipedia!--so that they can be styled using CSS. Consider a scenario in which semantic unit C is contained within (possibly multiple levels down) semantic unit A. If you want to apply a transformation to C, but are only given A, it should not be the content author's responsibility to figure out where within unit A unit C is; it should be enough to state 'transform the unit with ID "C"' and to let functions handle the traversal.)
*# You do raise a point about jargon; the language I have used is intentionally general so as to prevent as much hardcoding of linguistic concepts within the type as possible. While I can understand ''this'' proposal being a little unclear to the wholly uninitiated user as a consequence, that need not mean functions using these types--which will of course have more tangible, specialized purposes--will also be equally unclear. Nevertheless, I will continue to revise this proposal to add more explanations for some of the choices noted above (in the event someone decides not to read the references I point to), and in any case I am slowly gathering in one place statements I have expressed and ideas I have implemented in [[d:User:Mahir256/language-generation|a subpage of my Wikidata user page]]. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 15:49, 7 April 2026 (UTC)
*#:For the fourth point, my comment was just a suggestion to reword this proposal (since it can be quite difficult to read this proposal while consulting entire external documentations).
*#:For the other points, I am not saying that this proposal technically breaks Wikifunctions; I am just saying that it goes against the (for now) unwritten rules on how usually Wikifunctions types are designed, and it can clash on how in practice Wikifunctions work. For example, the use of IDs requires either that:
*#:* Function creating the objects also generate the unique IDs: it can be quite cumbersome to implement through the use of Wikifunctions' purely functional and deterministic functions.
*#:* IDs are manually created by users: this means that contributors need to manually execute a technical operation, while Wikifunctions should ideally tend towards having a high level interface. This again has not been encoded in a written guideline yet (afaik), but is a principle that has guided the development of Wikifunctions.
*#:The final message is that this proposal needs a bit of rewording and eventually a rethink in order to make it more intuitive. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 21:03, 7 April 2026 (UTC)
*::::{{re|Dv103}} The main structural point I will concede is that identifier choice may be problematic when randomness is not a possibility on Wikifunctions, and have removed it from the structure. ({{Q|1773882}} [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L229 is already a type of semantic unit in Ninai], so as long as that semantic unit can be accessed from other semantic units, I can deal with it not being a direct member.)
*::::I have also made some revisions above in the interests of clarity, with bolding/italicizing/underlining of important parts for the reader without time to spare for some reason (and added daggers (†) in places that correspond with points within my comment of 23:35, 8 April 2026 (UTC) on your proposal); if there is something above that still doesn't seem clear without looking at an external reference, please let me know and I will try to adjust it.
*::::This being said, I question whether 'intuition' should be the absolute first priority for abstract content planning when 1) what is being stored is information intended to be as language-neutral as possible and 2) most people have come into this project more inclined--dare I say clouded?--by the structure of the language that they themselves speak. (Indeed, the current Abstract Wikipedia is running into problems because of a lack of cross-linguistic awareness from a mostly English-speaking userbase projecting their mostly English-speaking biases into abstract content structure development, running into problems with making even their own language work--and that's not counting other editors who don't speak English also raising issues with handling their own languages; what room have they to try fixing things in an environment so tethered by the principles of just one language?) I have at least considered greatly typologically diverse languages for years now—since 2021 when I started coding the system, if not since 2015 when I started my linguistics minor at university—and in my own work have successfully rendered at least simple sentences ''with predicates and modifiers'' in many of them, so I remain confidently optimistic in saying that the effort of getting users to think about representing information in language in a 'zoomed out' way (hat tip to {{re|عُثمان}} for using this phrase in another group) will permit the greater benefits of a simplified structure for representing (parts of) meaning to be reaped. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 23:34, 7 April 2026 (UTC)
*:::::I'd disagree about your remark about intuition: consider that most of the languages of the world are minority languages, with a very limited set of fluent speakers. With a small set of speakers, the quantity of people both linguistically literate and that know how to program that are interested in Abstract Wikipedia can become very limited. For this reason, I think that one of the biggest effort for Abstract Wikipedia to succede in its purposes needs to be put into making contribution as accessible as possible.
*:::::That said, I agree on the need of defining concepts in a language-neutral way. I finally found your [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/constructors/nonverbals.py list of non-verbal predicates], and I'm already in love with it. The problem with how this page is structured now, is that is full of unexplained technical jargon, that can overwhelm the uninitiated. Instead of bolding/italicizing/underlining, a glossary can be of great help. Just consider that most Wikifunctions contributors (me included) have no formal training in linguistics, so this page should be understood without any previous linguistic studies knowledge. (Also, Python code too can be difficult to read, without the previous knowledge on how the rest of the program works).
*:::::As for the actual type itself, I agree with the fundamental philosophy (like the separation of semantic and syntax processing, and all the points in the section "Uses and motivations"), but I still believe that the actual implementation is more idiomatic to Python (with a procedural and partially object-oriented paradigm) and it does not fit too well with Wikifunctions (with a functional paradigm). In particular, it seems to me that it is trying to define a meta-type in order to bypass the type proposal procedure, thus negating all the advantage of the type oriented approach that Wikifunctions is based on. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 19:46, 9 April 2026 (UTC)
*:Now {{s}}. For me, the ideal would be to create an official list of encapsulating constructor functions that are actually called from Abstract Wikipedia that mimic [[Wikifunctions:Type proposals/Abstract sentence]], since this type is still unintuitive to directly work with. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 20:38, 9 April 2026 (UTC)
* <s>{{o}}, per Dv103, their proposal is much better fit to Wikifunctions and much more intuitive. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 13:58, 7 April 2026 (UTC)</s> {{neutral}} I think both proposals have merit and flaws, but I suspect Mahir and Dv understand this better than I do, so I'll let them discuss it amongst themselves and come to a conclusion later. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 15:19, 9 April 2026 (UTC)
* {{s}} since I had been wondering about creating something like this for a while now.<br/>''See: {{Z|33437}}, which I could never finish due to the inability to easily create sentences with configurable dependent clauses.'' —[[User:UndueMarmot|<span style="color:#705ccb;">Undue</span><span style="color:#cfdfa3;background-color:#705ccb;">Marmot</span>]] <small>([[User talk:UndueMarmot|talk]])</small> 14:51, 28 April 2026 (UTC)
* {{s}} Would be extremely important toward allowing external software to use Wikifunctions's NLG tools. An example of such a tool: [[abstract:Abstract Wikipedia:Project chat#AceWiki: Abstract Wikipedia before Abstract Wikipedia?]] [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 15:22, 28 April 2026 (UTC)
skhzfz5h51005qwi2jg3102dtkfmfu6
Wikifunctions:Requests for deletions/Archive/2026/04
4
79687
282523
273604
2026-06-12T03:08:07Z
SpBot
978
archiving 1 section from [[Wikifunctions:Requests for deletions]] (after section [[Wikifunctions:Requests for deletions/Archive/2026/04#Z18720|Z18720]])
282523
wikitext
text/x-wiki
{{Talkarchive}}
== [[Z32904]] ==
This is an incorrect duplicate of [[Z32899]]. This function returns (always positive) natural numbers. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:49, 2 April 2026 (UTC)
:CC @[[User:So9q|So9q]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 07:54, 2 April 2026 (UTC)
:lets delete it [[User:So9q|So9q]] ([[User talk:So9q|talk]]) 10:14, 2 April 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 10:21, 2 April 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 10:21, 2 April 2026 (UTC)</small>
== [[Z33035]] ==
Was testing something that I don't need anymore. Can someone delete this. [[User:ChaoticVermillion|ChaoticVermillion]] ([[User talk:ChaoticVermillion|talk]]) 22:12, 2 April 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 06:28, 3 April 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 06:28, 3 April 2026 (UTC)</small>
== (non ZObject) [[Wikifunctions:Avoid Artificial Intelligence]] ==
I've moved the intended content to [[Wikifunctions:Editing guidelines]]. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 15:19, 8 April 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 04:53, 9 April 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 04:53, 9 April 2026 (UTC)</small>
== [[Z18551]] ==
Unused string. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 22:08, 9 April 2026 (UTC)
:CC @[[User:Jsamwrites|Jsamwrites]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 09:16, 10 April 2026 (UTC)
::@[[User:Ameisenigel|Ameisenigel]] @[[User:Bunnypranav|Bunnypranav]] Thanks for pointing this out. I corrected the issue. City name is now being used in "validate city name in English, implementation" {{Z|Z33287}}. [[User:Jsamwrites|John Samuel]] 12:14, 10 April 2026 (UTC)
:::@[[User:Jsamwrites|Jsamwrites]] I'm not exactly sure how such functions are written, but is there any downside to just hardcoding the regex in the implementation? It does not look like some specialized regex either (specialized as in specific to city names; it is just a capital word(s) filter). I feel it would be easier for readability if this would be hardcoded. <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:54, 10 April 2026 (UTC)
::::The idea is here to validate city names in English, like Lyon, Paris, New York, San Francisco, etc. in a generic manner. Updated the description of Z18551 for readability. [[User:Jsamwrites|John Samuel]] 13:14, 10 April 2026 (UTC)
:::::Fair enough, marking as {{not done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 13:33, 10 April 2026 (UTC)
::::::<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 13:33, 10 April 2026 (UTC)</small>
== {{Z|Z33394}} ==
Created by me as a (failed) experiment. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 13:12, 13 April 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:42, 13 April 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:42, 13 April 2026 (UTC)</small>
== [[Z33193]] ==
@[[User:ChaoticVermillion|ChaoticVermillion]] this appears to be an unstarted duplicate of [[Z27926]]. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 11:20, 14 April 2026 (UTC)
:Oh, I didn't realise [[Z27926]] existed. It can be deleted. [[User:ChaoticVermillion|ChaoticVermillion]] ([[User talk:ChaoticVermillion|talk]]) 11:49, 14 April 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:16, 14 April 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:16, 14 April 2026 (UTC)</small>
== {{Z|Z32178}} ==
Created by me by mistake.[[User:Higa4|Higa4]] ([[User talk:Higa4|talk]]) 22:49, 14 April 2026 (UTC)
:{{done}} [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 18:22, 15 April 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 18:22, 15 April 2026 (UTC)</small>
== {{Z|Z22461}} and its implementation and test ==
{{ping|Feeglgeef}} This doesn't look necessary anymore? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:23, 15 April 2026 (UTC)
:Nope, feel free to delete. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 13:47, 15 April 2026 (UTC)
:{{done}} [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 18:23, 15 April 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 18:23, 15 April 2026 (UTC)</small>
== {{Z|Z16518}} including test and implementations ==
{{ping|JJPMaster}} This is now a duplicate of {{Z|Z13596}} which was converted from an index input when the month type became available. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 03:18, 17 April 2026 (UTC)
:No objection. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 03:26, 17 April 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 13:37, 17 April 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 13:37, 17 April 2026 (UTC)</small>
== {{Z|Z32045}} and its implementation ==
{{ping|Forsythe13}} This seems to be an attempt to surface system information? In any case, I can't see it having a useful purpose for Wikifunctions. --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:15, 15 April 2026 (UTC)
:{{done}} [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 07:29, 22 April 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 07:29, 22 April 2026 (UTC)</small>
== [[Z27142]] ==
Unused and empty, courtesy ping {{ping|Dv103}}. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 14:12, 24 April 2026 (UTC)
:Sincerely, I don't ever remember what it was for. Since it is unusued, can be deleted. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 14:14, 24 April 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:25, 24 April 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:25, 24 April 2026 (UTC)</small>
== [[Z34196]] ==
test [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 16:50, 25 April 2026 (UTC)
:{{done}} [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 16:13, 26 April 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 16:13, 26 April 2026 (UTC)</small>
== {{Z|Z34143}} ==
Hello!
I created this test case for {{Z|Z34139}}, but this test stems from a misunderstanding I had about historical Bulgarian orthography. It is incorrect and should be deleted. <span style="border-radius:99q;padding:0 7q;background:#103;border:3q solid #FBF">[[User:QuickQuokka|<span style="color:#FBF">'''QuickQuokka'''</span>]]</span> <sup>[[[User talk:QuickQuokka|talk]] • [[Special:Contribs/QuickQuokka|contribs]]]</sup> 22:10, 25 April 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:25, 27 April 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:25, 27 April 2026 (UTC)</small>
== {{Z|Z33803}} ==
Duplicate of {{Z|Z20430}}. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 10:58, 20 April 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 14:03, 28 April 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 14:03, 28 April 2026 (UTC)</small>
== [[Z21866]] ==
Malformed test case superseded by [[Z34399]]. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 03:21, 28 April 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:26, 28 April 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:26, 28 April 2026 (UTC)</small>
== {{Z|Z32488}} ==
{{ping|Dot.py}} it looks like this was intended as an actual [[Z14294]] rather than a function with no inputs that makes one. Rather than using "create function", use "create object" at https://www.wikifunctions.org/wiki/Special:CreateObject then choose the type of item. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:18, 15 April 2026 (UTC)
:{{done}} [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 15:59, 30 April 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 15:59, 30 April 2026 (UTC)</small>
== {{Z|Z27261}} ==
{{ping|Dungodung}} it looks like this was intended as an actual [[Z14294]] rather than a function with no inputs that makes one. Rather than using "create function", use "create object" at https://www.wikifunctions.org/wiki/Special:CreateObject then choose the type of item. [[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:20, 15 April 2026 (UTC)
:Thanks for the info! [[User:Dungodung|Dungodung]] ([[User talk:Dungodung|talk]]) 19:16, 15 April 2026 (UTC)
::@[[User:Dungodung|Dungodung]] Can I consider this as a author request to delete <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 04:26, 16 April 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 14:50, 8 May 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 14:50, 8 May 2026 (UTC)</small>
== [[Z18720]] ==
This kind of function is not supported, at least not in the way as it is currently implemented. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 20:24, 27 April 2026 (UTC)
:CC @[[User:Ioaxxere|Ioaxxere]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 12:27, 28 April 2026 (UTC)
:Why isn't it supported? This function would be useful on Wiktionary itself if we could call it from a template. [[User:Ioaxxere|Ioaxxere]] ([[User talk:Ioaxxere|talk]]) 13:47, 28 April 2026 (UTC)
::Web requests are not technically supported, and the Abstract Wikipedia team has no plans to support it. Functions should be deterministic, which means that they cannot rely on web requests. The proper way to do this would be to use the templates feature, you can do something like <nowiki>{{:hello}}</nowiki> to bring the full page hello a function call. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 13:53, 28 April 2026 (UTC)
{{done}} --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:32, 10 June 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 17:55, 10 June 2026 (UTC)</small>
n8ngna6iuf09lxtksnx01si1lg90i7v
Z33161
0
79767
282553
271818
2026-06-12T06:56:58Z
99of9
1622
282553
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z33161"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z26955",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z11542",
"Z11542K1": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K1": {
"Z1K1": "Z7",
"Z7K1": "Z11060",
"Z11060K1": {
"Z1K1": "Z7",
"Z7K1": "Z26039",
"Z26039K1": {
"Z1K1": "Z18",
"Z18K1": "Z26955K2"
},
"Z26039K2": {
"Z1K1": "Z18",
"Z18K1": "Z26955K3"
},
"Z26039K3": {
"Z1K1": "Z18",
"Z18K1": "Z26955K4"
}
}
},
"Z866K2": "."
},
"Z11542K2": {
"Z1K1": "Z7",
"Z7K1": "Z11879",
"Z11879K1": {
"Z1K1": "Z7",
"Z7K1": "Z26039",
"Z26039K1": {
"Z1K1": "Z18",
"Z18K1": "Z26955K2"
},
"Z26039K2": {
"Z1K1": "Z18",
"Z18K1": "Z26955K3"
},
"Z26039K3": {
"Z1K1": "Z18",
"Z18K1": "Z26955K4"
}
}
},
"Z11542K3": {
"Z1K1": "Z7",
"Z7K1": "Z26039",
"Z26039K1": {
"Z1K1": "Z18",
"Z18K1": "Z26955K2"
},
"Z26039K2": {
"Z1K1": "Z18",
"Z18K1": "Z26955K3"
},
"Z26039K3": {
"Z1K1": "Z18",
"Z18K1": "Z26955K4"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "DONT CONNECT: SPO to article-less fragment bandaid"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "DONT CONNECT. This can currently produce slanderous output from innocent input. See Z33383. "
}
]
}
}
s1xc74awbozf17caquqf1h53j3fvah1
Z33185
0
79807
282389
263578
2026-06-11T21:44:51Z
99of9
1622
Nudge
282389
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z33185"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z33185K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "subject"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z33185K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "object"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z33185K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "verb"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z33185K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z33186"
],
"Z8K4": [
"Z14",
"Z33187"
],
"Z8K5": "Z33185"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "simple present singular sentence, indef"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"X verbs Y"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Makes a sentence of the form [X] [verbs] [Y] sentence e.g. \"Love commands respect\" or \"Practice makes perfection\"."
}
]
}
}
4vydiv92qdrrdhov4k03p7mc09n46ta
Z33198
0
79821
282430
265856
2026-06-12T01:08:05Z
七八年再来一次
10776
282430
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z33198"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z33198",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z20838",
"Z3K2": "Z33198K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "real"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "parte reale"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "reálná"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "real"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
{
"Z1K1": "Z3",
"Z3K1": "Z20838",
"Z3K2": "Z33198K2",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "imaginary"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "parte immaginaria"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "imaginární"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "imaginär"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
],
"Z4K3": "Z101",
"Z4K4": "Z33202",
"Z4K7": [
"Z46",
"Z33199",
"Z33209"
],
"Z4K8": [
"Z64",
"Z33200",
"Z33210"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Complex number (float64)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Numero complesso (float64)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "komplexe Zahl (Float64)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "复数(64位浮点数)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"Numero complesso",
"complex128"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"Komplexní číslo"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"Complex number",
"complex128"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1645",
"Z31K2": [
"Z6",
"复数",
"复数128"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "a complex number approximated by two float64 values"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Numero complesso composto da due float64"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "reprezentace komplexního čísla sestavená z dvojice hodnot typu float64"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "eine komplexe Zahl, angenähert durch zwei Float64-Werte"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "由两个64位浮点数值近似表示的复数"
}
]
}
}
cttacbx0wciivbob1fdtmhhz6tu47lm
Z33748
0
80639
282387
266723
2026-06-11T21:40:54Z
GrounderUK
50
🔀[[Z889]]
282387
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z33748"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z13436",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z13436",
"Z13436K1": "Z33745",
"Z13436K2": "Z16660",
"Z13436K3": [
"Z13518",
{
"Z1K1": "Z13518",
"Z13518K1": "2"
},
{
"Z1K1": "Z13518",
"Z13518K1": "3"
},
{
"Z1K1": "Z13518",
"Z13518K1": "5"
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z889",
"Z889K2": [
"Z16683",
{
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "2"
}
},
{
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "3"
}
},
{
"Z1K1": "Z16683",
"Z16683K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "5"
}
}
],
"Z889K3": "Z16688"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "constructed objects fail"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
731bwkpa52musg3mpy2jp50waphdirx
Z33771
0
80726
282546
266904
2026-06-12T06:27:28Z
99of9
1622
switch to QID backstop after mul
282546
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z33771"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z32428",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33470",
"Z33470K1": {
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z32428K1"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z32428K2"
}
},
"Z33470K2": "a",
"Z33470K3": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z883",
"Z883K1": "Z6",
"Z883K2": "Z1"
},
"K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
}
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z6",
"Z882K2": "Z1"
},
"K1": "href",
"K2": [
"Z6",
"https://abstract.wikipedia.org/wiki/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z32428K1"
}
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "abstract wikilink, Composition: text as element"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ett4sb1pwci24ufs259gpagulxkk0dc
Z33878
0
80891
282390
267494
2026-06-11T22:25:24Z
Some helpful person
65824
Added Z33887 to the approved list of test cases
282390
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z33878"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z33878K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "suit"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z33878K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "rank"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z33884",
"Z33883",
"Z33885",
"Z33886",
"Z33887"
],
"Z8K4": [
"Z14",
"Z33879"
],
"Z8K5": "Z33878"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Unicode playing card from English"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"playing card symbol"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "gets the Unicode symbol for a playing card from its suit and rank, expressed in English"
}
]
}
}
sy5ymtjgpxoxkm9kzei4w8w42t6qrqt
Z34123
0
81263
282519
268670
2026-06-12T02:16:35Z
99of9
1622
fix arg 2
282519
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z34123"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z34122",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z13522",
"Z13522K1": {
"Z1K1": "Z7",
"Z7K1": "Z28222",
"Z28222K1": {
"Z1K1": "Z18",
"Z18K1": "Z34122K1"
}
},
"Z13522K2": {
"Z1K1": "Z13518",
"Z13518K1": "4"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z30438",
"Z30438K1": {
"Z1K1": "Z18",
"Z18K1": "Z34122K1"
},
"Z30438K2": {
"Z1K1": "Z18",
"Z18K1": "Z34122K2"
},
"Z30438K3": {
"Z1K1": "Z18",
"Z18K1": "Z34122K3"
},
"Z30438K4": {
"Z1K1": "Z18",
"Z18K1": "Z34122K4"
},
"Z30438K5": {
"Z1K1": "Z18",
"Z18K1": "Z34122K5"
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z34120",
"Z34120K1": {
"Z1K1": "Z18",
"Z18K1": "Z34122K1"
},
"Z34120K2": {
"Z1K1": "Z18",
"Z18K1": "Z34122K2"
},
"Z34120K3": {
"Z1K1": "Z18",
"Z18K1": "Z34122K3"
},
"Z34120K4": {
"Z1K1": "Z18",
"Z18K1": "Z34122K4"
},
"Z34120K5": {
"Z1K1": "Z18",
"Z18K1": "Z34122K5"
},
"Z34120K6": {
"Z1K1": "Z18",
"Z18K1": "Z34122K6"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply4/5, composition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
fbkl6kdgm85eijo6vkdslnh56opeka1
Z577
0
82618
282414
274133
2026-06-12T00:31:36Z
七八年再来一次
10776
282414
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z577"
},
"Z2K2": {
"Z1K1": "Z50",
"Z50K1": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z99",
"Z3K2": "Z577K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "request"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "richiesta"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Anfrage"
}
]
}
},
{
"Z1K1": "Z3",
"Z3K1": "Z99",
"Z3K2": "Z577K2",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "evaluation result"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "risultato di esecuzione"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Auswertungsergebnis"
}
]
}
}
],
"Z50K2": "Z577"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Invalid orchestrator result"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Risultato dall'orchestratore invalido"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "ungültiges Orchestrierer-Ergebnis"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1645",
"Z11K2": "编排器结果无效"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
5gcf3c7kh93oj5pv2s1v9filoc1doq4
Z34925
0
82685
282543
276608
2026-06-12T06:18:22Z
99of9
1622
282543
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z34925"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z27868",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z26039",
"Z26039K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q788"
},
"Z26039K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q9430"
},
"Z26039K3": "Z1672"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z7",
"Z7K1": "Z33687",
"Z33687K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q788"
},
"Z33687K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q9430"
},
"Z33687K3": "Z1672",
"Z33687K4": "",
"Z33687K5": "",
"Z33687K6": "",
"Z33687K7": ""
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "(#) [zh-Hant] use funtion call results as input"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fails because the underlying Chinese function Z27244 returns monolingual text to a string function"
}
]
}
}
i5dyxxka50d15b8djg9quh5q4hyikkd
Z34943
0
82704
282418
277914
2026-06-12T00:45:43Z
99of9
1622
nudge
282418
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z34943"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z34943K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "lessema"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "lexeme"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z34943K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "caratteristiche grammaticali"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "grammatical features"
}
]
}
}
],
"Z8K2": "Z12",
"Z8K3": [
"Z20",
"Z34944",
"Z35639"
],
"Z8K4": [
"Z14",
"Z34945"
],
"Z8K5": "Z34943"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "miglior testo multilingue di rappr. di lessema"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "better matching multilingual text form from lexeme"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"miglior stringa di rappresentazione di lessema compatibile in lingua",
"miglior stringa di rappr. di lessema multilingue"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"multilingual text from lexeme"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Come Z27410, ma restituendo tutte le rappresentazioni della forma."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Like Z27410, but returning the entire multilingual text"
}
]
}
}
15ky2q96oyjfa341yvdsk47jkrzci49
282419
282418
2026-06-12T00:46:20Z
99of9
1622
282419
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z34943"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z34943K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "lessema"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "lexeme"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z34943K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "caratteristiche grammaticali"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "grammatical features"
}
]
}
}
],
"Z8K2": "Z12",
"Z8K3": [
"Z20",
"Z34944",
"Z35639"
],
"Z8K4": [
"Z14",
"Z34945"
],
"Z8K5": "Z34943"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "miglior testo multilingue di rappr. di lessema"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "better matching multilingual text form from lexeme"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"miglior stringa di rappresentazione di lessema compatibile in lingua",
"miglior stringa di rappr. di lessema multilingue"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"multilingual text from lexeme",
"multilingual text from lexeme and grammar",
"lexeme and grammar to multilingual text"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Come Z27410, ma restituendo tutte le rappresentazioni della forma."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Like Z27410, but returning the entire multilingual text"
}
]
}
}
5xrhsdbqdvgjizyru0b1v2lt71aczfr
Wikifunctions:Requests for deletions/Archive/2026/05
4
82940
282524
279186
2026-06-12T03:08:08Z
SpBot
978
archiving 1 section from [[Wikifunctions:Requests for deletions]] (after section [[Wikifunctions:Requests for deletions/Archive/2026/05#Z18771|Z18771]])
282524
wikitext
text/x-wiki
{{Talkarchive}}
== [[Z13147]] ==
Function with no implementations or tests, and [[User talk:FenrisAureus|the author doesn't plan to develop it further]]. [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 15:04, 7 May 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 14:49, 8 May 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 14:49, 8 May 2026 (UTC)</small>
== [[Z35100]] ==
Created by mistake (I thought I was creating a function in my local development environment :-). [[User:DMartin (WMF)|DMartin (WMF)]] ([[User talk:DMartin (WMF)|talk]]) 07:38, 11 May 2026 (UTC)
:You have the technical right to grant yourself sysop. I'm not a fan of this, but since it exists you should probably use it for a deletion that nobody could possibly find controversial. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 11:45, 11 May 2026 (UTC)
::@[[User:Feeglgeef|Feeglgeef]]: Please do not encourage staff to violate policy. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 14:41, 11 May 2026 (UTC)
:::I don't believe such an action would be in violation of the [[WF:Staff editing policy]], is there another one you're referring to? [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 15:05, 11 May 2026 (UTC)
:{{done}} [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 20:56, 11 May 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 20:56, 11 May 2026 (UTC)</small>
== [[Z31462]] ==
Seems useless. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 12:14, 16 May 2026 (UTC)
:CC @[[User:Feeglgeef|Feeglgeef]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 07:33, 17 May 2026 (UTC)
::That was a test object, please delete. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 13:17, 17 May 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:22, 17 May 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 15:22, 17 May 2026 (UTC)</small>
== [[Z18927]] ==
Duplicate of [[Z11853]]. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 20:52, 18 May 2026 (UTC)
:cc @[[User:Jsamwrites|Jsamwrites]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 03:22, 19 May 2026 (UTC)
::Thanks for pointing this. This has been corrected and used in a dedicated for detecting basic phrase categories in English ({{Z|Z35352}} and the associated implementation -- {{Z|Z35353}} as well as the tests). [[User:Jsamwrites|John Samuel]] 09:26, 19 May 2026 (UTC)
:{{withdrawn}} per above --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 13:26, 19 May 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 13:26, 19 May 2026 (UTC)</small>
== [[Z18928]] ==
Unused string. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 20:54, 18 May 2026 (UTC)
:CC @[[User:Jsamwrites|Jsamwrites]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 03:21, 19 May 2026 (UTC)
::Thanks for pointing this. This is now used in a dedicated for detecting basic phrase categories in English ({{Z|Z35352}} and the associated implementation -- {{Z|Z35353}} as well as the tests). [[User:Jsamwrites|John Samuel]] 09:26, 19 May 2026 (UTC)
:{{withdrawn}} per above --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 13:26, 19 May 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 13:26, 19 May 2026 (UTC)</small>
== [[Z18929]] ==
Unused string. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 20:54, 18 May 2026 (UTC)
:cc @[[User:Jsamwrites|Jsamwrites]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 03:22, 19 May 2026 (UTC)
::Thanks for pointing this. This is now used in a dedicated for detecting basic phrase categories in English ({{Z|Z35352}} and the associated implementation -- {{Z|Z35353}} as well as the tests). [[User:Jsamwrites|John Samuel]] 09:26, 19 May 2026 (UTC)
:{{withdrawn}} per above --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 13:27, 19 May 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 13:27, 19 May 2026 (UTC)</small>
== Request for deleting {{Z|35508}} ==
Please delete {{Z|35508}}, which I started to make earlier today. A better implemention can replace mine. [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 21:22, 22 May 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 06:54, 23 May 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 06:54, 23 May 2026 (UTC)</small>
== [[Z12390]] ==
Associated to a non-existing function. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 15:06, 21 May 2026 (UTC)
:Pings: @[[User:ToprakM|ToprakM]] @[[User:GrounderUK|GrounderUK]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 15:07, 21 May 2026 (UTC)
:{{done}} [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 08:29, 24 May 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 08:29, 24 May 2026 (UTC)</small>
== Request for deleting {{Z|35614}} ==
Please delete implementation {{Z|35614}}, which I made earlier today. A better implementation can replace it. [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 16:31, 24 May 2026 (UTC)
[[Category:Maintenance]]
:{{done}} [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 17:57, 24 May 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 17:57, 24 May 2026 (UTC)</small>
== [[Z35671]] ==
Vandalism by a locked sock. [[User:Emk9|Emk9]] ([[User talk:Emk9|talk]]) 17:21, 27 May 2026 (UTC)
:{{done}} [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 18:13, 27 May 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 18:13, 27 May 2026 (UTC)</small>
== [[Z18987]] ==
Empty string, unused. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 20:05, 24 May 2026 (UTC)
:CC @[[User:Csisc|Csisc]] <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 11:30, 25 May 2026 (UTC)
:{{done}} <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 08:50, 28 May 2026 (UTC)
:<small>This section was archived on a request by: <span style="font-family:monospace;font-weight:bold">[[User:Bunnypranav|<span style="color:#63b3ed">~/Bunny</span><span style="color:#2c5282">pranav</span>]]:<[[User talk:Bunnypranav|<span style="color:#63b3ed">ping</span>]]></span> 08:50, 28 May 2026 (UTC)</small>
== [[Z18771]] ==
Duplicate of [[Z10251]]. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 12:51, 3 May 2026 (UTC)
:{{s}} deletion, unless {{ping|Jsamwrites}} has a comment to make. This is a relatively old one, but WhatLinksHere shows that nothing uses it. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 15:44, 3 May 2026 (UTC)
:Thanks for pointing this out. However, there are implementations and test cases that cover more interesting use cases. Also added a composition function making use of {{Z|Z10251}} [[User:Jsamwrites|John Samuel]] 17:01, 3 May 2026 (UTC)
::It is possible to move these from the duplicate to the original function. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 17:49, 7 May 2026 (UTC)
:::I have moved all the tests and implementations (except the one that is just using the older function) to Z10251. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 09:05, 17 May 2026 (UTC)
{{done}} --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 01:34, 10 June 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 17:55, 10 June 2026 (UTC)</small>
6ec8wnei3ru06xxmcug8va2ph4cr5vc
Z35370
0
83822
282435
276665
2026-06-12T01:15:47Z
99of9
1622
nudge
282435
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z35370"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z35370K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "persona"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "person"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "personne"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z35370K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "lingua"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "langue"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z35373"
],
"Z8K4": [
"Z14",
"Z35372"
],
"Z8K5": "Z35370"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "infobox per persona"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for person"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "infobox pour les personnes (2)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"biography infobox"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
py2dyjgdld2apxmuf9of2i4kfs93uw5
Z35809
0
84542
282391
279112
2026-06-11T22:28:38Z
99of9
1622
nudge
282391
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z35809"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z11"
},
"Z17K2": "Z35809K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "monolingual texts"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z60"
},
"Z17K2": "Z35809K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "languages in priority order"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z35810",
"Z35820",
"Z35821",
"Z35826"
],
"Z8K4": [
"Z14",
"Z35835",
"Z35819",
"Z35831"
],
"Z8K5": "Z35809"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "monolingual text from list w highest listed lang"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"best monolingual text",
"monolingual text with highest priority language",
"find best monolingual",
"best match for language list",
"choose best language text",
"best label matching language list"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a monolingual text from a list of them. Chooses the (first) one with a language highest on the provided list of languages. Default to first on list."
}
]
}
}
15w3ztr9ns49o2c0jha6aharomwwui7
282392
282391
2026-06-11T22:30:19Z
99of9
1622
Added Z35837 to the approved list of test cases
282392
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z35809"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z11"
},
"Z17K2": "Z35809K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "monolingual texts"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z60"
},
"Z17K2": "Z35809K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "languages in priority order"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z35810",
"Z35820",
"Z35821",
"Z35826",
"Z35837"
],
"Z8K4": [
"Z14",
"Z35835",
"Z35819",
"Z35831"
],
"Z8K5": "Z35809"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "monolingual text from list w highest listed lang"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"best monolingual text",
"monolingual text with highest priority language",
"find best monolingual",
"best match for language list",
"choose best language text",
"best label matching language list"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a monolingual text from a list of them. Chooses the (first) one with a language highest on the provided list of languages. Default to first on list."
}
]
}
}
4rk5nesoaklrnfo7nmdw5wm25y09pwd
282394
282392
2026-06-11T22:32:38Z
WikiLambda system
3
Updated the implementation list (see [[Help:Wikifunctions/Implementation_ordering_and_choosing|About implementation selection]])
282394
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z35809"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z11"
},
"Z17K2": "Z35809K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "monolingual texts"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z60"
},
"Z17K2": "Z35809K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "languages in priority order"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z35810",
"Z35820",
"Z35821",
"Z35826",
"Z35837"
],
"Z8K4": [
"Z14",
"Z35819",
"Z35831",
"Z35835"
],
"Z8K5": "Z35809"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "monolingual text from list w highest listed lang"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"best monolingual text",
"monolingual text with highest priority language",
"find best monolingual",
"best match for language list",
"choose best language text",
"best label matching language list"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a monolingual text from a list of them. Chooses the (first) one with a language highest on the provided list of languages. Default to first on list."
}
]
}
}
sd4i048tel5dl73s4q9mi467kp5mgf5
282395
282394
2026-06-11T22:33:36Z
99of9
1622
nudge
282395
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z35809"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z11"
},
"Z17K2": "Z35809K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "monolingual texts"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z60"
},
"Z17K2": "Z35809K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "languages in priority order"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z35810",
"Z35820",
"Z35821",
"Z35826",
"Z35837"
],
"Z8K4": [
"Z14",
"Z35819",
"Z35831",
"Z35835"
],
"Z8K5": "Z35809"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "monolingual text from list w highest listed lang"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"best monolingual text",
"monolingual text with highest priority language",
"find best monolingual",
"best match for language list",
"choose best language text",
"best label matching language list",
"string and language from list matching language priority"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a monolingual text from a list of them. Chooses the (first) one with a language highest on the provided list of languages. Default to first on list."
}
]
}
}
q0aozre84vb09ceg8qyx8gg59zqvmj6
Z35837
0
84590
282393
279126
2026-06-11T22:32:11Z
99of9
1622
I think this should actually be a real test. JS should be disqualified until the system gives it what it needs.
282393
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z35837"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z35809",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z35809",
"Z35809K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Hello"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "G'day"
}
],
"Z35809K2": [
"Z60",
"Z1113",
"Z1002"
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "G'day"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "test languages as references, phabricator T427644"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "pick out en-au from second on list of monolinguals with language REFERENCES"
}
]
}
}
4owcwnzkzrjgdyk4fnc00ywqrg1wvap
Z35910
0
84769
282337
282153
2026-06-11T14:49:21Z
GrounderUK
50
Added Z36280 and Z36281 to the approved list of test cases
282337
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z35910"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
}
},
"Z17K2": "Z35910K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "function by ZID"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
}
},
"Z17K2": "Z35910K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "tagged arguments (tag lists of arguments with \"N\")"
}
]
}
}
],
"Z8K2": "Z1",
"Z8K3": [
"Z20",
"Z35914",
"Z36280",
"Z36281"
],
"Z8K4": [
"Z14",
"Z36277"
],
"Z8K5": "Z35910"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"multi-call constructor",
"quoted function-call multi-list"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns lists of function call objects as lists of quote objects, with one such list for each element in the function-list argument and the same number of call objects in each list"
}
]
}
}
k2zrtghh6di4jgle5rmcvrzibvbhxgn
282338
282337
2026-06-11T14:49:23Z
GrounderUK
50
Removed Z35914 from the approved list of test cases
282338
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z35910"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
}
},
"Z17K2": "Z35910K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "function by ZID"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
}
},
"Z17K2": "Z35910K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "tagged arguments (tag lists of arguments with \"N\")"
}
]
}
}
],
"Z8K2": "Z1",
"Z8K3": [
"Z20",
"Z36280",
"Z36281"
],
"Z8K4": [
"Z14",
"Z36277"
],
"Z8K5": "Z35910"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"multi-call constructor",
"quoted function-call multi-list"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns lists of function call objects as lists of quote objects, with one such list for each element in the function-list argument and the same number of call objects in each list"
}
]
}
}
fgmgmraa7kw1gv4psff1cdu6n28l4ox
282339
282338
2026-06-11T15:10:58Z
GrounderUK
50
[[Z1002]]
282339
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z35910"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
}
},
"Z17K2": "Z35910K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "function by ZID"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
}
},
"Z17K2": "Z35910K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "tagged arguments (tag lists of arguments with \"N\")"
}
]
}
}
],
"Z8K2": "Z1",
"Z8K3": [
"Z20",
"Z36280",
"Z36281"
],
"Z8K4": [
"Z14",
"Z36277"
],
"Z8K5": "Z35910"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "lazy call grid"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"multi-call constructor",
"quoted function-call multi-list",
"unvalidated function calls as quote list",
"lazy call grid"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns lists of function call objects as lists of quote objects, with one such list for each element in the function-list argument and the same number of call objects in each list"
}
]
}
}
rsclssie9mypxk8sosicdhdmsidm0aq
Wikifunctions:Project chat/Archive/2026/05
4
84806
282521
281916
2026-06-12T03:08:04Z
SpBot
978
archiving 3 sections from [[Wikifunctions:Project chat]] (after section [[Wikifunctions:Project chat/Archive/2026/05#RGBA_colour,_spelling...|RGBA_colour,_spelling...]])
282521
wikitext
text/x-wiki
{{Talkarchive}}
== Key not found error ==
Is there a reason why I am getting key not found error for this [[Z34677|function]] {{Z|Z34677}}? All the underlying functions run and all the test cases work. The debug information does not give more details. Any pointers? Thanks in advance [[User:Jsamwrites|John Samuel]] 19:24, 1 May 2026 (UTC)
:It was passing the [[Z6091]] to {{Z|34641}} when that takes a [[Z6001]]. I've fixed that, but there's some other problem with the logic, so I've left it disconnected. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 19:42, 1 May 2026 (UTC)
::@[[User:YoshiRulz|YoshiRulz]] Thanks a lot. [[User:Jsamwrites|John Samuel]] 20:21, 1 May 2026 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #246 is out: Request for input: what should we count for Abstract Wikipedia ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-05-02|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we ask you what would be the relevant metrics for Abstract Wikipedia, we discuss our latest news on Composition Language v2, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 12:21, 2 May 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30325620 -->
== Any formal process for deletion of pages ==
Does a formal process exist for the deletion of functions, implementations, and tests that includes a notification system for creators, analogous to Wikidata’s process, explaining the rationale behind the deletion (or proposal for deletion)? [[User:Jsamwrites|John Samuel]] 12:36, 3 May 2026 (UTC)
:Does [[Wikifunctions:Requests for deletions]] work? [[User:Amire80|Amir E. Aharoni]] ([[User talk:Amire80|talk]]) 13:00, 3 May 2026 (UTC)
:Please see the discussion at [[Wikifunctions talk:Requests for deletions#Should we expect Objects' creators to get pinged on deletion proposals?]].
:As I see it, it is the proposer’s responsibility to consult appropriately before making a request and we expect our administrators to act only when satisfied that appropriate consultation has occurred. In many cases, no consultation is required. Administrators may delete their own contributions without making a request, but this is not a practice I would encourage. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 13:51, 3 May 2026 (UTC)
== Nested functions in compositions ==
I wish it will be easier to a add another function about a specific existing function in a function implementation based on a composition. When I write long functions in spreadsheets I usually stat with a small part and then I try to go further and after important steps I test if the output is as expected. I created [[Z34826]] to get the German gender specific occupation lexeme for a specific person based on their gender. I wanted to add a function around the existing one and it was not successful. It is not very easy to implement as it requires the possibily to move a part to another section but I think it can be helpful if it will be implemented. So far I spend more time as expected on the function. Describing it with words what the function needs to do is much easier than implementing it here in Wikifunctions. So I think there needs to be improvement to make Wikifunctions more accessible. [[User:Hogü-456|Hogü-456]] ([[User talk:Hogü-456|talk]]) 21:10, 5 May 2026 (UTC)
:Have you tried to use the copy-paste functionality? It is very useful to move parts of composition arounn. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:12, 6 May 2026 (UTC)
:I've also found the composition editor to be wholly unsuitable for any expressions more than a few levels deep. (Even with the <code>localStorage</code> clipboard, because of its overzealous type checks.) Compositions naturally grow out from the "leaves", the immediate operations on the inputs, while the interface really wants you to build from the "root". I mostly use the [https://yoshirulz.gitlab.io/WikiLambdaBlockly drag-and-drop block editor] which I made to smooth over some of the site's problems, so if you want to try that out and give me some feedback I'd appreciate it. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 14:36, 6 May 2026 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #247 is out: References from Wikidata now available ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-05-08|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we announce that is now possible to pass references in Wikidata statements, we introduce the [https://abstract-data.toolforge.org/ Abstract Data dashboard], we report you on the presentation about Abstract Wikipedia at WikiCon Australia, and we take a look at the latest software developments.
Want to catch up with the previous updates? Check [[:f:Special:MyLanguage/Wikifunctions:Status updates|our archive]]!
Also, we remind you that if you have questions or ideas to discuss, the next '''Volunteers' Corner''' will be held on '''[https://zonestamp.toolforge.org/1778520600 May 11, at 17:30 UTC]''' ([https://meet.google.com/xuy-njxh-rkw link to the meeting]).
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 11:16, 8 May 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Wikifunctions_%26_Abstract_Wikipedia&oldid=30325620 -->
== Implementation of rational number in JS doesn't match in Z19677 (Rational number) and Z28579 (RGBA colour) ==
In {{Z|19677}} it's
<syntaxhighlight lang=js>
{
"K1": sign * numerator,
"K2": denominator
}
</syntaxhighlight>
but in {{Z|28579}} it's
<syntaxhighlight lang=js>
[ sign * numerator, denominator ]
</syntaxhighlight> '''<span style="font-family:Iosevka,monospace">[[User:沈澄心|<span style="color:#9f3526">dring</span>]][[User talk:沈澄心|<span style="color:#534fa3">sim</span>]]</span>''' 05:15, 4 May 2026 (UTC)
:I'm guessing this is why [[Z34743]] fails all the tests. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 01:00, 18 May 2026 (UTC)
:<s>Moved to [[Talk:Z28579#Mismatching_JS_code_representation|Talk:Z28579]] so this doesn't get lost, and made a request on [[Wikifunctions:Administrators'_noticeboard#RGBA_colour's_type_converters_don't_match_Rational|the Administrators' noticeboard]].</s> was {{done}} [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 17:39, 5 June 2026 (UTC)
:<small>This section was archived on a request by: [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 18:20, 8 June 2026 (UTC)</small>
== RGBA colour, spelling... ==
Something that has always irked me a little bit is the spelling of [[Z28579|RGBA colour (Z28579)]]. I guess this is not unsurprising for me considering my use of US English but I think there is more to it than preference and I want to try to argue for it being changed to use American spelling. I know that this probably has a snowball's chance in hell of actually garnering any support, so I won't really be miffed if the spelling remains as it is, but I thought it wouldn't hurt to raise this regardless.
The main issue I have with it is the spelling of the original proposal. When infernostars raised the [[Wikifunctions:Type proposals/RGBA color|type proposal]], the spelling was 「RGBA color」. Of the comments that mentioned the word 「colo[u]r」, two used British spelling while six used the American spelling as used in the proposal. The only thing that really pointed to the use of ''colour'' was the fact that the catalog page on color functions used that spelling already. For all intents and purposes, the spelling of the original proposal should have been maintained, but it was not; [[User:DVrandecic (WMF)|DVrandecic]], the eventual creator of the type, used a different spelling.
It should be noted that there was really no reason for this to occur and while it is an undoubtedly minor issue I still believe it should be rolled back and the type should use the spelling of the original proposal and majority of editor comments. In [[abstract:Q936|OpenStreetMap]], there have been keyvalue proposals that have had the finalized spelling that gets put to use be in British English despite the original proposal being in American English; this has usually occurred with proposals relating to 「X center/centre」 tags. This makes sense on the surface, because OpenStreetMap is maintained by a UK organization, and still has close ties to Europe. The Wikimedia Foundation, however, is an ''American'' company. This is often brought up as a fallible argument when debating article spelling on the English Wikipedia, and I don't bring it up to support that 「RGBA color」 should be used for that exact reason, but rather to state that OpenStreetMap's general policy on tag names need not apply here. It appears to me that, at least initially, the majority of 「core contributors」 to Wikifunctions used British English; I can name YoshiRulz, 99of9, GrounderUK, and VIGNERON.<ref group="color">I'm avoiding linking to these folks because I don't think pinging them about this discussion is all too necessary unless they themselves want to be involved; I don't want to clutter their inboxes just to briefly mention them. I pinged Denny because, well, I'm asking him a question directly, but everyone else I would prefer to join this discussion by their own accord... not that I wish for this decision to be confused as me going 「these people use British English so they will probably oppose my idea, I won't invite them to the discussion because of that」...no, I promise you that is not the reason.</ref> I see (or saw) these people ''everywhere'', so it makes sense that British English has prevailed in some sorts on this website, but I don't think that indicates that it should be the ''preferred'' spelling across the website, at least not to the point where a proposal should have its name changed to match such a "consensus".<ref group="color">It could be argued that the front-and-center ''Function catalogue'' using 「catalogue」 is actually indicative of such a "consensus", but ''catalogue'' is in a similar position to the word ''grey'' where I live (that is, the US) in that it is used just as often as its American counterpart. Also, consider Wiktionary's ''Beer parlour'' project chat.</ref>
The unnecessary modification of the original spelling is my main argument for changing it back... but of course, I must obligatorily state that on English Wikipedia, it is [[w:Color|Color]] and [[w:RGBA color model|RGBA color model]]; on Wikidata, it is [[d:Q1075|color]] and [[d:Q2325624|RGBA color space]]; in CSS (which typically uses hexadecimal triplets to specify RGBA values), the properties are <code>color</code>, <code>background-color</code>, etc.; bit of a weak jab, but on Schema.org it is [https://schema.org/color color], [https://schema.org/colorSwatch colorSwatch]; et cetera. {{Z|Z28580}} uses ''color'', so does {{Z|Z28591}} and its Python counterpart.
Mr. Vrandečić, I have to ask, I'm rather confused... you created the color type using British English spelling, but you were also responsible for the creation of the equality function which uses the American English spelling. You also seem to be writing in American English for the status updates, judging by your use of -''ize'' over -''ise'' endings and use of ''program'' over ''programme'' in [[Wikifunctions:Status updates/2026-04-16]]. Is there something I'm missing or have you switched your preferred variant somewhere along the way?
Anyways, do consider this if you wish... again, I don't suppose this will garner much support, it is the ''non-issuest'' of ''non-issues'', but it has irked me to the point where I want to ask about it to get some answers, if nothing else. I am not arguing for every other color function to have its name changed, just the type itself.
<references group="color"></references>
— [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 14:04, 8 May 2026 (UTC)
:This is a multilingual project; the <code>en</code> label is <code>RGBA colour</code> and the <code>en-us</code> label is <code>RGBA color</code>. Though I'm not able to switch to <code>en-us</code> via the language picker so that would need to be fixed.<!--
--><br>edit after reading your whole comment: The same is true of {{Q|1075}}, there are labels specified for multiple English variants. (In {{Q|2325624}} it's only an alias.) I agree that other websites' choices aren't binding on us, but from that, I conclude that the more widespread British/Commonwealth spellings should be used for the generic <code>en</code>. As for myself, I'm Aussie and I will continue to use the BrE spellings ([[w:en:Oxford_spelling#Language_tag_comparison|+ "routing"]], TIL) if only by muscle memory.<!--
--><br>[[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 17:42, 8 May 2026 (UTC)
:: Your lattermost point would normally be fine in a perfect world. Wikipedia's <code>convert</code> function defaults to "international" English, which I don't personally take issue with because it happens that we here in America are actually outliers for saying and spelling things differently... err, or we were for a while at least, nowadays it seems like an even split (plus you have "yield" vs. "give way" which is effectively the logical opposite of US's use of "meter" over "metre").
:: However, this is not a perfect world, and I don't think <code>en</code> should correspond to any particular variant. It is too fragmented across all software at this point to impose such a requirement. The inability to switch to <code>en-us</code> on this website foregoes an easy and simple solution to this problem that makes everyone happy, because the yanks (such as myself) can't be happy because we can't see the labels in American English even if we wanted to, and the other folk can't switch either as far as I'm aware (and the en-CA and en-GB languages in the preferences page seems to be deprecated). My point being, <code>en</code> is abused to mean "en-UK" just as often as it is abused to mean <code>en-US</code>; I think a decision shouldn't be made on such an assumption of one "default". — [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 14:48, 12 May 2026 (UTC)
:Hi @[[User:Theki|rae]]! I have no opinion nor preference on this, and given my background, I am just entirely confused about my spelling preferences myself, as you can tell from my inconsistent usage. I learned British English in school and used that for maybe two decades or so, but moved to the US and lived there for more than a decade, enough to be naturalized, but now I am back in Europe and I am technically a professor at King's College London, soooo.... honestly, I do not know. I don't remember having put too much thought into it at the moment I created it. The good thing is that in Wikifunctions, just as in Wikidata, it is easy to change, without messing things up too much (unlike in Wikipedia), so my suggestion is, just make the change, see if anyone complains, and if they do, discuss it more. I don't know if there is a guideline already in Wikifunctions about the variants. I am happy either way, and honestly, I keep forgetting which variant is which most of the time. --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 18:16, 10 May 2026 (UTC)
:: I can definitely understand this, although I am unfortunately rather passionate about any minutiae involving preferential minor differences in ''anything'', of which AmE vs. BrE chiefly is. So I dedicate a lot of headspace to it. More than I should. Not that I wish to imply that the comment above that I have wrote is of an irrational nature, or done out of spite or pure emotion and subjectivity; I do genuinely believe that ''RGBA color'' is beyond just a personal preference and is just logical. I may boldly go and change it, but for some reason I was expecting that changing the English label of a Type would require elevated permissions, and I also didn't want to do it only to get immediately reverted because it ''did'' strike a chord with someone, when I could instead see how apathetic, supportive, or in opposition interested people are beforehand and ''then'' act accordingly. I was not meaning to antagonize you over your spelling habits, I did actually use British English for a few years starting in 2020 before I went back to American English, so I'd be a hypocrite for me to decry you for not always sticking to some arbitrary standard of spelling words over the other. — [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 14:55, 12 May 2026 (UTC)
:Although I spell it “colour”, I think it makes more sense to use “color” for the type, since that is almost always the required spelling when the string functions as a keyword.
:More generally, though, Wikidata’s lexicographic data happens to favour “colour” over “color” and (quite rightly, in my view) lacks a specific representation for "en". This is unusual, in my experience, as "en" is widely misused in place of "en-US", where there are recorded spelling differences.
:(I would also say it is standard British English to use “program” in a programming context and “programme” elsewhere. Use of -ize rather than -ise is a matter of personal preference or house style, but regional autocorrect encourages -ise.) [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 11:00, 12 May 2026 (UTC)
:: ''Wikidata’s lexicographic data happens to favour “colour” over “color” and (quite rightly, in my view) lacks a specific representation for "en"''
:: Definitely agreeing with you on the latter being a good choice. However, I suspect the favoring of "colour" over "color" may be because, in terms of language codes, when sorted alphabetically <code>en-us</code> actually comes ''after'' <code>en-gb</code>. Although, the frontend seems to be sorting <code>en-ca</code> after <code>en-gb</code>, so I don't actually know how correct that is.
:: ''I would also say it is standard British English to use “program” in a programming context and “programme” elsewhere''
:: The context of the spelling was "''No program for the NLG SIG meeting for next Tuesday has been proposed''". In that usage context, I think it makes sense to assume that ''program'' is not being used to refer to a computer program, but to a ''program of events'' or similar, something that you would spell as a ''programme'' in British English. — [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 15:02, 12 May 2026 (UTC)
:{{s}} this. I'm obviously biased but I believe American English is preferable generally, American dominance on the internet (our Department of Defen'''s'''e invented it!) and rapidly-increasing consumption of American media by international English speakers means that more people use American English's conventions, this is clear through for example [http://trends.google.com/explore?q=color%2Ccolour&date=all&geo=Worldwide search trends] (though they aren't particularly reliable). Perhaps this is a bit of a supremacist opinion, but we should have internal consistency, and if we must choose, American English should be our first choice (then Indian and then British English) [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 14:10, 12 May 2026 (UTC)
:: This is rather flawed reasoning, though. I think probably any given British or Indian person would not agree on using that as the reasoning for this, not that you are necessarily ''completely wrong'', but if this is not a good enough reason for English Wikipedia's (admittedly extremely flawed) ''ENGVAR'' policy then I don't think it's likely it will pass here either.
:: Although of note is that [https://books.google.com/ngrams/graph?content=color%2Ccolour&year_start=1800&year_end=2022&corpus=en&smoothing=3&case_insensitive=true Google ngrams] agree with you, but "color" vs. "colour" is an eternal holy war that will not be won by demonstrating that more books use US spelling over Commonwealth spelling. — [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 14:44, 12 May 2026 (UTC)
:::You're probably right that it's not very sound. I'm biased in that other varieties of English irk me, and that's probably mutual for people who are used to other varieties of English when they read what I write! [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 14:56, 12 May 2026 (UTC)
:I've decided to boldly [[Special:Permalink/274271|make the change]]. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 15:02, 12 May 2026 (UTC)
:: Thank you. Considering both you and GrounderUK seem to consider it an okay change, I think this will do for now.
:: I should note that the matter of whether to move [[Wikifunctions:Catalogue/Colour functions]] in response to this (however this discussion will ultimately turn out) is a whole other can of worms, in my view. I can't say I have an opinion on that at the moment, but I'm putting it out there regardless. — [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 15:06, 12 May 2026 (UTC)
:::Personally, I'm in favor of moving the page and renaming all of the items on it. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 15:10, 12 May 2026 (UTC)
::I don't like this (exactly because of the American hegemony you cited), but again, it shouldn't matter because the software is meant to be multilingual. Clearly there's a bug preventing you from picking an English variant/dialect as your display language. But the search bar and Function/Type autocompletion do check the English variants for matches. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 15:15, 12 May 2026 (UTC)
== Proposals on the architecture of Abstract Content rendering ==
Starting from a discussion born on the Telegram chat, I've explained two different proposals on how the NLG on Abstract Wikipedia should be organized in the page [[abstract:User:Dv103/Abstract articles architectures]]. Please come to contribute to the discussion, or to propose alternatives. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 14:31, 11 May 2026 (UTC)
:Thank you for dedicating your time to writing this, it is very informative. I will try to add input once I'm not in over my head with finals. — [[User:Theki|rae<sup>5e</sup>]] <[[User talk:Theki|talk]]> 16:27, 12 May 2026 (UTC)
== Display function for HTML fragment ==
Currently, any collapsed Z89 literal appears as<blockquote><> [[Z89|HTML fragment]]</blockquote>If I were to create a new Function which returned something like<blockquote><> 123-byte HTML fragment <q><nowiki><td><span lang=</nowiki>…</q></blockquote>could that be connected to replace the collapsed form, or would it require changes to the Wikilambda software? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 16:14, 11 May 2026 (UTC)
:It might work, but I doubt it. Those angled brackets suggest that the collapsed form is not simply defaulting to the type’s label. Looking at [[:phab:T410509]], I’ve concluded that enhancements to the collapsed form were never considered, rather than being actively rejected. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 12:12, 12 May 2026 (UTC)
::[[:Phab:T391985]] documents the original design. Note the fifth bullet point under “Acceptance criteria”. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 12:21, 12 May 2026 (UTC)
:I'm not sure the byte-size is necessary, but the outer tag (or first outer tag, though generally I'd prefer most fragments use a wrapper tag if it needs multiple like JSX does, but that's a whole different topic) would be nice. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 12:51, 12 May 2026 (UTC)
me0pdwb777097ovu09c6krybwctj7gy
Z36201
0
85316
282540
281764
2026-06-12T05:21:34Z
99of9
1622
chinese is returning a (unvalidated) monolingual text
282540
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36201"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36200",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z36303",
"Z36303K1": {
"Z1K1": "Z7",
"Z7K1": "Z26039",
"Z26039K1": {
"Z1K1": "Z18",
"Z18K1": "Z36200K1"
},
"Z26039K2": {
"Z1K1": "Z18",
"Z18K1": "Z36200K2"
},
"Z26039K3": {
"Z1K1": "Z18",
"Z18K1": "Z36200K3"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "subject is instance of, wrap string"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
pyu3ptnjc6aw5f7qexn5l8er5r9dt7q
Wikifunctions:Administrators' noticeboard/Archive/2026/06
4
85361
282526
281918
2026-06-12T03:08:11Z
SpBot
978
archiving 1 section from [[Wikifunctions:Administrators' noticeboard]] (after section [[Wikifunctions:Administrators' noticeboard/Archive/2026/06#Navbar_broken|Navbar_broken]])
282526
wikitext
text/x-wiki
{{Talkarchive}}
== Import request ==
Please copy the hatnote template/module {{Q|5766677}} from a sister project. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 15:53, 5 June 2026 (UTC)
:Just out of curiosity: what is your intended use? [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 16:03, 5 June 2026 (UTC)
::Disambiguation on Project/Help pages. I've pre-emptively transcluded it on [[Special:EditPage/Wikifunctions:Catalogue/Programming functions|WF:Catalogue/Programming functions]] and [[Special:EditPage/Wikifunctions:Status|WF:Status]]. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 16:08, 5 June 2026 (UTC)
:Which one do you prefer? I can offer import from meta, commons, incubator, d, ar, en, es, fr, ru, zh. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 20:46, 6 June 2026 (UTC)
::I'm not seeing a copy on Wikidata or Meta (or Incubator), and the copy on Commons doesn't seem to be globalised, so I guess enwp? I was hoping there was an existing globalised version somewhere. Maybe we can build NLG functions for hatnotes soon. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 22:42, 6 June 2026 (UTC)
:::I have imported the template and related modules. For some reason there is still an error "Lua error in package.lua at line 80: module 'Module:Hatnote list' not found." altough I have imported this as well. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 17:55, 7 June 2026 (UTC)
::::I see "[[Module:Pagetype]] not found" [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 18:48, 7 June 2026 (UTC)
:::::I have imported this one and a few others. However, some modules will need to be adapted because of the differences between the wikis. --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 19:34, 7 June 2026 (UTC)
:<small>This section was archived on a request by: [[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 17:15, 8 June 2026 (UTC)</small>
== RGBA colour's type converters don't match Rational ==
See [[Talk:Z28579#Mismatching JS code representation]] for details. {{Unsigned |1= YoshiRulz|2= 17:38, 5 June 2026}}
:It [[Special:ListGroupRights|looks]] like this is something that only Wikifunctions staff can do. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 17:44, 6 June 2026 (UTC)
::Why? I thought "wikilambda-edit-converter" is the required user right and this is granted to "user". --[[User:Ameisenigel|Ameisenigel]] ([[User talk:Ameisenigel|talk]]) 20:52, 6 June 2026 (UTC)
:::Oh, looks like it is there. Either way, I get an error when I try. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 21:02, 6 June 2026 (UTC)
:<small>This section was archived on a request by: [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 18:18, 8 June 2026 (UTC)</small>
== Navbar broken ==
{{#invoke:Navbar|navbar|WF:Administrators' noticeboard|mini=y|style=float: inline-end;}}
[[Module:Navbar]] doesn't seem to have been imported correctly. When invoking this module on this page, it works for reasons I don't understand, but on most pages like [[Project:Sandbox]] the necessary CSS rules for <code>.hlist li</code> etc. are all missing. {{Unsigned |1= YoshiRulz|2= 16:10, 5 June 2026}}
:@[[User:YoshiRulz|YoshiRulz]], I've fixed the issue! You were right, the problem was that the required CSS rules for <code>.hlist</code> and <code>.navbar</code> were missing on this wiki. To resolve this, I created [[Module:Navbar/styles.css]] and imported the necessary styles, then updated [[Module:Navbar]] to properly load this stylesheet. The navbar should now render correctly on all pages. Let me know if you still see any weird formatting. Regards, [[User:ZI Jony|<span style="color:#8B0000">'''ZI Jony'''</span>]] [[User talk:ZI Jony|<sup><span style="color:Green"><i>(Talk)</i></span></sup>]] 18:51, 5 June 2026 (UTC)
::Still not working on the Sandbox page. Are there deeper caches that [[Special:Purge]] isn't clearing? [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 15:13, 6 June 2026 (UTC)
:::: @[[User:YoshiRulz|YoshiRulz]], It might be a deeper caching issue, or it could be a configuration detail with the CSS page itself. Try doing a '''null edit''' on the Sandbox page (click "Edit" and then "Publish changes" without actually typing anything). This forces the server to rebuild the page from scratch, which often works when Special:Purge fails. You should also try a '''hard refresh''' to clear your browser's local cache.
:::: If neither of those works, please check the '''Content Model''' of [[Module:Navbar/styles.css]]. By default, new pages are created as "Wikitext". For the <code><templatestyles></code> tag to actually load the CSS, the page's content model ''must'' be set to "Sanitized CSS" (you can change this via "Page information" -> "Change content model" on the left sidebar). Let me know if that does the trick! Regards, [[User:ZI Jony|<span style="color:#8B0000">'''ZI Jony'''</span>]] [[User talk:ZI Jony|<sup><span style="color:Green"><i>(Talk)</i></span></sup>]] 15:05, 8 June 2026 (UTC)
:::::Yes it's CSS, and no, neither Ctrl+F5 nor a null edit fixes it. Which wiki did you import the stylesheet from? I looked at Commons and Meta and they're both different to each other and to the copies here. Starting over and importing from Meta might be a good idea. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 15:21, 8 June 2026 (UTC)
::::::@[[User:YoshiRulz|YoshiRulz]], It turns out the root cause was that [[MediaWiki:Common.css]] does not exist on Wikifunctions! The navbar module relies on the global <code>.hlist</code> and <code>.plainlinks</code> classes to display properly, which were completely missing here. I have fixed it all by adding those missing layout rules directly into [[Module:Navbar/styles.css]]. It is working well for me now. Please check the Sandbox page and confirm if it looks good on your end too! Regards, [[User:ZI Jony|<span style="color:#8B0000">'''ZI Jony'''</span>]] [[User talk:ZI Jony|<sup><span style="color:Green"><i>(Talk)</i></span></sup>]] 08:47, 10 June 2026 (UTC)
::::::: Thank you! [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 13:46, 10 June 2026 (UTC)
:<small>This section was archived on a request by: [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 13:46, 10 June 2026 (UTC)</small>
4sowl02wc5zfuvz3lgv8lb11gpqkj9e
Z36277
0
85413
282248
282216
2026-06-11T12:59:13Z
GrounderUK
50
allow tagged scalars
282248
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36277"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z35910",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z35910(Z35910K1, Z35910K2):\n\tdef multicall(ZID8multi,taggedMulti):\n\t\n\t#all lists in taggedMulti that are tagged \"N\" must have the same number of elements, N\n\t#all lists in ZID8multi must contain a single string or N strings (unless N is undefined, when any length is valid)\n\t\n\t#returns one list for each list in ZID8multi (even if it's empty), but only if all its elements are strings (including the empty string)\n\t#N quoted call objects in each list or, if N is undefined, one call object for each string in the list in ZID8multi\n\t\n\t\targs_shape = shape_L1PLZ6N(taggedMulti) \n\t\t\t\t\t\t#Z881(Z882(Z881,\"N\"))\n\t\t\n\t\tN = derive_N(args_shape)\n\t\t\t# length constraint (if defined) for N-tagged lists in taggedMulti and non-singletons in ZID8multi\n\t\t\n\t\tZID8_shape = shape_L2Z6(ZID8multi) #Z881(Z881(Z6))\n\t\terrorZ5dict = validate(N,ZID8_shape,args_shape)\n\n\t\tif not errorZ5dict:\n\t\t\t\n\t\t\tcallZ7_Z99list = []\n\t\t\t#Z881(Z881(Z99(Z7)))\n\t\t\t#a list of lists, each being a list of quoteZ99 objects each containing a Z7/function call\n\t\t\tfor Zlist in ZID8multi:\n\t\t\t\t\n\t\t\t\tcallZ7_Z99list.append(qCall(Zlist, taggedMulti, N))\n\t\t\t\t#a list of quoteZ99 objects\n\t\t\n\t\t\treturn callZ7_Z99list\n\t\t\t\n\t\tthrowZ35990(errorZ5dict) #Wikifunctions.Error\n\t\n\tdef shape_L1PLZ6N(taggedMulti):\n\t\t# a list of list-lengths for lists tagged 'N'\n\t\t# Z881(Z882(Z881(Z1),Z6=='N')\n\t\tN_array = []\n\t\tfor t in taggedMulti:\n\t\t\t# (converted) Z881/list of Z882/pair\n\t\t\tN = None\n\t\t\tif taggedList(t):\n\t\t\t\tif t.K2 == 'N':\n\t\t\t\t\tN = len(t.K1)\n\t\t\tN_array.append(N)\n\t\t\t\n\t\treturn N_array\n\t\t\n\tdef derive_N(N_array):\n\t\t#int or None\n\t\tNlen = [n for n in N_array if n is not None]\n\t\tif not Nlen:\n\t\t\t#Z7calls will all have the same arguments\n\t\t\t\n\t\t\treturn None\n\t\t\t\n\t\tif max(Nlen) == min(Nlen):\n\t\t\t#all values are equal\n\t\t\t\n\t\t\treturn max(Nlen)\n\t\t\t#args can be rectangularized\n\t\t\t\n\tdef shape_L2Z6(l2):\n\t #l2 should be a list of string-lists\n\t \n\t\tZ6_array = []\n\t\t# a list of list-lengths for all lists where all elements are strings\n\t\tif not isinstance(l2, list):\n\t\t# invalid input: will become error\n\t\t return [None]\n\n\t\tfor l1 in l2:\n\t\t\tif (isinstance(l1, list) \n\t\t\t\tand all(isinstance(s, str) for s in l1)\n ):\n\t\t\t\tZ6_array.append(len(l1))\n\t\t\telse:\n\t\t\t\t#invalid input: will become error\n\t\t\t\tZ6_array.append(None)\n\t\t\t\t\n\t\treturn Z6_array\n\t\t\n\tdef validate(N,ZID8_shape,args_shape):\n\t\terrorZ5dict = {}\n\t\t\n\t\terr_j = []\n\t\terr_n = []\n\t\tif N is None:\n\t\t# error 'N' unless all args are effectively scalar (no list is tagged 'N')\n\t\t\tfor j,n in enumerate(args_shape):\n\t\t\t\tif n is not None:\n\t\t\t\t\t# not effectively scalar\n\t\t\t\t\terr_j.append(j)\n\t\t\t\t\terr_n.append(n)\n\t\t\t\t\t\n\t\t\t\tif err_j:\n\t\t\t\t\terrorZ5dict['N'] = {\n\t\t\t\t\t\t'argument': 'Z35910K2',\n\t\t\t\t\t\t'index': err_j,\n\t\t\t\t\t\t'length': err_n,\n\t\t\t\t\t\t'message': f\"lengths of all lists tagged 'N' must be equal\"\n\t\t\t\t\t}\n\n\t\telse:\n\t\t# N is defined, so applies to functions\n\t\t# otherwise error 'NZ8'\n\t\t\tfor j,n in enumerate(ZID8_shape):\n\t\t\t\tif n not in (1, N):\n\t\t\t\t\terr_j.append(j)\n\t\t\t\t\terr_n.append(n)\n\t\t\t\t\t\n\t\t\t\tif err_j:\n\t\t\t\t\terrorZ5dict['NZ8'] = {\n\t\t\t\t\t\t'argument': 'Z35910K1',\n\t\t\t\t\t\t'index': err_j,\n\t\t\t\t\t\t'length': err_n,\n\t\t\t\t\t\t'required': N,\n\t\t\t\t\t\t'message': f\"all lists of strings in Z35910K1 must have a length of 1 or {str(N)}\"\n\t\t\t\t\t}\n\t\t\n\t\t\tZ6_err_j = [j for j,z in enumerate(ZID8_shape) if z is None]\n\t\t\t# all indexed elements are string-lists\n\t\t\t# otherwise error 'Z6'\n\n\t\t\tif Z6_err_j:\n\t\t\t\terrorZ5dict['Z6'] = {\n\t\t\t\t\t'argument': 'Z35910K1',\n\t\t\t\t\t'index': Z6_err_j,\n\t\t\t\t\t'message': f\"all elements of lists in Z35910K1 must be strings\"\n\t\t\t\t}\n\t\t\t\n\t\treturn errorZ5dict\n\t\t\n\tdef throwZ35990(errors):\n\t\tsupplementary = []\n\t\tif 'N' in errors and 'NZ8' not in errors:\n\t\t\tif 'Z6' in errors:\n\t\t\t\targument = errors['Z6'].get('argument')\n\t\t\t\tindex = errors['Z6'].get('index')\n\t\t\t\tlength = ''\n\t\t\t\tsupplementary = [errors['Z6'].get('message')]\n\t\t\trequired = ''\n\t\t\targument_list = errors['N'].get('argument')\n\t\t\tindex_list = errors['N'].get('index')\n\t\t\tlength_list = errors['N'].get('length')\n\t\t\tmessage = errors['N'].get('message')\n\t\telif 'NZ8' in errors and 'N' not in errors:\n\t\t\targument = errors['NZ8'].get('argument')\n\t\t\tindex = errors['NZ8'].get('index')\n\t\t\tlength = errors['NZ8'].get('length')\n\t\t\trequired = errors['NZ8'].get('index')\n\t\t\tmessage = errors['NZ8'].get('message')\n\t\t\tif 'Z6' in errors:\n\t\t\t\targument_list = errors['Z6'].get('argument')\n\t\t\t\tindex_list = errors['Z6'].get('index')\n\t\t\t\tlength_list = ''\n\t\t\t\tsupplementary = [errors['Z6'].get('message')]\n\t\telif 'Z6' in errors:\n\t\t\targument = errors['Z6'].get('argument')\n\t\t\tindex = str(errors['Z6'].get('index'))\n\t\t\tlength = ''\n\t\t\trequired = ''\n\t\t\targument_list = ''\n\t\t\tindex_list = ''\n\t\t\tlength_list = ''\n\t\t\tmessage = errors.get('Z6',{}).get('message',\"\")\n\t\t\n\t\treturn Wikifunctions.Error(\n\t\t\t\"Z35990\", [\n\t\t\targument, index, length, required, argument_list, index_list, length_list, message, '', 'Z35910: Z36277'\n\t\t\t] + supplementary\n\t\t)\n\n\tdef qCall(ZID8list, tagged, N):\n\t\t\n\t\tif not ZID8list:\n\t\t\treturn []\n\t\t\t\n\t\tquoteZ99list= []\n\t\t\n\t\tif N is None:\n\t\t\tQ = len(ZID8list)\n\t\telse:\n\t\t\tQ = N\n\t\t\t\n\t\tfor q in range(Q):\n\t\t\tZ7K1 = byIndex(ZID8list, q, N)\n\t\t\targs = []\n\t\t\tfor t in tagged:\n\t\t\t\targs.append(byIndex(t, q, N))\n\t\t\tquoteZ99list.append(Z99(Z7(Z7K1, args)))\n\t\t\n\t\treturn quoteZ99list\n\t\t\n\tdef taggedList(pair):\n\t\tif hasattr(pair, \"K2\"):\n\t\t\tif isinstance(pair.K1, list):\n\t\t\t\tif isinstance(pair.K2, str):\n\t\t\t\t\treturn True\n\t\t\n\t\treturn False\n\t\t\n\tdef byIndex(obj, i, N):\n\t\tif taggedList(obj):\n\t\t\tif obj.K2 == 'N':\n\t\t\t\treturn obj.K1[i]\n\t\t\telse:\n\t\t\t\treturn obj.K1\n\t\t\t\t\n\t\tif isinstance(obj, list):\n\t\t\tif len(obj) == 1:\n\t\t\t\treturn obj[0]\n\t\t\telif len(obj) == N:\n\t\t\t\treturn obj[i]\n\t\t\t# empty list already returned by caller\n\t\t\n\t\t#taggedScalar?\n\t\tif hasattr(obj, 'K1'):\n\t\t\treturn obj.K1\n\t\t\t\n\t\traise TypeError(\"unexpected object in byIndex\")\n\t\t# prior validation should prevent this\n\t\n\tdef Z99(Z1):\n\t\treturn ZObject(\n\t\t\tZ1K1(\"Z99\"),\n\t\t\tZ99K1 = Z1\n\t\t)\n\t\n\tdef Z7(ZID, argList):\n\t\targs = (Kmap(ZID, argList))\n\t\treturn ZObject(\n\t\t\tZ1K1(\"Z7\"),\n\t\t\tZ7K1 = ZReference(ZID),\n\t\t\t**args\n\t\t)\n\t\n\tdef Z1K1(Z4_ZID):\n\t\treturn {\n\t\t\t\"Z1K1\": \"Z9\",\n\t\t\t\"Z9K1\": Z4_ZID\n\t\t}\n\t\n\tdef Kmap(prefix, argList):\n\t\tKmap = {}\n\t\tfor j,a in enumerate(argList):\n\t\t\tkey = f'{prefix}K{str(j+1)}'\n\t\t\tKmap.update({key: a})\n\t\t\n\t\treturn Kmap\n\t\t\n\treturn multicall(Z35910K1, Z35910K2)"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
f174tlxp3qnx5oppo00lstgkj64ygw1
282364
282248
2026-06-11T19:47:22Z
GrounderUK
50
initialize unused error values
282364
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36277"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z35910",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z35910(Z35910K1, Z35910K2):\n\tdef multicall(ZID8multi,taggedMulti):\n\t\n\t#all lists in taggedMulti that are tagged \"N\" must have the same number of elements, N\n\t#all lists in ZID8multi must contain a single string or N strings (unless N is undefined, when any length is valid)\n\t\n\t#returns one list for each list in ZID8multi (even if it's empty), but only if all its elements are strings (including the empty string)\n\t#N quoted call objects in each list or, if N is undefined, one call object for each string in the list in ZID8multi\n\t\n\t\targs_shape = shape_L1PLZ6N(taggedMulti) \n\t\t\t\t\t\t#Z881(Z882(Z881,\"N\"))\n\t\t\n\t\tN = derive_N(args_shape)\n\t\t\t# length constraint (if defined) for N-tagged lists in taggedMulti and non-singletons in ZID8multi\n\t\t\n\t\tZID8_shape = shape_L2Z6(ZID8multi) #Z881(Z881(Z6))\n\t\terrorZ5dict = validate(N,ZID8_shape,args_shape)\n\n\t\tif not errorZ5dict:\n\t\t\t\n\t\t\tcallZ7_Z99list = []\n\t\t\t#Z881(Z881(Z99(Z7)))\n\t\t\t#a list of lists, each being a list of quoteZ99 objects each containing a Z7/function call\n\t\t\tfor Zlist in ZID8multi:\n\t\t\t\t\n\t\t\t\tcallZ7_Z99list.append(qCall(Zlist, taggedMulti, N))\n\t\t\t\t#a list of quoteZ99 objects\n\t\t\n\t\t\treturn callZ7_Z99list\n\t\t\t\n\t\tthrowZ35990(errorZ5dict) #Wikifunctions.Error\n\t\n\tdef shape_L1PLZ6N(taggedMulti):\n\t\t# a list of list-lengths for lists tagged 'N'\n\t\t# Z881(Z882(Z881(Z1),Z6=='N')\n\t\tN_array = []\n\t\tfor t in taggedMulti:\n\t\t\t# (converted) Z881/list of Z882/pair\n\t\t\tN = None\n\t\t\tif taggedList(t):\n\t\t\t\tif t.K2 == 'N':\n\t\t\t\t\tN = len(t.K1)\n\t\t\tN_array.append(N)\n\t\t\t\n\t\treturn N_array\n\t\t\n\tdef derive_N(N_array):\n\t\t#int or None\n\t\tNlen = [n for n in N_array if n is not None]\n\t\tif not Nlen:\n\t\t\t#Z7calls will all have the same arguments\n\t\t\t\n\t\t\treturn None\n\t\t\t\n\t\tif max(Nlen) == min(Nlen):\n\t\t\t#all values are equal\n\t\t\t\n\t\t\treturn max(Nlen)\n\t\t\t#args can be rectangularized\n\t\t\t\n\tdef shape_L2Z6(l2):\n\t #l2 should be a list of string-lists\n\t \n\t\tZ6_array = []\n\t\t# a list of list-lengths for all lists where all elements are strings\n\t\tif not isinstance(l2, list):\n\t\t# invalid input: will become error\n\t\t return [None]\n\n\t\tfor l1 in l2:\n\t\t\tif (isinstance(l1, list) \n\t\t\t\tand all(isinstance(s, str) for s in l1)\n ):\n\t\t\t\tZ6_array.append(len(l1))\n\t\t\telse:\n\t\t\t\t#invalid input: will become error\n\t\t\t\tZ6_array.append(None)\n\t\t\t\t\n\t\treturn Z6_array\n\t\t\n\tdef validate(N,ZID8_shape,args_shape):\n\t\terrorZ5dict = {}\n\t\t\n\t\terr_j = []\n\t\terr_n = []\n\t\tif N is None:\n\t\t# error 'N' unless all args are effectively scalar (no list is tagged 'N')\n\t\t\tfor j,n in enumerate(args_shape):\n\t\t\t\tif n is not None:\n\t\t\t\t\t# not effectively scalar\n\t\t\t\t\terr_j.append(j)\n\t\t\t\t\terr_n.append(n)\n\t\t\t\t\t\n\t\t\t\tif err_j:\n\t\t\t\t\terrorZ5dict['N'] = {\n\t\t\t\t\t\t'argument': 'Z35910K2',\n\t\t\t\t\t\t'index': err_j,\n\t\t\t\t\t\t'length': err_n,\n\t\t\t\t\t\t'message': f\"lengths of all lists tagged 'N' must be equal\"\n\t\t\t\t\t}\n\n\t\telse:\n\t\t# N is defined, so applies to functions\n\t\t# otherwise error 'NZ8'\n\t\t\tfor j,n in enumerate(ZID8_shape):\n\t\t\t\tif n not in (1, N):\n\t\t\t\t\terr_j.append(j)\n\t\t\t\t\terr_n.append(n)\n\t\t\t\t\t\n\t\t\t\tif err_j:\n\t\t\t\t\terrorZ5dict['NZ8'] = {\n\t\t\t\t\t\t'argument': 'Z35910K1',\n\t\t\t\t\t\t'index': err_j,\n\t\t\t\t\t\t'length': err_n,\n\t\t\t\t\t\t'required': N,\n\t\t\t\t\t\t'message': f\"all lists of strings in Z35910K1 must have a length of 1 or {str(N)}\"\n\t\t\t\t\t}\n\t\t\n\t\t\tZ6_err_j = [j for j,z in enumerate(ZID8_shape) if z is None]\n\t\t\t# all indexed elements are string-lists\n\t\t\t# otherwise error 'Z6'\n\n\t\t\tif Z6_err_j:\n\t\t\t\terrorZ5dict['Z6'] = {\n\t\t\t\t\t'argument': 'Z35910K1',\n\t\t\t\t\t'index': Z6_err_j,\n\t\t\t\t\t'message': f\"all elements of lists in Z35910K1 must be strings\"\n\t\t\t\t}\n\t\t\t\n\t\treturn errorZ5dict\n\t\t\n\tdef throwZ35990(errors):\n\t\tsupplementary = []\n\t\tif 'N' in errors and 'NZ8' not in errors:\n\t\t\tif 'Z6' in errors:\n\t\t\t\targument = errors['Z6'].get('argument')\n\t\t\t\tindex = errors['Z6'].get('index')\n\t\t\t\tlength = ''\n\t\t\t\tsupplementary = [errors['Z6'].get('message')]\n\t\t\trequired = ''\n\t\t\targument_list = errors['N'].get('argument')\n\t\t\tindex_list = errors['N'].get('index')\n\t\t\tlength_list = errors['N'].get('length')\n\t\t\tmessage = errors['N'].get('message')\n\t\telif 'NZ8' in errors and 'N' not in errors:\n\t\t\targument = errors['NZ8'].get('argument')\n\t\t\tindex = errors['NZ8'].get('index')\n\t\t\tlength = errors['NZ8'].get('length')\n\t\t\trequired = errors['NZ8'].get('index')\n\t\t\tmessage = errors['NZ8'].get('message')\n\t\t\tif 'Z6' in errors:\n\t\t\t\targument_list = errors['Z6'].get('argument')\n\t\t\t\tindex_list = errors['Z6'].get('index')\n\t\t\t\tlength_list = ''\n\t\t\t\tsupplementary = [errors['Z6'].get('message')]\n\t\t\telse:\n\t\t\t\targument_list = '',\n\t\t\t\tindex_list = '',\n\t\t\t\tlength_list = ''\n\t\telif 'Z6' in errors:\n\t\t\targument = errors['Z6'].get('argument')\n\t\t\tindex = str(errors['Z6'].get('index'))\n\t\t\tlength = ''\n\t\t\trequired = ''\n\t\t\targument_list = ''\n\t\t\tindex_list = ''\n\t\t\tlength_list = ''\n\t\t\tmessage = errors.get('Z6',{}).get('message',\"\")\n\t\t\n\t\treturn Wikifunctions.Error(\n\t\t\t\"Z35990\", [\n\t\t\targument, index, length, required, argument_list, index_list, length_list, message, '', 'Z35910: Z36277'\n\t\t\t] + supplementary\n\t\t)\n\n\tdef qCall(ZID8list, tagged, N):\n\t\t\n\t\tif not ZID8list:\n\t\t\treturn []\n\t\t\t\n\t\tquoteZ99list= []\n\t\t\n\t\tif N is None:\n\t\t\tQ = len(ZID8list)\n\t\telse:\n\t\t\tQ = N\n\t\t\t\n\t\tfor q in range(Q):\n\t\t\tZ7K1 = byIndex(ZID8list, q, N)\n\t\t\targs = []\n\t\t\tfor t in tagged:\n\t\t\t\targs.append(byIndex(t, q, N))\n\t\t\tquoteZ99list.append(Z99(Z7(Z7K1, args)))\n\t\t\n\t\treturn quoteZ99list\n\t\t\n\tdef taggedList(pair):\n\t\tif hasattr(pair, \"K2\"):\n\t\t\tif isinstance(pair.K1, list):\n\t\t\t\tif isinstance(pair.K2, str):\n\t\t\t\t\treturn True\n\t\t\n\t\treturn False\n\t\t\n\tdef byIndex(obj, i, N):\n\t\tif taggedList(obj):\n\t\t\tif obj.K2 == 'N':\n\t\t\t\treturn obj.K1[i]\n\t\t\telse:\n\t\t\t\treturn obj.K1\n\t\t\t\t\n\t\tif isinstance(obj, list):\n\t\t\tif len(obj) == 1:\n\t\t\t\treturn obj[0]\n\t\t\telif len(obj) == N:\n\t\t\t\treturn obj[i]\n\t\t\t# empty list already returned by caller\n\t\t\n\t\t#taggedScalar?\n\t\tif hasattr(obj, 'K1'):\n\t\t\treturn obj.K1\n\t\t\t\n\t\traise TypeError(\"unexpected object in byIndex\")\n\t\t# prior validation should prevent this\n\t\n\tdef Z99(Z1):\n\t\treturn ZObject(\n\t\t\tZ1K1(\"Z99\"),\n\t\t\tZ99K1 = Z1\n\t\t)\n\t\n\tdef Z7(ZID, argList):\n\t\targs = (Kmap(ZID, argList))\n\t\treturn ZObject(\n\t\t#\tZ1K1(\"Z7\"),\n\t\t\t{\n\t\t\t\t\"Z1K1\": \"Z9\",\n\t\t\t\t\"Z9K1\": \"Z7\"\n\t\t\t},\n\t\t\tZ7K1 = ZReference(ZID),\n\t\t\t**args\n\t\t)\n\t\n\tdef Z1K1(Z4_ZID):\n\t\treturn {\n\t\t\t\"Z1K1\": \"Z9\",\n\t\t\t\"Z9K1\": Z4_ZID\n\t\t}\n\t\n\tdef Kmap(prefix, argList):\n\t\tKmap = {}\n\t\tfor j,a in enumerate(argList):\n\t\t\tkey = f'{prefix}K{str(j+1)}'\n\t\t\tKmap.update({key: a})\n\t\t\n\t\treturn Kmap\n\t\t\n\treturn multicall(Z35910K1, Z35910K2)"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ilzxmh0yw3sgofytl70971nx20ifpf1
Translations:Wikifunctions:Type/41/qqq
1198
85449
282245
282188
2026-06-11T12:56:57Z
七八年再来一次
10776
282245
wikitext
text/x-wiki
Wikilambda, the software that runs Wikifunctions.
s7fh8x49oawk43y37lmqcp0uiwg78ek
Translations:Wikifunctions:Type/41/zh-hans
1198
85450
282246
282189
2026-06-11T12:57:29Z
七八年再来一次
10776
282246
wikitext
text/x-wiki
=== WikiLambda 结构 ===
b8sodk7dc3o4f9go5y9gz6f4zhy4wkr
Translations:Wikifunctions:Execution targets/Page display title/zh-hans
1198
85457
282217
2026-06-11T12:20:03Z
七八年再来一次
10776
Created page with "维基函数:演绎靶标"
282217
wikitext
text/x-wiki
维基函数:演绎靶标
6umdi53wui38dtnehoadygwph2z6ibj
Wikifunctions:Execution targets/zh-hans
4
85458
282218
2026-06-11T12:20:07Z
七八年再来一次
10776
Created page with "维基函数:演绎靶标"
282218
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Definition ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Execution targets''' are well-formed code snippets written in "conventional" programming languages (e.g. Python), as opposed to the bespoke composition language implemented in Wikifunctions.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
Execution targets are useful for writing complex, self-contained algorithms, especially where performance is important.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Current status ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How function execution works ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, the <code>Z8/Function</code> is the primary object of concern.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A <code>Z8/Function</code> can have multiple <code>Z14/Implementation</code>s.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Every <code>Z14/Implementation</code> attached to a given function should behave identically with respect to inputs and outputs, though they may differ vastly in terms of their performance characteristics.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">An implementation can be built-in (defined as part of the core Wikifunctions runtime), evaluated (run as an execution target), or a composition (implemented by arbitrarily nested calls to other functions).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Evaluated''' implementations are of interest here.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An evaluated implementation packages all required information about a function call and sends it to the function evaluator.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">The function evaluator has '''executor'''s that run the included code snippet as appropriate for the requested '''programming language'''.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, if an implementation declares that it is in Python, the orchestrator will send to the Python evaluator the following information:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">the Python source code string;</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the arguments to the function;</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">for each argument, the Python source code string for the relevant '''type converters to code''' (if applicable);</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">for the return value, the Python source code string for the relevant '''type converters from code''' (if applicable).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Following are some definitions to supplement the above example.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Supported programming languages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, Wikifunctions supports function execution in Python and JavaScript.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions uses, respectively, the RustPython implementation of Python and the QuickJS engine for JS.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">These implementations and engines have been chosen due to better support for WebAssembly.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In future, the list of supported languages (and language versions!) will grow.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Type conversion ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Overview ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Type converter'''s transform data between the ZObject representation and the natural idioms of a given programming language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Type converters allow for source code in a programming language to operate over data in a convenient way, avoiding a great deal of boilerplate code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, in ZObject normal form, a list containing the single string <code>"😤Wikifunctions😤"</code> looks like
</div>
<syntaxhighlight lang="javascript">
{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "😤Wikifunctions😤"
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
}
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Type converters allow this rather cumbersome representation to be realized, simply, as
</div>
<syntaxhighlight lang="python">
["😤Wikifunctions😤"] # <span lang="en" dir="ltr" class="mw-content-ltr">list with a single string</span>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
in Python, or as
</div>
<syntaxhighlight lang="javascript">
["😤Wikifunctions😤"] // <span lang="en" dir="ltr" class="mw-content-ltr">list with a single string</span>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
in JavaScript.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Default type conversion ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a small set of built-in types, the executions provide '''default type converter'''s.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">These type converters automatically infer how to convert from ZObject to code (based on the object's <code>Z1K1/Type</code>) and from code to ZObject (based on object introspection).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, in Python, if a function receives as input an object like</span>
<syntaxhighlight lang="javascript">
{
"Z1K1": "Z6",
"Z6K1": "STRING"
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
then the default type conversion will infer from <code>Z1K1 => Z6</code> that this object is a <code>Z6/String</code>, and convert the input to a Python <code>str</code>:
</div>
<syntaxhighlight lang="python">
"STRING"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that these determinations are made recursively where necessary, as in the list example above. In a more extreme case: an object with type <code>Z883(Z6, Z881(Z6))</code> will become, in Python, a <code>dict</code> whose keys are <code>str</code>s and whose values are <code>list[str]</code>s.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Working in reverse, default type conversion from code to the ZObject representation will check the types of objects (with a given programming language's introspection capabilities).
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>str</code> in Python or <code>String</code> in JavaScript will become a <code>Z6/string</code>.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In the nontrivial case, a Python <code>dict{str:list[str]}</code> or a JavaScript <code>Map<String, Array[String]></code> will become a ZObject whose type is given by <code>Z883(Z6, Z881(Z6))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Following is a table of ZObject types and the corresponding types in Python and JavaScript.
</div>
{|class="wikitable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">Type conversion in function executors</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">ZObject type</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Corresponding Python type</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Corresponding JS type</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Example ZObject instance</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Example Python instance</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Example JS instance</span>
|-
! <code>Z6</code>
| <syntaxhighlight lang="python">str</syntaxhighlight>
| <syntaxhighlight lang="javascript">String</syntaxhighlight>
|-
| <syntaxhighlight lang="json">{"Z1K1":"Z6","Z6K1":"strang"}</syntaxhighlight>
| <syntaxhighlight lang="python">"strang"</syntaxhighlight>
| <syntaxhighlight lang="javascript">"strang"</syntaxhighlight>
|-
! <code>Z9</code>
| <code>ZReference</code><ref name=":0" group="Note"><span lang="en" dir="ltr" class="mw-content-ltr"><code>ZReference</code> is a custom-defined class in Python and JavaScript.</span> </ref>
| <code>ZReference</code><ref name=":0" group="Note" />
|-
| <syntaxhighlight lang="json">{"Z1K1":"Z9","Z9K1":"Z10000"}</syntaxhighlight>
| <syntaxhighlight lang="python">ZReference("Z10000")</syntaxhighlight>
| <syntaxhighlight lang="javascript">new ZReference("Z10000")</syntaxhighlight>
|-
! <code>Z21</code>
| <syntaxhighlight lang="python">NoneType</syntaxhighlight>
| <code>-</code>
|-
| <syntaxhighlight lang="json">{"Z1K1":{"Z1K1":"Z9","Z9K1":"Z21"}}</syntaxhighlight>
| <syntaxhighlight lang="python">None</syntaxhighlight>
| <syntaxhighlight lang="javascript">null</syntaxhighlight>
|-
! <code>Z40</code>
| <syntaxhighlight lang="python">bool</syntaxhighlight>
| <syntaxhighlight lang="javascript">Boolean</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1":"Z40"
},
"Z40K1": {
"Z1K1":"Z9",
"Z9K1":"Z41"
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">True</syntaxhighlight>
| <syntaxhighlight lang="javascript">true</syntaxhighlight>
|-
! <code>Z881(Z?)</code>
| <code>list[?]</code>
| <code>Array[?]</code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "stronk"
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">["stronk"]</syntaxhighlight>
| <syntaxhighlight lang="javascript">["stronk"]</syntaxhighlight>
|-
! <code>Z882(Z?,Z?)</code>
| <code>ZPair</code><ref name=":1" group="Note"><span lang="en" dir="ltr" class="mw-content-ltr"><code>ZPair</code> is a custom-defined class in Python and JavaScript.</span></ref>
| <code>ZPair<ref name=":1" group="Note" /></code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "stronk"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}</syntaxhighlight>
| <code>ZPair("stronk", True)</code>
| <code>new ZPair("stronk", true)</code>
|-
! <code>Z883(Z?,Z?)</code>
| <code>dict</code>
| <code>Map</code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z883"
},
"Z883K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z883K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "Hello"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "Goodbye"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z42"
}
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">{
"Hello": True,
"Goodbye": False
}</syntaxhighlight>
| <syntaxhighlight lang="javascript">new Map([
["Hello", true],
["Goodbye", false]
])</syntaxhighlight>
|}
<references group="Note" />
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Custom and non-built-in type conversion ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For non-built-in types, both Python and JavaScript additionally support a <code>ZObject</code> class.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For non-built-in objects, <code>ZObject</code> provides a thin wrapper for arbitrary JSON objects that cleave to the ZObject syntax.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Python, such an object can be created as follows.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z1K1</code> should be given as the first argument.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">All other arguments should be supplied as <code>kwargs</code>, i.e. by supplying each key as a separate argument to the instantiation of <code>ZObject</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">When a <code>ZObject</code> is type-converted, <code>Z1K1</code> will be retained as-is, and all other elements will be type-converted according to the above-described logic.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example:</span>
<syntaxhighlight lang="python" line="line">
def Z20000():
return ZObject(
{ "Z1K1": "Z9", "Z9K1": "Z10500" },
Z10500K1="a string",
Z10500K2=True )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When type-converted, the result of this function will become
</div>
<syntaxhighlight lang="json" line="line">
{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": "a string"
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
The equivalent incantation in JavaScript is as follows.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>new ZObject</code> will construct a <code>ZObject</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The first argument should be a <code>Map</code> mapping ZObject keys to type-converted values, like the <code>kwargs</code> above.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The second argument should be the <code>Z1K1</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example:</span>
<syntaxhighlight lang="javascript" line="line">
function Z20000() {
return new ZObject(
new Map( [
[ "Z10500K1", "a string" ],
[ "Z10500K2", true ]
] ),
{ "Z1K1": "Z9", "Z9K1": "Z10500" } );
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When type-converted, the result of this function will likewise become
</div>
<syntaxhighlight lang="json" line="line">
{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": "a string"
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Custom type converters''' allow one to avoid this default behavior.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Custom type converters are attached to a <code>Z4/Type</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z4K7</code> gives the list of converters from ZObject JSON syntax to code, while <code>Z4K8</code> gives the list of converters from code to JSON syntax.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For the example above, we might define a custom type, e.g., in Python</span>
<syntaxhighlight lang="python" line="line">
class MyType:
def __init__(self, thestring, thebool):
self.thestring = thestring
self.thebool = thebool
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
The type converter to code would then look like
</div>
<syntaxhighlight lang="python" line="line">
def Z10501(as_json):
return MyType(
as_json["Z10500K1"]["Z6K1"],
as_json["Z10500K2"]["Z9K1"] == "Z41")
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the type converter from code would look like
</div>
<syntaxhighlight lang="python" line="line">
def Z10502(as_code):
return {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": as_code.thestring
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41" if as_code.thebool else "Z42"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that custom type converters are not in any way constrained to be symmetrical: the system does not enforce, for example, that, if <code>MyType</code> is the target type for conversion to code, it also be the starting point for conversion from code.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">If custom type conversion is defined in only one direction, the system will attempt to fall back on the default behavior.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, any such guarantees have to be managed by the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Also note that it's currently necessary to re-implement the default type conversion (e.g., in this case, for strings and Booleans) within the type converter.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">This is also true for types that contain other types that implement custom type conversion: the entire type conversion function must be implemented for the top-level object.</span>
<!-- TODO: consult Abstract_Wikipedia/Representation_of_errors for better way to represent ZObjects in Wikitext -->
<div lang="en" dir="ltr" class="mw-content-ltr">
== Desiderata and future work ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Composability of executed code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, executed code cannot call other Wikifunctions modules.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">There is provisional support for this in the code, but the feature is far from being production-ready.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually, we hope to make it possible for executed code to make arbitrary calls to Wikifunctions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Composability of type converters ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It would be nice if one did not have to rewrite type conversion functions for types that contain other types.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">At present, it is possible, in some cases, to call the <code>serialize</code> and <code>deserialize</code> functions to convert built-in types within custom type converters, but this is unreliable.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
It also doesn't work for types that implement custom type conversion: the <code>serialize</code> and <code>deserialize</code> functions only work with built-in and default type conversion.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, there is a single exception to this.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">In the special case of Lists whose elements define custom type converters, custom type converters defined on the elements are used when type-converting the List.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We eventually hope to extend this functionality to the general case.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">This may involve a loss of type inference functionality, which will solely affect cases where a function defines its inputs/outputs as <code>Z1</code>.</span>
[[Category:Technical documentation{{#translation:}}]]
8nmf2qegfcxsutjubd1u2gaxmhrx5uz
282220
282218
2026-06-11T12:20:21Z
七八年再来一次
10776
Created page with "== 定义 =="
282220
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
<span id="Definition"></span>
== 定义 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Execution targets''' are well-formed code snippets written in "conventional" programming languages (e.g. Python), as opposed to the bespoke composition language implemented in Wikifunctions.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
Execution targets are useful for writing complex, self-contained algorithms, especially where performance is important.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Current status ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How function execution works ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, the <code>Z8/Function</code> is the primary object of concern.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A <code>Z8/Function</code> can have multiple <code>Z14/Implementation</code>s.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Every <code>Z14/Implementation</code> attached to a given function should behave identically with respect to inputs and outputs, though they may differ vastly in terms of their performance characteristics.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">An implementation can be built-in (defined as part of the core Wikifunctions runtime), evaluated (run as an execution target), or a composition (implemented by arbitrarily nested calls to other functions).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Evaluated''' implementations are of interest here.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An evaluated implementation packages all required information about a function call and sends it to the function evaluator.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">The function evaluator has '''executor'''s that run the included code snippet as appropriate for the requested '''programming language'''.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, if an implementation declares that it is in Python, the orchestrator will send to the Python evaluator the following information:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">the Python source code string;</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the arguments to the function;</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">for each argument, the Python source code string for the relevant '''type converters to code''' (if applicable);</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">for the return value, the Python source code string for the relevant '''type converters from code''' (if applicable).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Following are some definitions to supplement the above example.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Supported programming languages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, Wikifunctions supports function execution in Python and JavaScript.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions uses, respectively, the RustPython implementation of Python and the QuickJS engine for JS.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">These implementations and engines have been chosen due to better support for WebAssembly.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In future, the list of supported languages (and language versions!) will grow.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Type conversion ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Overview ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Type converter'''s transform data between the ZObject representation and the natural idioms of a given programming language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Type converters allow for source code in a programming language to operate over data in a convenient way, avoiding a great deal of boilerplate code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, in ZObject normal form, a list containing the single string <code>"😤Wikifunctions😤"</code> looks like
</div>
<syntaxhighlight lang="javascript">
{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "😤Wikifunctions😤"
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
}
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Type converters allow this rather cumbersome representation to be realized, simply, as
</div>
<syntaxhighlight lang="python">
["😤Wikifunctions😤"] # <span lang="en" dir="ltr" class="mw-content-ltr">list with a single string</span>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
in Python, or as
</div>
<syntaxhighlight lang="javascript">
["😤Wikifunctions😤"] // <span lang="en" dir="ltr" class="mw-content-ltr">list with a single string</span>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
in JavaScript.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Default type conversion ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a small set of built-in types, the executions provide '''default type converter'''s.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">These type converters automatically infer how to convert from ZObject to code (based on the object's <code>Z1K1/Type</code>) and from code to ZObject (based on object introspection).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, in Python, if a function receives as input an object like</span>
<syntaxhighlight lang="javascript">
{
"Z1K1": "Z6",
"Z6K1": "STRING"
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
then the default type conversion will infer from <code>Z1K1 => Z6</code> that this object is a <code>Z6/String</code>, and convert the input to a Python <code>str</code>:
</div>
<syntaxhighlight lang="python">
"STRING"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that these determinations are made recursively where necessary, as in the list example above. In a more extreme case: an object with type <code>Z883(Z6, Z881(Z6))</code> will become, in Python, a <code>dict</code> whose keys are <code>str</code>s and whose values are <code>list[str]</code>s.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Working in reverse, default type conversion from code to the ZObject representation will check the types of objects (with a given programming language's introspection capabilities).
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>str</code> in Python or <code>String</code> in JavaScript will become a <code>Z6/string</code>.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In the nontrivial case, a Python <code>dict{str:list[str]}</code> or a JavaScript <code>Map<String, Array[String]></code> will become a ZObject whose type is given by <code>Z883(Z6, Z881(Z6))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Following is a table of ZObject types and the corresponding types in Python and JavaScript.
</div>
{|class="wikitable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">Type conversion in function executors</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">ZObject type</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Corresponding Python type</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Corresponding JS type</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Example ZObject instance</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Example Python instance</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Example JS instance</span>
|-
! <code>Z6</code>
| <syntaxhighlight lang="python">str</syntaxhighlight>
| <syntaxhighlight lang="javascript">String</syntaxhighlight>
|-
| <syntaxhighlight lang="json">{"Z1K1":"Z6","Z6K1":"strang"}</syntaxhighlight>
| <syntaxhighlight lang="python">"strang"</syntaxhighlight>
| <syntaxhighlight lang="javascript">"strang"</syntaxhighlight>
|-
! <code>Z9</code>
| <code>ZReference</code><ref name=":0" group="Note"><span lang="en" dir="ltr" class="mw-content-ltr"><code>ZReference</code> is a custom-defined class in Python and JavaScript.</span> </ref>
| <code>ZReference</code><ref name=":0" group="Note" />
|-
| <syntaxhighlight lang="json">{"Z1K1":"Z9","Z9K1":"Z10000"}</syntaxhighlight>
| <syntaxhighlight lang="python">ZReference("Z10000")</syntaxhighlight>
| <syntaxhighlight lang="javascript">new ZReference("Z10000")</syntaxhighlight>
|-
! <code>Z21</code>
| <syntaxhighlight lang="python">NoneType</syntaxhighlight>
| <code>-</code>
|-
| <syntaxhighlight lang="json">{"Z1K1":{"Z1K1":"Z9","Z9K1":"Z21"}}</syntaxhighlight>
| <syntaxhighlight lang="python">None</syntaxhighlight>
| <syntaxhighlight lang="javascript">null</syntaxhighlight>
|-
! <code>Z40</code>
| <syntaxhighlight lang="python">bool</syntaxhighlight>
| <syntaxhighlight lang="javascript">Boolean</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1":"Z40"
},
"Z40K1": {
"Z1K1":"Z9",
"Z9K1":"Z41"
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">True</syntaxhighlight>
| <syntaxhighlight lang="javascript">true</syntaxhighlight>
|-
! <code>Z881(Z?)</code>
| <code>list[?]</code>
| <code>Array[?]</code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "stronk"
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">["stronk"]</syntaxhighlight>
| <syntaxhighlight lang="javascript">["stronk"]</syntaxhighlight>
|-
! <code>Z882(Z?,Z?)</code>
| <code>ZPair</code><ref name=":1" group="Note"><span lang="en" dir="ltr" class="mw-content-ltr"><code>ZPair</code> is a custom-defined class in Python and JavaScript.</span></ref>
| <code>ZPair<ref name=":1" group="Note" /></code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "stronk"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}</syntaxhighlight>
| <code>ZPair("stronk", True)</code>
| <code>new ZPair("stronk", true)</code>
|-
! <code>Z883(Z?,Z?)</code>
| <code>dict</code>
| <code>Map</code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z883"
},
"Z883K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z883K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "Hello"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "Goodbye"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z42"
}
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">{
"Hello": True,
"Goodbye": False
}</syntaxhighlight>
| <syntaxhighlight lang="javascript">new Map([
["Hello", true],
["Goodbye", false]
])</syntaxhighlight>
|}
<references group="Note" />
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Custom and non-built-in type conversion ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For non-built-in types, both Python and JavaScript additionally support a <code>ZObject</code> class.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For non-built-in objects, <code>ZObject</code> provides a thin wrapper for arbitrary JSON objects that cleave to the ZObject syntax.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Python, such an object can be created as follows.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z1K1</code> should be given as the first argument.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">All other arguments should be supplied as <code>kwargs</code>, i.e. by supplying each key as a separate argument to the instantiation of <code>ZObject</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">When a <code>ZObject</code> is type-converted, <code>Z1K1</code> will be retained as-is, and all other elements will be type-converted according to the above-described logic.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example:</span>
<syntaxhighlight lang="python" line="line">
def Z20000():
return ZObject(
{ "Z1K1": "Z9", "Z9K1": "Z10500" },
Z10500K1="a string",
Z10500K2=True )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When type-converted, the result of this function will become
</div>
<syntaxhighlight lang="json" line="line">
{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": "a string"
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
The equivalent incantation in JavaScript is as follows.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>new ZObject</code> will construct a <code>ZObject</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The first argument should be a <code>Map</code> mapping ZObject keys to type-converted values, like the <code>kwargs</code> above.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The second argument should be the <code>Z1K1</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example:</span>
<syntaxhighlight lang="javascript" line="line">
function Z20000() {
return new ZObject(
new Map( [
[ "Z10500K1", "a string" ],
[ "Z10500K2", true ]
] ),
{ "Z1K1": "Z9", "Z9K1": "Z10500" } );
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When type-converted, the result of this function will likewise become
</div>
<syntaxhighlight lang="json" line="line">
{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": "a string"
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Custom type converters''' allow one to avoid this default behavior.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Custom type converters are attached to a <code>Z4/Type</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z4K7</code> gives the list of converters from ZObject JSON syntax to code, while <code>Z4K8</code> gives the list of converters from code to JSON syntax.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For the example above, we might define a custom type, e.g., in Python</span>
<syntaxhighlight lang="python" line="line">
class MyType:
def __init__(self, thestring, thebool):
self.thestring = thestring
self.thebool = thebool
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
The type converter to code would then look like
</div>
<syntaxhighlight lang="python" line="line">
def Z10501(as_json):
return MyType(
as_json["Z10500K1"]["Z6K1"],
as_json["Z10500K2"]["Z9K1"] == "Z41")
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the type converter from code would look like
</div>
<syntaxhighlight lang="python" line="line">
def Z10502(as_code):
return {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": as_code.thestring
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41" if as_code.thebool else "Z42"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that custom type converters are not in any way constrained to be symmetrical: the system does not enforce, for example, that, if <code>MyType</code> is the target type for conversion to code, it also be the starting point for conversion from code.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">If custom type conversion is defined in only one direction, the system will attempt to fall back on the default behavior.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, any such guarantees have to be managed by the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Also note that it's currently necessary to re-implement the default type conversion (e.g., in this case, for strings and Booleans) within the type converter.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">This is also true for types that contain other types that implement custom type conversion: the entire type conversion function must be implemented for the top-level object.</span>
<!-- TODO: consult Abstract_Wikipedia/Representation_of_errors for better way to represent ZObjects in Wikitext -->
<div lang="en" dir="ltr" class="mw-content-ltr">
== Desiderata and future work ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Composability of executed code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, executed code cannot call other Wikifunctions modules.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">There is provisional support for this in the code, but the feature is far from being production-ready.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually, we hope to make it possible for executed code to make arbitrary calls to Wikifunctions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Composability of type converters ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It would be nice if one did not have to rewrite type conversion functions for types that contain other types.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">At present, it is possible, in some cases, to call the <code>serialize</code> and <code>deserialize</code> functions to convert built-in types within custom type converters, but this is unreliable.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
It also doesn't work for types that implement custom type conversion: the <code>serialize</code> and <code>deserialize</code> functions only work with built-in and default type conversion.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, there is a single exception to this.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">In the special case of Lists whose elements define custom type converters, custom type converters defined on the elements are used when type-converting the List.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We eventually hope to extend this functionality to the general case.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">This may involve a loss of type inference functionality, which will solely affect cases where a function defines its inputs/outputs as <code>Z1</code>.</span>
[[Category:Technical documentation{{#translation:}}]]
d91s8vd4fwnooaz16zpapizymb300r4
282222
282220
2026-06-11T12:23:57Z
七八年再来一次
10776
Created page with "'''演绎靶标'''是用“传统”编程语言(如 Python)编写的格式合规的代码片段,与维基函数中实现的定制化组合语言有异。"
282222
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
<span id="Definition"></span>
== 定义 ==
'''演绎靶标'''是用“传统”编程语言(如 Python)编写的格式合规的代码片段,与维基函数中实现的定制化组合语言有异。 <div lang="en" dir="ltr" class="mw-content-ltr">
Execution targets are useful for writing complex, self-contained algorithms, especially where performance is important.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Current status ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How function execution works ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, the <code>Z8/Function</code> is the primary object of concern.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A <code>Z8/Function</code> can have multiple <code>Z14/Implementation</code>s.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Every <code>Z14/Implementation</code> attached to a given function should behave identically with respect to inputs and outputs, though they may differ vastly in terms of their performance characteristics.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">An implementation can be built-in (defined as part of the core Wikifunctions runtime), evaluated (run as an execution target), or a composition (implemented by arbitrarily nested calls to other functions).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Evaluated''' implementations are of interest here.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An evaluated implementation packages all required information about a function call and sends it to the function evaluator.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">The function evaluator has '''executor'''s that run the included code snippet as appropriate for the requested '''programming language'''.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, if an implementation declares that it is in Python, the orchestrator will send to the Python evaluator the following information:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">the Python source code string;</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the arguments to the function;</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">for each argument, the Python source code string for the relevant '''type converters to code''' (if applicable);</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">for the return value, the Python source code string for the relevant '''type converters from code''' (if applicable).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Following are some definitions to supplement the above example.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Supported programming languages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, Wikifunctions supports function execution in Python and JavaScript.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions uses, respectively, the RustPython implementation of Python and the QuickJS engine for JS.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">These implementations and engines have been chosen due to better support for WebAssembly.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In future, the list of supported languages (and language versions!) will grow.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Type conversion ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Overview ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Type converter'''s transform data between the ZObject representation and the natural idioms of a given programming language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Type converters allow for source code in a programming language to operate over data in a convenient way, avoiding a great deal of boilerplate code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, in ZObject normal form, a list containing the single string <code>"😤Wikifunctions😤"</code> looks like
</div>
<syntaxhighlight lang="javascript">
{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "😤Wikifunctions😤"
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
}
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Type converters allow this rather cumbersome representation to be realized, simply, as
</div>
<syntaxhighlight lang="python">
["😤Wikifunctions😤"] # <span lang="en" dir="ltr" class="mw-content-ltr">list with a single string</span>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
in Python, or as
</div>
<syntaxhighlight lang="javascript">
["😤Wikifunctions😤"] // <span lang="en" dir="ltr" class="mw-content-ltr">list with a single string</span>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
in JavaScript.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Default type conversion ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a small set of built-in types, the executions provide '''default type converter'''s.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">These type converters automatically infer how to convert from ZObject to code (based on the object's <code>Z1K1/Type</code>) and from code to ZObject (based on object introspection).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, in Python, if a function receives as input an object like</span>
<syntaxhighlight lang="javascript">
{
"Z1K1": "Z6",
"Z6K1": "STRING"
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
then the default type conversion will infer from <code>Z1K1 => Z6</code> that this object is a <code>Z6/String</code>, and convert the input to a Python <code>str</code>:
</div>
<syntaxhighlight lang="python">
"STRING"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that these determinations are made recursively where necessary, as in the list example above. In a more extreme case: an object with type <code>Z883(Z6, Z881(Z6))</code> will become, in Python, a <code>dict</code> whose keys are <code>str</code>s and whose values are <code>list[str]</code>s.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Working in reverse, default type conversion from code to the ZObject representation will check the types of objects (with a given programming language's introspection capabilities).
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>str</code> in Python or <code>String</code> in JavaScript will become a <code>Z6/string</code>.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In the nontrivial case, a Python <code>dict{str:list[str]}</code> or a JavaScript <code>Map<String, Array[String]></code> will become a ZObject whose type is given by <code>Z883(Z6, Z881(Z6))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Following is a table of ZObject types and the corresponding types in Python and JavaScript.
</div>
{|class="wikitable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">Type conversion in function executors</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">ZObject type</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Corresponding Python type</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Corresponding JS type</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Example ZObject instance</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Example Python instance</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Example JS instance</span>
|-
! <code>Z6</code>
| <syntaxhighlight lang="python">str</syntaxhighlight>
| <syntaxhighlight lang="javascript">String</syntaxhighlight>
|-
| <syntaxhighlight lang="json">{"Z1K1":"Z6","Z6K1":"strang"}</syntaxhighlight>
| <syntaxhighlight lang="python">"strang"</syntaxhighlight>
| <syntaxhighlight lang="javascript">"strang"</syntaxhighlight>
|-
! <code>Z9</code>
| <code>ZReference</code><ref name=":0" group="Note"><span lang="en" dir="ltr" class="mw-content-ltr"><code>ZReference</code> is a custom-defined class in Python and JavaScript.</span> </ref>
| <code>ZReference</code><ref name=":0" group="Note" />
|-
| <syntaxhighlight lang="json">{"Z1K1":"Z9","Z9K1":"Z10000"}</syntaxhighlight>
| <syntaxhighlight lang="python">ZReference("Z10000")</syntaxhighlight>
| <syntaxhighlight lang="javascript">new ZReference("Z10000")</syntaxhighlight>
|-
! <code>Z21</code>
| <syntaxhighlight lang="python">NoneType</syntaxhighlight>
| <code>-</code>
|-
| <syntaxhighlight lang="json">{"Z1K1":{"Z1K1":"Z9","Z9K1":"Z21"}}</syntaxhighlight>
| <syntaxhighlight lang="python">None</syntaxhighlight>
| <syntaxhighlight lang="javascript">null</syntaxhighlight>
|-
! <code>Z40</code>
| <syntaxhighlight lang="python">bool</syntaxhighlight>
| <syntaxhighlight lang="javascript">Boolean</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1":"Z40"
},
"Z40K1": {
"Z1K1":"Z9",
"Z9K1":"Z41"
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">True</syntaxhighlight>
| <syntaxhighlight lang="javascript">true</syntaxhighlight>
|-
! <code>Z881(Z?)</code>
| <code>list[?]</code>
| <code>Array[?]</code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "stronk"
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">["stronk"]</syntaxhighlight>
| <syntaxhighlight lang="javascript">["stronk"]</syntaxhighlight>
|-
! <code>Z882(Z?,Z?)</code>
| <code>ZPair</code><ref name=":1" group="Note"><span lang="en" dir="ltr" class="mw-content-ltr"><code>ZPair</code> is a custom-defined class in Python and JavaScript.</span></ref>
| <code>ZPair<ref name=":1" group="Note" /></code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "stronk"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}</syntaxhighlight>
| <code>ZPair("stronk", True)</code>
| <code>new ZPair("stronk", true)</code>
|-
! <code>Z883(Z?,Z?)</code>
| <code>dict</code>
| <code>Map</code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z883"
},
"Z883K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z883K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "Hello"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "Goodbye"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z42"
}
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">{
"Hello": True,
"Goodbye": False
}</syntaxhighlight>
| <syntaxhighlight lang="javascript">new Map([
["Hello", true],
["Goodbye", false]
])</syntaxhighlight>
|}
<references group="Note" />
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Custom and non-built-in type conversion ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For non-built-in types, both Python and JavaScript additionally support a <code>ZObject</code> class.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For non-built-in objects, <code>ZObject</code> provides a thin wrapper for arbitrary JSON objects that cleave to the ZObject syntax.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Python, such an object can be created as follows.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z1K1</code> should be given as the first argument.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">All other arguments should be supplied as <code>kwargs</code>, i.e. by supplying each key as a separate argument to the instantiation of <code>ZObject</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">When a <code>ZObject</code> is type-converted, <code>Z1K1</code> will be retained as-is, and all other elements will be type-converted according to the above-described logic.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example:</span>
<syntaxhighlight lang="python" line="line">
def Z20000():
return ZObject(
{ "Z1K1": "Z9", "Z9K1": "Z10500" },
Z10500K1="a string",
Z10500K2=True )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When type-converted, the result of this function will become
</div>
<syntaxhighlight lang="json" line="line">
{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": "a string"
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
The equivalent incantation in JavaScript is as follows.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>new ZObject</code> will construct a <code>ZObject</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The first argument should be a <code>Map</code> mapping ZObject keys to type-converted values, like the <code>kwargs</code> above.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The second argument should be the <code>Z1K1</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example:</span>
<syntaxhighlight lang="javascript" line="line">
function Z20000() {
return new ZObject(
new Map( [
[ "Z10500K1", "a string" ],
[ "Z10500K2", true ]
] ),
{ "Z1K1": "Z9", "Z9K1": "Z10500" } );
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When type-converted, the result of this function will likewise become
</div>
<syntaxhighlight lang="json" line="line">
{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": "a string"
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Custom type converters''' allow one to avoid this default behavior.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Custom type converters are attached to a <code>Z4/Type</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z4K7</code> gives the list of converters from ZObject JSON syntax to code, while <code>Z4K8</code> gives the list of converters from code to JSON syntax.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For the example above, we might define a custom type, e.g., in Python</span>
<syntaxhighlight lang="python" line="line">
class MyType:
def __init__(self, thestring, thebool):
self.thestring = thestring
self.thebool = thebool
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
The type converter to code would then look like
</div>
<syntaxhighlight lang="python" line="line">
def Z10501(as_json):
return MyType(
as_json["Z10500K1"]["Z6K1"],
as_json["Z10500K2"]["Z9K1"] == "Z41")
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the type converter from code would look like
</div>
<syntaxhighlight lang="python" line="line">
def Z10502(as_code):
return {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": as_code.thestring
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41" if as_code.thebool else "Z42"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that custom type converters are not in any way constrained to be symmetrical: the system does not enforce, for example, that, if <code>MyType</code> is the target type for conversion to code, it also be the starting point for conversion from code.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">If custom type conversion is defined in only one direction, the system will attempt to fall back on the default behavior.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, any such guarantees have to be managed by the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Also note that it's currently necessary to re-implement the default type conversion (e.g., in this case, for strings and Booleans) within the type converter.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">This is also true for types that contain other types that implement custom type conversion: the entire type conversion function must be implemented for the top-level object.</span>
<!-- TODO: consult Abstract_Wikipedia/Representation_of_errors for better way to represent ZObjects in Wikitext -->
<div lang="en" dir="ltr" class="mw-content-ltr">
== Desiderata and future work ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Composability of executed code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, executed code cannot call other Wikifunctions modules.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">There is provisional support for this in the code, but the feature is far from being production-ready.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually, we hope to make it possible for executed code to make arbitrary calls to Wikifunctions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Composability of type converters ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It would be nice if one did not have to rewrite type conversion functions for types that contain other types.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">At present, it is possible, in some cases, to call the <code>serialize</code> and <code>deserialize</code> functions to convert built-in types within custom type converters, but this is unreliable.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
It also doesn't work for types that implement custom type conversion: the <code>serialize</code> and <code>deserialize</code> functions only work with built-in and default type conversion.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, there is a single exception to this.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">In the special case of Lists whose elements define custom type converters, custom type converters defined on the elements are used when type-converting the List.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We eventually hope to extend this functionality to the general case.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">This may involve a loss of type inference functionality, which will solely affect cases where a function defines its inputs/outputs as <code>Z1</code>.</span>
[[Category:Technical documentation{{#translation:}}]]
tuddlz8wbhcgukd16kuocxn88q8h0r2
282224
282222
2026-06-11T12:25:02Z
七八年再来一次
10776
Created page with "演绎靶标在编写复杂,自包含的算法时很有用,特别是在性能至关重要的地方。"
282224
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
<span id="Definition"></span>
== 定义 ==
'''演绎靶标'''是用“传统”编程语言(如 Python)编写的格式合规的代码片段,与维基函数中实现的定制化组合语言有异。 演绎靶标在编写复杂,自包含的算法时很有用,特别是在性能至关重要的地方。
<div lang="en" dir="ltr" class="mw-content-ltr">
== Current status ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How function execution works ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, the <code>Z8/Function</code> is the primary object of concern.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A <code>Z8/Function</code> can have multiple <code>Z14/Implementation</code>s.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Every <code>Z14/Implementation</code> attached to a given function should behave identically with respect to inputs and outputs, though they may differ vastly in terms of their performance characteristics.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">An implementation can be built-in (defined as part of the core Wikifunctions runtime), evaluated (run as an execution target), or a composition (implemented by arbitrarily nested calls to other functions).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Evaluated''' implementations are of interest here.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An evaluated implementation packages all required information about a function call and sends it to the function evaluator.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">The function evaluator has '''executor'''s that run the included code snippet as appropriate for the requested '''programming language'''.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, if an implementation declares that it is in Python, the orchestrator will send to the Python evaluator the following information:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">the Python source code string;</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the arguments to the function;</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">for each argument, the Python source code string for the relevant '''type converters to code''' (if applicable);</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">for the return value, the Python source code string for the relevant '''type converters from code''' (if applicable).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Following are some definitions to supplement the above example.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Supported programming languages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, Wikifunctions supports function execution in Python and JavaScript.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions uses, respectively, the RustPython implementation of Python and the QuickJS engine for JS.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">These implementations and engines have been chosen due to better support for WebAssembly.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In future, the list of supported languages (and language versions!) will grow.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Type conversion ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Overview ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Type converter'''s transform data between the ZObject representation and the natural idioms of a given programming language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Type converters allow for source code in a programming language to operate over data in a convenient way, avoiding a great deal of boilerplate code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, in ZObject normal form, a list containing the single string <code>"😤Wikifunctions😤"</code> looks like
</div>
<syntaxhighlight lang="javascript">
{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "😤Wikifunctions😤"
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
}
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Type converters allow this rather cumbersome representation to be realized, simply, as
</div>
<syntaxhighlight lang="python">
["😤Wikifunctions😤"] # <span lang="en" dir="ltr" class="mw-content-ltr">list with a single string</span>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
in Python, or as
</div>
<syntaxhighlight lang="javascript">
["😤Wikifunctions😤"] // <span lang="en" dir="ltr" class="mw-content-ltr">list with a single string</span>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
in JavaScript.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Default type conversion ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a small set of built-in types, the executions provide '''default type converter'''s.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">These type converters automatically infer how to convert from ZObject to code (based on the object's <code>Z1K1/Type</code>) and from code to ZObject (based on object introspection).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, in Python, if a function receives as input an object like</span>
<syntaxhighlight lang="javascript">
{
"Z1K1": "Z6",
"Z6K1": "STRING"
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
then the default type conversion will infer from <code>Z1K1 => Z6</code> that this object is a <code>Z6/String</code>, and convert the input to a Python <code>str</code>:
</div>
<syntaxhighlight lang="python">
"STRING"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that these determinations are made recursively where necessary, as in the list example above. In a more extreme case: an object with type <code>Z883(Z6, Z881(Z6))</code> will become, in Python, a <code>dict</code> whose keys are <code>str</code>s and whose values are <code>list[str]</code>s.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Working in reverse, default type conversion from code to the ZObject representation will check the types of objects (with a given programming language's introspection capabilities).
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>str</code> in Python or <code>String</code> in JavaScript will become a <code>Z6/string</code>.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In the nontrivial case, a Python <code>dict{str:list[str]}</code> or a JavaScript <code>Map<String, Array[String]></code> will become a ZObject whose type is given by <code>Z883(Z6, Z881(Z6))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Following is a table of ZObject types and the corresponding types in Python and JavaScript.
</div>
{|class="wikitable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">Type conversion in function executors</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">ZObject type</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Corresponding Python type</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Corresponding JS type</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Example ZObject instance</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Example Python instance</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Example JS instance</span>
|-
! <code>Z6</code>
| <syntaxhighlight lang="python">str</syntaxhighlight>
| <syntaxhighlight lang="javascript">String</syntaxhighlight>
|-
| <syntaxhighlight lang="json">{"Z1K1":"Z6","Z6K1":"strang"}</syntaxhighlight>
| <syntaxhighlight lang="python">"strang"</syntaxhighlight>
| <syntaxhighlight lang="javascript">"strang"</syntaxhighlight>
|-
! <code>Z9</code>
| <code>ZReference</code><ref name=":0" group="Note"><span lang="en" dir="ltr" class="mw-content-ltr"><code>ZReference</code> is a custom-defined class in Python and JavaScript.</span> </ref>
| <code>ZReference</code><ref name=":0" group="Note" />
|-
| <syntaxhighlight lang="json">{"Z1K1":"Z9","Z9K1":"Z10000"}</syntaxhighlight>
| <syntaxhighlight lang="python">ZReference("Z10000")</syntaxhighlight>
| <syntaxhighlight lang="javascript">new ZReference("Z10000")</syntaxhighlight>
|-
! <code>Z21</code>
| <syntaxhighlight lang="python">NoneType</syntaxhighlight>
| <code>-</code>
|-
| <syntaxhighlight lang="json">{"Z1K1":{"Z1K1":"Z9","Z9K1":"Z21"}}</syntaxhighlight>
| <syntaxhighlight lang="python">None</syntaxhighlight>
| <syntaxhighlight lang="javascript">null</syntaxhighlight>
|-
! <code>Z40</code>
| <syntaxhighlight lang="python">bool</syntaxhighlight>
| <syntaxhighlight lang="javascript">Boolean</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1":"Z40"
},
"Z40K1": {
"Z1K1":"Z9",
"Z9K1":"Z41"
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">True</syntaxhighlight>
| <syntaxhighlight lang="javascript">true</syntaxhighlight>
|-
! <code>Z881(Z?)</code>
| <code>list[?]</code>
| <code>Array[?]</code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "stronk"
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">["stronk"]</syntaxhighlight>
| <syntaxhighlight lang="javascript">["stronk"]</syntaxhighlight>
|-
! <code>Z882(Z?,Z?)</code>
| <code>ZPair</code><ref name=":1" group="Note"><span lang="en" dir="ltr" class="mw-content-ltr"><code>ZPair</code> is a custom-defined class in Python and JavaScript.</span></ref>
| <code>ZPair<ref name=":1" group="Note" /></code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "stronk"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}</syntaxhighlight>
| <code>ZPair("stronk", True)</code>
| <code>new ZPair("stronk", true)</code>
|-
! <code>Z883(Z?,Z?)</code>
| <code>dict</code>
| <code>Map</code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z883"
},
"Z883K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z883K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "Hello"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "Goodbye"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z42"
}
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">{
"Hello": True,
"Goodbye": False
}</syntaxhighlight>
| <syntaxhighlight lang="javascript">new Map([
["Hello", true],
["Goodbye", false]
])</syntaxhighlight>
|}
<references group="Note" />
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Custom and non-built-in type conversion ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For non-built-in types, both Python and JavaScript additionally support a <code>ZObject</code> class.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For non-built-in objects, <code>ZObject</code> provides a thin wrapper for arbitrary JSON objects that cleave to the ZObject syntax.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Python, such an object can be created as follows.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z1K1</code> should be given as the first argument.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">All other arguments should be supplied as <code>kwargs</code>, i.e. by supplying each key as a separate argument to the instantiation of <code>ZObject</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">When a <code>ZObject</code> is type-converted, <code>Z1K1</code> will be retained as-is, and all other elements will be type-converted according to the above-described logic.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example:</span>
<syntaxhighlight lang="python" line="line">
def Z20000():
return ZObject(
{ "Z1K1": "Z9", "Z9K1": "Z10500" },
Z10500K1="a string",
Z10500K2=True )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When type-converted, the result of this function will become
</div>
<syntaxhighlight lang="json" line="line">
{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": "a string"
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
The equivalent incantation in JavaScript is as follows.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>new ZObject</code> will construct a <code>ZObject</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The first argument should be a <code>Map</code> mapping ZObject keys to type-converted values, like the <code>kwargs</code> above.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The second argument should be the <code>Z1K1</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example:</span>
<syntaxhighlight lang="javascript" line="line">
function Z20000() {
return new ZObject(
new Map( [
[ "Z10500K1", "a string" ],
[ "Z10500K2", true ]
] ),
{ "Z1K1": "Z9", "Z9K1": "Z10500" } );
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When type-converted, the result of this function will likewise become
</div>
<syntaxhighlight lang="json" line="line">
{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": "a string"
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Custom type converters''' allow one to avoid this default behavior.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Custom type converters are attached to a <code>Z4/Type</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z4K7</code> gives the list of converters from ZObject JSON syntax to code, while <code>Z4K8</code> gives the list of converters from code to JSON syntax.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For the example above, we might define a custom type, e.g., in Python</span>
<syntaxhighlight lang="python" line="line">
class MyType:
def __init__(self, thestring, thebool):
self.thestring = thestring
self.thebool = thebool
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
The type converter to code would then look like
</div>
<syntaxhighlight lang="python" line="line">
def Z10501(as_json):
return MyType(
as_json["Z10500K1"]["Z6K1"],
as_json["Z10500K2"]["Z9K1"] == "Z41")
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the type converter from code would look like
</div>
<syntaxhighlight lang="python" line="line">
def Z10502(as_code):
return {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": as_code.thestring
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41" if as_code.thebool else "Z42"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that custom type converters are not in any way constrained to be symmetrical: the system does not enforce, for example, that, if <code>MyType</code> is the target type for conversion to code, it also be the starting point for conversion from code.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">If custom type conversion is defined in only one direction, the system will attempt to fall back on the default behavior.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, any such guarantees have to be managed by the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Also note that it's currently necessary to re-implement the default type conversion (e.g., in this case, for strings and Booleans) within the type converter.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">This is also true for types that contain other types that implement custom type conversion: the entire type conversion function must be implemented for the top-level object.</span>
<!-- TODO: consult Abstract_Wikipedia/Representation_of_errors for better way to represent ZObjects in Wikitext -->
<div lang="en" dir="ltr" class="mw-content-ltr">
== Desiderata and future work ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Composability of executed code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, executed code cannot call other Wikifunctions modules.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">There is provisional support for this in the code, but the feature is far from being production-ready.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually, we hope to make it possible for executed code to make arbitrary calls to Wikifunctions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Composability of type converters ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It would be nice if one did not have to rewrite type conversion functions for types that contain other types.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">At present, it is possible, in some cases, to call the <code>serialize</code> and <code>deserialize</code> functions to convert built-in types within custom type converters, but this is unreliable.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
It also doesn't work for types that implement custom type conversion: the <code>serialize</code> and <code>deserialize</code> functions only work with built-in and default type conversion.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, there is a single exception to this.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">In the special case of Lists whose elements define custom type converters, custom type converters defined on the elements are used when type-converting the List.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We eventually hope to extend this functionality to the general case.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">This may involve a loss of type inference functionality, which will solely affect cases where a function defines its inputs/outputs as <code>Z1</code>.</span>
[[Category:Technical documentation{{#translation:}}]]
b4zazvcn0tyq9snzujrufryqbgr6vpd
282226
282224
2026-06-11T12:25:14Z
七八年再来一次
10776
Created page with "== 目下状况 =="
282226
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
<span id="Definition"></span>
== 定义 ==
'''演绎靶标'''是用“传统”编程语言(如 Python)编写的格式合规的代码片段,与维基函数中实现的定制化组合语言有异。 演绎靶标在编写复杂,自包含的算法时很有用,特别是在性能至关重要的地方。
<span id="Current_status"></span>
== 目下状况 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
=== How function execution works ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, the <code>Z8/Function</code> is the primary object of concern.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A <code>Z8/Function</code> can have multiple <code>Z14/Implementation</code>s.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Every <code>Z14/Implementation</code> attached to a given function should behave identically with respect to inputs and outputs, though they may differ vastly in terms of their performance characteristics.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">An implementation can be built-in (defined as part of the core Wikifunctions runtime), evaluated (run as an execution target), or a composition (implemented by arbitrarily nested calls to other functions).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Evaluated''' implementations are of interest here.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An evaluated implementation packages all required information about a function call and sends it to the function evaluator.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">The function evaluator has '''executor'''s that run the included code snippet as appropriate for the requested '''programming language'''.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, if an implementation declares that it is in Python, the orchestrator will send to the Python evaluator the following information:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">the Python source code string;</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the arguments to the function;</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">for each argument, the Python source code string for the relevant '''type converters to code''' (if applicable);</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">for the return value, the Python source code string for the relevant '''type converters from code''' (if applicable).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Following are some definitions to supplement the above example.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Supported programming languages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, Wikifunctions supports function execution in Python and JavaScript.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions uses, respectively, the RustPython implementation of Python and the QuickJS engine for JS.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">These implementations and engines have been chosen due to better support for WebAssembly.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In future, the list of supported languages (and language versions!) will grow.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Type conversion ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Overview ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Type converter'''s transform data between the ZObject representation and the natural idioms of a given programming language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Type converters allow for source code in a programming language to operate over data in a convenient way, avoiding a great deal of boilerplate code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, in ZObject normal form, a list containing the single string <code>"😤Wikifunctions😤"</code> looks like
</div>
<syntaxhighlight lang="javascript">
{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "😤Wikifunctions😤"
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
}
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Type converters allow this rather cumbersome representation to be realized, simply, as
</div>
<syntaxhighlight lang="python">
["😤Wikifunctions😤"] # <span lang="en" dir="ltr" class="mw-content-ltr">list with a single string</span>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
in Python, or as
</div>
<syntaxhighlight lang="javascript">
["😤Wikifunctions😤"] // <span lang="en" dir="ltr" class="mw-content-ltr">list with a single string</span>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
in JavaScript.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Default type conversion ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a small set of built-in types, the executions provide '''default type converter'''s.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">These type converters automatically infer how to convert from ZObject to code (based on the object's <code>Z1K1/Type</code>) and from code to ZObject (based on object introspection).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, in Python, if a function receives as input an object like</span>
<syntaxhighlight lang="javascript">
{
"Z1K1": "Z6",
"Z6K1": "STRING"
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
then the default type conversion will infer from <code>Z1K1 => Z6</code> that this object is a <code>Z6/String</code>, and convert the input to a Python <code>str</code>:
</div>
<syntaxhighlight lang="python">
"STRING"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that these determinations are made recursively where necessary, as in the list example above. In a more extreme case: an object with type <code>Z883(Z6, Z881(Z6))</code> will become, in Python, a <code>dict</code> whose keys are <code>str</code>s and whose values are <code>list[str]</code>s.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Working in reverse, default type conversion from code to the ZObject representation will check the types of objects (with a given programming language's introspection capabilities).
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>str</code> in Python or <code>String</code> in JavaScript will become a <code>Z6/string</code>.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In the nontrivial case, a Python <code>dict{str:list[str]}</code> or a JavaScript <code>Map<String, Array[String]></code> will become a ZObject whose type is given by <code>Z883(Z6, Z881(Z6))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Following is a table of ZObject types and the corresponding types in Python and JavaScript.
</div>
{|class="wikitable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">Type conversion in function executors</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">ZObject type</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Corresponding Python type</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Corresponding JS type</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Example ZObject instance</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Example Python instance</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Example JS instance</span>
|-
! <code>Z6</code>
| <syntaxhighlight lang="python">str</syntaxhighlight>
| <syntaxhighlight lang="javascript">String</syntaxhighlight>
|-
| <syntaxhighlight lang="json">{"Z1K1":"Z6","Z6K1":"strang"}</syntaxhighlight>
| <syntaxhighlight lang="python">"strang"</syntaxhighlight>
| <syntaxhighlight lang="javascript">"strang"</syntaxhighlight>
|-
! <code>Z9</code>
| <code>ZReference</code><ref name=":0" group="Note"><span lang="en" dir="ltr" class="mw-content-ltr"><code>ZReference</code> is a custom-defined class in Python and JavaScript.</span> </ref>
| <code>ZReference</code><ref name=":0" group="Note" />
|-
| <syntaxhighlight lang="json">{"Z1K1":"Z9","Z9K1":"Z10000"}</syntaxhighlight>
| <syntaxhighlight lang="python">ZReference("Z10000")</syntaxhighlight>
| <syntaxhighlight lang="javascript">new ZReference("Z10000")</syntaxhighlight>
|-
! <code>Z21</code>
| <syntaxhighlight lang="python">NoneType</syntaxhighlight>
| <code>-</code>
|-
| <syntaxhighlight lang="json">{"Z1K1":{"Z1K1":"Z9","Z9K1":"Z21"}}</syntaxhighlight>
| <syntaxhighlight lang="python">None</syntaxhighlight>
| <syntaxhighlight lang="javascript">null</syntaxhighlight>
|-
! <code>Z40</code>
| <syntaxhighlight lang="python">bool</syntaxhighlight>
| <syntaxhighlight lang="javascript">Boolean</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1":"Z40"
},
"Z40K1": {
"Z1K1":"Z9",
"Z9K1":"Z41"
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">True</syntaxhighlight>
| <syntaxhighlight lang="javascript">true</syntaxhighlight>
|-
! <code>Z881(Z?)</code>
| <code>list[?]</code>
| <code>Array[?]</code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "stronk"
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">["stronk"]</syntaxhighlight>
| <syntaxhighlight lang="javascript">["stronk"]</syntaxhighlight>
|-
! <code>Z882(Z?,Z?)</code>
| <code>ZPair</code><ref name=":1" group="Note"><span lang="en" dir="ltr" class="mw-content-ltr"><code>ZPair</code> is a custom-defined class in Python and JavaScript.</span></ref>
| <code>ZPair<ref name=":1" group="Note" /></code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "stronk"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}</syntaxhighlight>
| <code>ZPair("stronk", True)</code>
| <code>new ZPair("stronk", true)</code>
|-
! <code>Z883(Z?,Z?)</code>
| <code>dict</code>
| <code>Map</code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z883"
},
"Z883K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z883K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "Hello"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "Goodbye"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z42"
}
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">{
"Hello": True,
"Goodbye": False
}</syntaxhighlight>
| <syntaxhighlight lang="javascript">new Map([
["Hello", true],
["Goodbye", false]
])</syntaxhighlight>
|}
<references group="Note" />
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Custom and non-built-in type conversion ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For non-built-in types, both Python and JavaScript additionally support a <code>ZObject</code> class.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For non-built-in objects, <code>ZObject</code> provides a thin wrapper for arbitrary JSON objects that cleave to the ZObject syntax.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Python, such an object can be created as follows.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z1K1</code> should be given as the first argument.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">All other arguments should be supplied as <code>kwargs</code>, i.e. by supplying each key as a separate argument to the instantiation of <code>ZObject</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">When a <code>ZObject</code> is type-converted, <code>Z1K1</code> will be retained as-is, and all other elements will be type-converted according to the above-described logic.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example:</span>
<syntaxhighlight lang="python" line="line">
def Z20000():
return ZObject(
{ "Z1K1": "Z9", "Z9K1": "Z10500" },
Z10500K1="a string",
Z10500K2=True )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When type-converted, the result of this function will become
</div>
<syntaxhighlight lang="json" line="line">
{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": "a string"
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
The equivalent incantation in JavaScript is as follows.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>new ZObject</code> will construct a <code>ZObject</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The first argument should be a <code>Map</code> mapping ZObject keys to type-converted values, like the <code>kwargs</code> above.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The second argument should be the <code>Z1K1</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example:</span>
<syntaxhighlight lang="javascript" line="line">
function Z20000() {
return new ZObject(
new Map( [
[ "Z10500K1", "a string" ],
[ "Z10500K2", true ]
] ),
{ "Z1K1": "Z9", "Z9K1": "Z10500" } );
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When type-converted, the result of this function will likewise become
</div>
<syntaxhighlight lang="json" line="line">
{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": "a string"
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Custom type converters''' allow one to avoid this default behavior.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Custom type converters are attached to a <code>Z4/Type</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z4K7</code> gives the list of converters from ZObject JSON syntax to code, while <code>Z4K8</code> gives the list of converters from code to JSON syntax.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For the example above, we might define a custom type, e.g., in Python</span>
<syntaxhighlight lang="python" line="line">
class MyType:
def __init__(self, thestring, thebool):
self.thestring = thestring
self.thebool = thebool
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
The type converter to code would then look like
</div>
<syntaxhighlight lang="python" line="line">
def Z10501(as_json):
return MyType(
as_json["Z10500K1"]["Z6K1"],
as_json["Z10500K2"]["Z9K1"] == "Z41")
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the type converter from code would look like
</div>
<syntaxhighlight lang="python" line="line">
def Z10502(as_code):
return {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": as_code.thestring
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41" if as_code.thebool else "Z42"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that custom type converters are not in any way constrained to be symmetrical: the system does not enforce, for example, that, if <code>MyType</code> is the target type for conversion to code, it also be the starting point for conversion from code.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">If custom type conversion is defined in only one direction, the system will attempt to fall back on the default behavior.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, any such guarantees have to be managed by the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Also note that it's currently necessary to re-implement the default type conversion (e.g., in this case, for strings and Booleans) within the type converter.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">This is also true for types that contain other types that implement custom type conversion: the entire type conversion function must be implemented for the top-level object.</span>
<!-- TODO: consult Abstract_Wikipedia/Representation_of_errors for better way to represent ZObjects in Wikitext -->
<div lang="en" dir="ltr" class="mw-content-ltr">
== Desiderata and future work ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Composability of executed code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, executed code cannot call other Wikifunctions modules.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">There is provisional support for this in the code, but the feature is far from being production-ready.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually, we hope to make it possible for executed code to make arbitrary calls to Wikifunctions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Composability of type converters ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It would be nice if one did not have to rewrite type conversion functions for types that contain other types.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">At present, it is possible, in some cases, to call the <code>serialize</code> and <code>deserialize</code> functions to convert built-in types within custom type converters, but this is unreliable.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
It also doesn't work for types that implement custom type conversion: the <code>serialize</code> and <code>deserialize</code> functions only work with built-in and default type conversion.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, there is a single exception to this.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">In the special case of Lists whose elements define custom type converters, custom type converters defined on the elements are used when type-converting the List.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We eventually hope to extend this functionality to the general case.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">This may involve a loss of type inference functionality, which will solely affect cases where a function defines its inputs/outputs as <code>Z1</code>.</span>
[[Category:Technical documentation{{#translation:}}]]
d73ahkt62xmu5ur9khl6iikfcuph9rf
282228
282226
2026-06-11T12:26:14Z
七八年再来一次
10776
Created page with "=== 函数执行原理 ==="
282228
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
<span id="Definition"></span>
== 定义 ==
'''演绎靶标'''是用“传统”编程语言(如 Python)编写的格式合规的代码片段,与维基函数中实现的定制化组合语言有异。 演绎靶标在编写复杂,自包含的算法时很有用,特别是在性能至关重要的地方。
<span id="Current_status"></span>
== 目下状况 ==
<span id="How_function_execution_works"></span>
=== 函数执行原理 ===
<div lang="en" dir="ltr" class="mw-content-ltr">
In Wikifunctions, the <code>Z8/Function</code> is the primary object of concern.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A <code>Z8/Function</code> can have multiple <code>Z14/Implementation</code>s.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Every <code>Z14/Implementation</code> attached to a given function should behave identically with respect to inputs and outputs, though they may differ vastly in terms of their performance characteristics.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">An implementation can be built-in (defined as part of the core Wikifunctions runtime), evaluated (run as an execution target), or a composition (implemented by arbitrarily nested calls to other functions).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Evaluated''' implementations are of interest here.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An evaluated implementation packages all required information about a function call and sends it to the function evaluator.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">The function evaluator has '''executor'''s that run the included code snippet as appropriate for the requested '''programming language'''.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, if an implementation declares that it is in Python, the orchestrator will send to the Python evaluator the following information:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">the Python source code string;</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">the arguments to the function;</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">for each argument, the Python source code string for the relevant '''type converters to code''' (if applicable);</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">for the return value, the Python source code string for the relevant '''type converters from code''' (if applicable).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Following are some definitions to supplement the above example.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Supported programming languages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, Wikifunctions supports function execution in Python and JavaScript.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions uses, respectively, the RustPython implementation of Python and the QuickJS engine for JS.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">These implementations and engines have been chosen due to better support for WebAssembly.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In future, the list of supported languages (and language versions!) will grow.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Type conversion ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Overview ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Type converter'''s transform data between the ZObject representation and the natural idioms of a given programming language.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Type converters allow for source code in a programming language to operate over data in a convenient way, avoiding a great deal of boilerplate code.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, in ZObject normal form, a list containing the single string <code>"😤Wikifunctions😤"</code> looks like
</div>
<syntaxhighlight lang="javascript">
{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "😤Wikifunctions😤"
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
}
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Type converters allow this rather cumbersome representation to be realized, simply, as
</div>
<syntaxhighlight lang="python">
["😤Wikifunctions😤"] # <span lang="en" dir="ltr" class="mw-content-ltr">list with a single string</span>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
in Python, or as
</div>
<syntaxhighlight lang="javascript">
["😤Wikifunctions😤"] // <span lang="en" dir="ltr" class="mw-content-ltr">list with a single string</span>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
in JavaScript.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Default type conversion ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For a small set of built-in types, the executions provide '''default type converter'''s.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">These type converters automatically infer how to convert from ZObject to code (based on the object's <code>Z1K1/Type</code>) and from code to ZObject (based on object introspection).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, in Python, if a function receives as input an object like</span>
<syntaxhighlight lang="javascript">
{
"Z1K1": "Z6",
"Z6K1": "STRING"
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
then the default type conversion will infer from <code>Z1K1 => Z6</code> that this object is a <code>Z6/String</code>, and convert the input to a Python <code>str</code>:
</div>
<syntaxhighlight lang="python">
"STRING"
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that these determinations are made recursively where necessary, as in the list example above. In a more extreme case: an object with type <code>Z883(Z6, Z881(Z6))</code> will become, in Python, a <code>dict</code> whose keys are <code>str</code>s and whose values are <code>list[str]</code>s.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Working in reverse, default type conversion from code to the ZObject representation will check the types of objects (with a given programming language's introspection capabilities).
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>str</code> in Python or <code>String</code> in JavaScript will become a <code>Z6/string</code>.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In the nontrivial case, a Python <code>dict{str:list[str]}</code> or a JavaScript <code>Map<String, Array[String]></code> will become a ZObject whose type is given by <code>Z883(Z6, Z881(Z6))</code>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Following is a table of ZObject types and the corresponding types in Python and JavaScript.
</div>
{|class="wikitable"
|+ <span lang="en" dir="ltr" class="mw-content-ltr">Type conversion in function executors</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">ZObject type</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Corresponding Python type</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Corresponding JS type</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Example ZObject instance</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Example Python instance</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Example JS instance</span>
|-
! <code>Z6</code>
| <syntaxhighlight lang="python">str</syntaxhighlight>
| <syntaxhighlight lang="javascript">String</syntaxhighlight>
|-
| <syntaxhighlight lang="json">{"Z1K1":"Z6","Z6K1":"strang"}</syntaxhighlight>
| <syntaxhighlight lang="python">"strang"</syntaxhighlight>
| <syntaxhighlight lang="javascript">"strang"</syntaxhighlight>
|-
! <code>Z9</code>
| <code>ZReference</code><ref name=":0" group="Note"><span lang="en" dir="ltr" class="mw-content-ltr"><code>ZReference</code> is a custom-defined class in Python and JavaScript.</span> </ref>
| <code>ZReference</code><ref name=":0" group="Note" />
|-
| <syntaxhighlight lang="json">{"Z1K1":"Z9","Z9K1":"Z10000"}</syntaxhighlight>
| <syntaxhighlight lang="python">ZReference("Z10000")</syntaxhighlight>
| <syntaxhighlight lang="javascript">new ZReference("Z10000")</syntaxhighlight>
|-
! <code>Z21</code>
| <syntaxhighlight lang="python">NoneType</syntaxhighlight>
| <code>-</code>
|-
| <syntaxhighlight lang="json">{"Z1K1":{"Z1K1":"Z9","Z9K1":"Z21"}}</syntaxhighlight>
| <syntaxhighlight lang="python">None</syntaxhighlight>
| <syntaxhighlight lang="javascript">null</syntaxhighlight>
|-
! <code>Z40</code>
| <syntaxhighlight lang="python">bool</syntaxhighlight>
| <syntaxhighlight lang="javascript">Boolean</syntaxhighlight>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1":"Z40"
},
"Z40K1": {
"Z1K1":"Z9",
"Z9K1":"Z41"
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">True</syntaxhighlight>
| <syntaxhighlight lang="javascript">true</syntaxhighlight>
|-
! <code>Z881(Z?)</code>
| <code>list[?]</code>
| <code>Array[?]</code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "stronk"
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">["stronk"]</syntaxhighlight>
| <syntaxhighlight lang="javascript">["stronk"]</syntaxhighlight>
|-
! <code>Z882(Z?,Z?)</code>
| <code>ZPair</code><ref name=":1" group="Note"><span lang="en" dir="ltr" class="mw-content-ltr"><code>ZPair</code> is a custom-defined class in Python and JavaScript.</span></ref>
| <code>ZPair<ref name=":1" group="Note" /></code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "stronk"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}</syntaxhighlight>
| <code>ZPair("stronk", True)</code>
| <code>new ZPair("stronk", true)</code>
|-
! <code>Z883(Z?,Z?)</code>
| <code>dict</code>
| <code>Map</code>
|-
| <syntaxhighlight lang="json" line="line">{
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z883"
},
"Z883K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z883K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "Hello"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
},
"K1": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
},
"K1": {
"Z1K1": "Z6",
"Z6K1": "Goodbye"
},
"K2": {
"Z1K1": "Z9",
"Z9K1": "Z42"
}
},
"K2": {
"Z1K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z881"
},
"Z881K1": {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z7"
},
"Z7K1": {
"Z1K1": "Z9",
"Z9K1": "Z882"
},
"Z882K1": {
"Z1K1": "Z9",
"Z9K1": "Z6"
},
"Z882K2": {
"Z1K1": "Z9",
"Z9K1": "Z40"
}
}
}
}
}
}
}</syntaxhighlight>
| <syntaxhighlight lang="python">{
"Hello": True,
"Goodbye": False
}</syntaxhighlight>
| <syntaxhighlight lang="javascript">new Map([
["Hello", true],
["Goodbye", false]
])</syntaxhighlight>
|}
<references group="Note" />
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Custom and non-built-in type conversion ====
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For non-built-in types, both Python and JavaScript additionally support a <code>ZObject</code> class.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For non-built-in objects, <code>ZObject</code> provides a thin wrapper for arbitrary JSON objects that cleave to the ZObject syntax.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In Python, such an object can be created as follows.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z1K1</code> should be given as the first argument.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">All other arguments should be supplied as <code>kwargs</code>, i.e. by supplying each key as a separate argument to the instantiation of <code>ZObject</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">When a <code>ZObject</code> is type-converted, <code>Z1K1</code> will be retained as-is, and all other elements will be type-converted according to the above-described logic.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example:</span>
<syntaxhighlight lang="python" line="line">
def Z20000():
return ZObject(
{ "Z1K1": "Z9", "Z9K1": "Z10500" },
Z10500K1="a string",
Z10500K2=True )
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When type-converted, the result of this function will become
</div>
<syntaxhighlight lang="json" line="line">
{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": "a string"
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
The equivalent incantation in JavaScript is as follows.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>new ZObject</code> will construct a <code>ZObject</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The first argument should be a <code>Map</code> mapping ZObject keys to type-converted values, like the <code>kwargs</code> above.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The second argument should be the <code>Z1K1</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For example:</span>
<syntaxhighlight lang="javascript" line="line">
function Z20000() {
return new ZObject(
new Map( [
[ "Z10500K1", "a string" ],
[ "Z10500K2", true ]
] ),
{ "Z1K1": "Z9", "Z9K1": "Z10500" } );
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
When type-converted, the result of this function will likewise become
</div>
<syntaxhighlight lang="json" line="line">
{
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": "a string"
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Custom type converters''' allow one to avoid this default behavior.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Custom type converters are attached to a <code>Z4/Type</code>.</span>
<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z4K7</code> gives the list of converters from ZObject JSON syntax to code, while <code>Z4K8</code> gives the list of converters from code to JSON syntax.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For the example above, we might define a custom type, e.g., in Python</span>
<syntaxhighlight lang="python" line="line">
class MyType:
def __init__(self, thestring, thebool):
self.thestring = thestring
self.thebool = thebool
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
The type converter to code would then look like
</div>
<syntaxhighlight lang="python" line="line">
def Z10501(as_json):
return MyType(
as_json["Z10500K1"]["Z6K1"],
as_json["Z10500K2"]["Z9K1"] == "Z41")
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
And the type converter from code would look like
</div>
<syntaxhighlight lang="python" line="line">
def Z10502(as_code):
return {
"Z1K1": {
"Z1K1": "Z9",
"Z9K1": "Z10500"
},
"Z10500K1": {
"Z1K1": "Z6",
"Z6K1": as_code.thestring
},
"Z10500K2": {
"Z1K1": "Z9",
"Z9K1": "Z41" if as_code.thebool else "Z42"
}
}
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that custom type converters are not in any way constrained to be symmetrical: the system does not enforce, for example, that, if <code>MyType</code> is the target type for conversion to code, it also be the starting point for conversion from code.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">If custom type conversion is defined in only one direction, the system will attempt to fall back on the default behavior.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, any such guarantees have to be managed by the community.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Also note that it's currently necessary to re-implement the default type conversion (e.g., in this case, for strings and Booleans) within the type converter.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">This is also true for types that contain other types that implement custom type conversion: the entire type conversion function must be implemented for the top-level object.</span>
<!-- TODO: consult Abstract_Wikipedia/Representation_of_errors for better way to represent ZObjects in Wikitext -->
<div lang="en" dir="ltr" class="mw-content-ltr">
== Desiderata and future work ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Composability of executed code ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, executed code cannot call other Wikifunctions modules.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">There is provisional support for this in the code, but the feature is far from being production-ready.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually, we hope to make it possible for executed code to make arbitrary calls to Wikifunctions.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Composability of type converters ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It would be nice if one did not have to rewrite type conversion functions for types that contain other types.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">At present, it is possible, in some cases, to call the <code>serialize</code> and <code>deserialize</code> functions to convert built-in types within custom type converters, but this is unreliable.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
It also doesn't work for types that implement custom type conversion: the <code>serialize</code> and <code>deserialize</code> functions only work with built-in and default type conversion.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
At present, there is a single exception to this.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">In the special case of Lists whose elements define custom type converters, custom type converters defined on the elements are used when type-converting the List.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">We eventually hope to extend this functionality to the general case.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">This may involve a loss of type inference functionality, which will solely affect cases where a function defines its inputs/outputs as <code>Z1</code>.</span>
[[Category:Technical documentation{{#translation:}}]]
eg5bb8yin4m1e8rdishek8rvphh02rz
Translations:Wikifunctions:Execution targets/1/zh-hans
1198
85459
282219
2026-06-11T12:20:18Z
七八年再来一次
10776
Created page with "== 定义 =="
282219
wikitext
text/x-wiki
== 定义 ==
90iwp898jjtmo6xd5lyhfgqvc5cg00t
Translations:Wikifunctions:Execution targets/2/zh-hans
1198
85460
282221
2026-06-11T12:23:53Z
七八年再来一次
10776
Created page with "'''演绎靶标'''是用“传统”编程语言(如 Python)编写的格式合规的代码片段,与维基函数中实现的定制化组合语言有异。"
282221
wikitext
text/x-wiki
'''演绎靶标'''是用“传统”编程语言(如 Python)编写的格式合规的代码片段,与维基函数中实现的定制化组合语言有异。
8a17wkfmz0m53alj4u5469davwhm4tr
Translations:Wikifunctions:Execution targets/53/zh-hans
1198
85461
282223
2026-06-11T12:24:58Z
七八年再来一次
10776
Created page with "演绎靶标在编写复杂,自包含的算法时很有用,特别是在性能至关重要的地方。"
282223
wikitext
text/x-wiki
演绎靶标在编写复杂,自包含的算法时很有用,特别是在性能至关重要的地方。
sqsvhha1zoe1hzv94fe8p7i4y43b2ck
Translations:Wikifunctions:Execution targets/3/zh-hans
1198
85462
282225
2026-06-11T12:25:11Z
七八年再来一次
10776
Created page with "== 目下状况 =="
282225
wikitext
text/x-wiki
== 目下状况 ==
tlzf5fbd1wm2bwxslklglz7ndjrul4h
Translations:Wikifunctions:Execution targets/4/zh-hans
1198
85463
282227
2026-06-11T12:26:10Z
七八年再来一次
10776
Created page with "=== 函数执行原理 ==="
282227
wikitext
text/x-wiki
=== 函数执行原理 ===
8dfwzt2f0v0w8sfmoj6d6d8q05k0vnp
Translations:Wikifunctions:Representing identity/Page display title/zh-hans
1198
85464
282229
2026-06-11T12:41:31Z
七八年再来一次
10776
Created page with "维基函数:标志标识"
282229
wikitext
text/x-wiki
维基函数:标志标识
h55x0t1go6z1zxfx14uf36mokmhmtjc
Wikifunctions:Representing identity/zh-hans
4
85465
282230
2026-06-11T12:41:35Z
七八年再来一次
10776
Created page with "维基函数:标志标识"
282230
wikitext
text/x-wiki
<languages/>{{Technical documentation navbox}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Summary ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We are using identity widely in the Wikifunctions data model, such as [[Z4|Z4K1]], [[Z8|Z8K5]], and [[Z40|Z40K1]], and others. It would make sense to use it in some of our existing types where we currently do not, e.g. [[Z14|Z14]], [[Z60|Z60]], and [[Z61|Z61]]. Also planned types, particularly enumerations, such as grammatical features, will require identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In addition, one of the suggested solutions also can deal with a long-standing question around optional key values.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This document outlines four proposals:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">A type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A generic type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A boolean key on keys</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A key with a list of markers on keys</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Related bugs ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Bugs that are related to this design:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282716|T282716]]: ZObject model: Create a type for identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T320557|T320557]]: Consider adding an identity key to the functional model for ZImplementations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282062|T282062]]: ZObject model: Add a key to Z3 to mark a key as optional</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T290996|T290996]]: Support Optional Keys in Orchestrator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296755|T296755]]: Check current relevance of SELF_REFERENTIAL_KEYS and remove if unnecessary</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T304682|T304682]]: function-schemata: Fix requiredKeys for user defined validators</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T315914|T315914]]: Discuss whether we need to consider the case of new keys being added to existing types with instances</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296400|T296400]]: When a key of an object is for a Type, default the UX to a reference rather than an instance</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T343614|T343614]]: Validation of types should check for identity</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== What is identity, anyway? ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity is a mechanism to capture what a given object is.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">Some types, such as string or numbers, do not need an additional key, since their value is their identity.</span> <span lang="en" dir="ltr" class="mw-content-ltr">But for other types it is not as straightforward.</span> <span lang="en" dir="ltr" class="mw-content-ltr">One example are the two boolean values, true and false, which are structurally not distinguishable.</span> <span lang="en" dir="ltr" class="mw-content-ltr">By persisting the object on Wikifunctions, it gets a ZID, and we use that ZID to distinguish the two values.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Furthermore, this allows us to add names and descriptions to each object (which effectively allows users to understand the meaning of the given objects).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
By using identity we can also ensure that we are the masters of our own destiny: instead of relying on an external authority such as ISO for languages, we can decide and control ourselves which languages we want to support, which languages to differentiate, etc.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another advantage of identity is that this is the only way to get the Z2 of a given object, and thus to access the name and description of the object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity keys can sometimes be supportive of simpler, more straightforward source code. For example, [[:phab:T321998|T321998]] (the parent of [[:phab:T320557|T320557]]) was motivated by a desire for the orchestrator to have a cleaner approach in recording implementation-id in the metadata map.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Required work in all proposals ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Once we have identity available, this would allow the default component to use this information for whether to select references instead of literals.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Changes on default component so the selection is properly restricted.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Optional: validators could be somewhat streamlined.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Running example ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a running example, we will use the [[Z40]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is how the definition of Z40/Boolean value looks currently:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Boolean",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
It is entirely implicit that the key defines the identity. We can try to guess it because the key type of the key is Boolean, which is the type we are defining, but that can be a wrong assumption.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Boolean value for [[Z41|true]] currently looks as follows:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 1: A type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a new type, Z91/Identity. Z91 is used on the key to declare that this key is an identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="7">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="7">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for [[Z41]] would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="4,5">{
"Type": "Boolean",
"Identity": {
"Type": "Identity",
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="4,5">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": "Z91",
"Z91K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably would need a bespoke component for editing Z91 (simple one, very similar to ZReference, while limiting the choices)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No changes in the Type type</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Unless we create a bespoke user interface, we would have no guidance when creating instances of this type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But a Validator would catch errors</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 2: A generic type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a generic type for identity, Z891. Z891 takes the type the identity key expects and returns something like Z91 from Proposal 1, but type safe.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="8-10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="8-10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for Z41/true would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="5-7">{
"Type": "Boolean",
"Identity": {
"Type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="5-7">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Considerable amount of work to support generic types better</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the Z4/Type type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would have, out of the box, a nice interface for creating instances that have identity, getting an object selector zoomed in on the right type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But this requires considerable extension on supporting generic types</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Generic types are not well supported, and a large hassle. We would need to improve support for generic types considerably in order to actually have the advantages we describe here.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new generic type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 3: A Boolean key ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that is Boolean, and states whether this key is an identity key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Identity": "True"
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": "Z41"
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Minor change to backend or frontend required to include this key in the type objects.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be OK</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The identity key would be on every key, which might be a bit cluttery for something that, per definition, happens only once per type at most</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 4: A List of markers ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that takes a list of Z33/key markers. Z33/Key marker is a new enumeration type that has one value, for now, Z34/Identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10-12">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Markers": [Key marker,
"Identity"
]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10-12">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": ["Z33",
"Z34"
]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity value for the key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably no specific changes to backend or frontend required</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be quite neat</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Easily extensible (see optional below)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Optional: Optional ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Optionality decides whether a key needs to be given or not. We have had optional keys since the beginning (e.g. [[Z14|Z14K2]], [[Z60|Z60K2]]), but we have no way to mark them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Proposal 3 and 4 would allow us to extend to represent optional keys quite straightforwardly, and we should probably do it since we are working on this anyway.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 3, we would add another key, Z3K5/optional, with a Boolean type. If Z3K5 is set to true, that key is optional and does not have to be present on an instance of that type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 4, this would be even easier, since we would only need to create another instance of Z33/key marker. The default user experience for this would remain less cluttery.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
One consideration is the question of what other markers there could be.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">I looked through all the types on Beta (99 types!), and that inspired me to a few more possible markers that could help e.g. with refining the user interface (e.g. a marker for making radio buttons, display checkboxes, etc.), maybe even mark mutability in the future, or indicate evaluation order.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
But it wasn’t a huge space of markers, I would say.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In any case, Validation would need to be adapted to take this new field into account.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
This can happen at a later time since we still control the creation of types, but would need to happen before we allow users to create types.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Out of scope ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually it would be nice to have different user experiences for selecting entities with different cardinalities.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">E.g. for Boolean, we have radio boxes between the two choices.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types that have a small number of instances, we could have a dropdown menu.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types with a large number of instances, we could use the type ahead / search entity selector.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Designing and implementing these experiences is not part of this first work.
</div>
[[Category:Technical documentation{{#translation:}}|Representing identity]]
1el83lfqtnzmqjy5dztnkiaod064mkb
282232
282230
2026-06-11T12:42:04Z
七八年再来一次
10776
Created page with "== 总述 =="
282232
wikitext
text/x-wiki
<languages/>{{Technical documentation navbox}}
<span id="Summary"></span>
== 总述 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
We are using identity widely in the Wikifunctions data model, such as [[Z4|Z4K1]], [[Z8|Z8K5]], and [[Z40|Z40K1]], and others. It would make sense to use it in some of our existing types where we currently do not, e.g. [[Z14|Z14]], [[Z60|Z60]], and [[Z61|Z61]]. Also planned types, particularly enumerations, such as grammatical features, will require identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In addition, one of the suggested solutions also can deal with a long-standing question around optional key values.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This document outlines four proposals:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">A type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A generic type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A boolean key on keys</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A key with a list of markers on keys</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Related bugs ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Bugs that are related to this design:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282716|T282716]]: ZObject model: Create a type for identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T320557|T320557]]: Consider adding an identity key to the functional model for ZImplementations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282062|T282062]]: ZObject model: Add a key to Z3 to mark a key as optional</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T290996|T290996]]: Support Optional Keys in Orchestrator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296755|T296755]]: Check current relevance of SELF_REFERENTIAL_KEYS and remove if unnecessary</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T304682|T304682]]: function-schemata: Fix requiredKeys for user defined validators</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T315914|T315914]]: Discuss whether we need to consider the case of new keys being added to existing types with instances</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296400|T296400]]: When a key of an object is for a Type, default the UX to a reference rather than an instance</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T343614|T343614]]: Validation of types should check for identity</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== What is identity, anyway? ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity is a mechanism to capture what a given object is.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">Some types, such as string or numbers, do not need an additional key, since their value is their identity.</span> <span lang="en" dir="ltr" class="mw-content-ltr">But for other types it is not as straightforward.</span> <span lang="en" dir="ltr" class="mw-content-ltr">One example are the two boolean values, true and false, which are structurally not distinguishable.</span> <span lang="en" dir="ltr" class="mw-content-ltr">By persisting the object on Wikifunctions, it gets a ZID, and we use that ZID to distinguish the two values.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Furthermore, this allows us to add names and descriptions to each object (which effectively allows users to understand the meaning of the given objects).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
By using identity we can also ensure that we are the masters of our own destiny: instead of relying on an external authority such as ISO for languages, we can decide and control ourselves which languages we want to support, which languages to differentiate, etc.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another advantage of identity is that this is the only way to get the Z2 of a given object, and thus to access the name and description of the object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity keys can sometimes be supportive of simpler, more straightforward source code. For example, [[:phab:T321998|T321998]] (the parent of [[:phab:T320557|T320557]]) was motivated by a desire for the orchestrator to have a cleaner approach in recording implementation-id in the metadata map.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Required work in all proposals ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Once we have identity available, this would allow the default component to use this information for whether to select references instead of literals.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Changes on default component so the selection is properly restricted.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Optional: validators could be somewhat streamlined.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Running example ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a running example, we will use the [[Z40]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is how the definition of Z40/Boolean value looks currently:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Boolean",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
It is entirely implicit that the key defines the identity. We can try to guess it because the key type of the key is Boolean, which is the type we are defining, but that can be a wrong assumption.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Boolean value for [[Z41|true]] currently looks as follows:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 1: A type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a new type, Z91/Identity. Z91 is used on the key to declare that this key is an identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="7">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="7">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for [[Z41]] would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="4,5">{
"Type": "Boolean",
"Identity": {
"Type": "Identity",
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="4,5">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": "Z91",
"Z91K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably would need a bespoke component for editing Z91 (simple one, very similar to ZReference, while limiting the choices)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No changes in the Type type</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Unless we create a bespoke user interface, we would have no guidance when creating instances of this type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But a Validator would catch errors</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 2: A generic type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a generic type for identity, Z891. Z891 takes the type the identity key expects and returns something like Z91 from Proposal 1, but type safe.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="8-10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="8-10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for Z41/true would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="5-7">{
"Type": "Boolean",
"Identity": {
"Type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="5-7">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Considerable amount of work to support generic types better</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the Z4/Type type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would have, out of the box, a nice interface for creating instances that have identity, getting an object selector zoomed in on the right type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But this requires considerable extension on supporting generic types</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Generic types are not well supported, and a large hassle. We would need to improve support for generic types considerably in order to actually have the advantages we describe here.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new generic type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 3: A Boolean key ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that is Boolean, and states whether this key is an identity key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Identity": "True"
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": "Z41"
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Minor change to backend or frontend required to include this key in the type objects.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be OK</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The identity key would be on every key, which might be a bit cluttery for something that, per definition, happens only once per type at most</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 4: A List of markers ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that takes a list of Z33/key markers. Z33/Key marker is a new enumeration type that has one value, for now, Z34/Identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10-12">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Markers": [Key marker,
"Identity"
]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10-12">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": ["Z33",
"Z34"
]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity value for the key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably no specific changes to backend or frontend required</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be quite neat</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Easily extensible (see optional below)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Optional: Optional ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Optionality decides whether a key needs to be given or not. We have had optional keys since the beginning (e.g. [[Z14|Z14K2]], [[Z60|Z60K2]]), but we have no way to mark them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Proposal 3 and 4 would allow us to extend to represent optional keys quite straightforwardly, and we should probably do it since we are working on this anyway.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 3, we would add another key, Z3K5/optional, with a Boolean type. If Z3K5 is set to true, that key is optional and does not have to be present on an instance of that type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 4, this would be even easier, since we would only need to create another instance of Z33/key marker. The default user experience for this would remain less cluttery.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
One consideration is the question of what other markers there could be.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">I looked through all the types on Beta (99 types!), and that inspired me to a few more possible markers that could help e.g. with refining the user interface (e.g. a marker for making radio buttons, display checkboxes, etc.), maybe even mark mutability in the future, or indicate evaluation order.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
But it wasn’t a huge space of markers, I would say.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In any case, Validation would need to be adapted to take this new field into account.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
This can happen at a later time since we still control the creation of types, but would need to happen before we allow users to create types.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Out of scope ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually it would be nice to have different user experiences for selecting entities with different cardinalities.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">E.g. for Boolean, we have radio boxes between the two choices.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types that have a small number of instances, we could have a dropdown menu.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types with a large number of instances, we could use the type ahead / search entity selector.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Designing and implementing these experiences is not part of this first work.
</div>
[[Category:Technical documentation{{#translation:}}|Representing identity]]
8d78x8kbwn29y2n5rcikz5v956yzsvl
282234
282232
2026-06-11T12:48:47Z
七八年再来一次
10776
Created page with "我们在维基函数数据模型中广泛使用标志,例如 [[$1|Z4K1]],[[$2|Z8K5]],和 [[$3|Z40K1]]等。在某些尚未改变的现有类型中引入标志是合理的,例如 [[$4|Z14]],[[$5|Z60]],和 [[$6|Z61]]。此外计划中的类型,尤其是枚举,如语法特征也将需标识。"
282234
wikitext
text/x-wiki
<languages/>{{Technical documentation navbox}}
<span id="Summary"></span>
== 总述 ==
我们在维基函数数据模型中广泛使用标志,例如 [[Z4|Z4K1]],[[Z8|Z8K5]],和 [[Z40|Z40K1]]等。在某些尚未改变的现有类型中引入标志是合理的,例如 [[Z14|Z14]],[[Z60|Z60]],和 [[Z61|Z61]]。此外计划中的类型,尤其是枚举,如语法特征也将需标识。
<div lang="en" dir="ltr" class="mw-content-ltr">
In addition, one of the suggested solutions also can deal with a long-standing question around optional key values.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This document outlines four proposals:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">A type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A generic type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A boolean key on keys</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A key with a list of markers on keys</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Related bugs ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Bugs that are related to this design:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282716|T282716]]: ZObject model: Create a type for identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T320557|T320557]]: Consider adding an identity key to the functional model for ZImplementations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282062|T282062]]: ZObject model: Add a key to Z3 to mark a key as optional</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T290996|T290996]]: Support Optional Keys in Orchestrator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296755|T296755]]: Check current relevance of SELF_REFERENTIAL_KEYS and remove if unnecessary</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T304682|T304682]]: function-schemata: Fix requiredKeys for user defined validators</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T315914|T315914]]: Discuss whether we need to consider the case of new keys being added to existing types with instances</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296400|T296400]]: When a key of an object is for a Type, default the UX to a reference rather than an instance</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T343614|T343614]]: Validation of types should check for identity</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== What is identity, anyway? ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity is a mechanism to capture what a given object is.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">Some types, such as string or numbers, do not need an additional key, since their value is their identity.</span> <span lang="en" dir="ltr" class="mw-content-ltr">But for other types it is not as straightforward.</span> <span lang="en" dir="ltr" class="mw-content-ltr">One example are the two boolean values, true and false, which are structurally not distinguishable.</span> <span lang="en" dir="ltr" class="mw-content-ltr">By persisting the object on Wikifunctions, it gets a ZID, and we use that ZID to distinguish the two values.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Furthermore, this allows us to add names and descriptions to each object (which effectively allows users to understand the meaning of the given objects).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
By using identity we can also ensure that we are the masters of our own destiny: instead of relying on an external authority such as ISO for languages, we can decide and control ourselves which languages we want to support, which languages to differentiate, etc.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another advantage of identity is that this is the only way to get the Z2 of a given object, and thus to access the name and description of the object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity keys can sometimes be supportive of simpler, more straightforward source code. For example, [[:phab:T321998|T321998]] (the parent of [[:phab:T320557|T320557]]) was motivated by a desire for the orchestrator to have a cleaner approach in recording implementation-id in the metadata map.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Required work in all proposals ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Once we have identity available, this would allow the default component to use this information for whether to select references instead of literals.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Changes on default component so the selection is properly restricted.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Optional: validators could be somewhat streamlined.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Running example ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a running example, we will use the [[Z40]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is how the definition of Z40/Boolean value looks currently:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Boolean",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
It is entirely implicit that the key defines the identity. We can try to guess it because the key type of the key is Boolean, which is the type we are defining, but that can be a wrong assumption.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Boolean value for [[Z41|true]] currently looks as follows:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 1: A type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a new type, Z91/Identity. Z91 is used on the key to declare that this key is an identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="7">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="7">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for [[Z41]] would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="4,5">{
"Type": "Boolean",
"Identity": {
"Type": "Identity",
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="4,5">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": "Z91",
"Z91K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably would need a bespoke component for editing Z91 (simple one, very similar to ZReference, while limiting the choices)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No changes in the Type type</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Unless we create a bespoke user interface, we would have no guidance when creating instances of this type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But a Validator would catch errors</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 2: A generic type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a generic type for identity, Z891. Z891 takes the type the identity key expects and returns something like Z91 from Proposal 1, but type safe.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="8-10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="8-10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for Z41/true would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="5-7">{
"Type": "Boolean",
"Identity": {
"Type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="5-7">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Considerable amount of work to support generic types better</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the Z4/Type type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would have, out of the box, a nice interface for creating instances that have identity, getting an object selector zoomed in on the right type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But this requires considerable extension on supporting generic types</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Generic types are not well supported, and a large hassle. We would need to improve support for generic types considerably in order to actually have the advantages we describe here.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new generic type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 3: A Boolean key ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that is Boolean, and states whether this key is an identity key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Identity": "True"
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": "Z41"
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Minor change to backend or frontend required to include this key in the type objects.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be OK</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The identity key would be on every key, which might be a bit cluttery for something that, per definition, happens only once per type at most</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 4: A List of markers ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that takes a list of Z33/key markers. Z33/Key marker is a new enumeration type that has one value, for now, Z34/Identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10-12">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Markers": [Key marker,
"Identity"
]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10-12">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": ["Z33",
"Z34"
]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity value for the key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably no specific changes to backend or frontend required</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be quite neat</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Easily extensible (see optional below)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Optional: Optional ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Optionality decides whether a key needs to be given or not. We have had optional keys since the beginning (e.g. [[Z14|Z14K2]], [[Z60|Z60K2]]), but we have no way to mark them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Proposal 3 and 4 would allow us to extend to represent optional keys quite straightforwardly, and we should probably do it since we are working on this anyway.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 3, we would add another key, Z3K5/optional, with a Boolean type. If Z3K5 is set to true, that key is optional and does not have to be present on an instance of that type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 4, this would be even easier, since we would only need to create another instance of Z33/key marker. The default user experience for this would remain less cluttery.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
One consideration is the question of what other markers there could be.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">I looked through all the types on Beta (99 types!), and that inspired me to a few more possible markers that could help e.g. with refining the user interface (e.g. a marker for making radio buttons, display checkboxes, etc.), maybe even mark mutability in the future, or indicate evaluation order.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
But it wasn’t a huge space of markers, I would say.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In any case, Validation would need to be adapted to take this new field into account.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
This can happen at a later time since we still control the creation of types, but would need to happen before we allow users to create types.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Out of scope ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually it would be nice to have different user experiences for selecting entities with different cardinalities.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">E.g. for Boolean, we have radio boxes between the two choices.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types that have a small number of instances, we could have a dropdown menu.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types with a large number of instances, we could use the type ahead / search entity selector.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Designing and implementing these experiences is not part of this first work.
</div>
[[Category:Technical documentation{{#translation:}}|Representing identity]]
cpcrp6ctyrzmtcnqwz0y3db1bl9ppxq
282236
282234
2026-06-11T12:49:21Z
七八年再来一次
10776
Created page with "此外,其中一个建议的解决方案还能解决围绕可选键值存在已久的一个问题。"
282236
wikitext
text/x-wiki
<languages/>{{Technical documentation navbox}}
<span id="Summary"></span>
== 总述 ==
我们在维基函数数据模型中广泛使用标志,例如 [[Z4|Z4K1]],[[Z8|Z8K5]],和 [[Z40|Z40K1]]等。在某些尚未改变的现有类型中引入标志是合理的,例如 [[Z14|Z14]],[[Z60|Z60]],和 [[Z61|Z61]]。此外计划中的类型,尤其是枚举,如语法特征也将需标识。
此外,其中一个建议的解决方案还能解决围绕可选键值存在已久的一个问题。
<div lang="en" dir="ltr" class="mw-content-ltr">
This document outlines four proposals:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">A type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A generic type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A boolean key on keys</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A key with a list of markers on keys</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Related bugs ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Bugs that are related to this design:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282716|T282716]]: ZObject model: Create a type for identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T320557|T320557]]: Consider adding an identity key to the functional model for ZImplementations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282062|T282062]]: ZObject model: Add a key to Z3 to mark a key as optional</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T290996|T290996]]: Support Optional Keys in Orchestrator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296755|T296755]]: Check current relevance of SELF_REFERENTIAL_KEYS and remove if unnecessary</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T304682|T304682]]: function-schemata: Fix requiredKeys for user defined validators</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T315914|T315914]]: Discuss whether we need to consider the case of new keys being added to existing types with instances</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296400|T296400]]: When a key of an object is for a Type, default the UX to a reference rather than an instance</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T343614|T343614]]: Validation of types should check for identity</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== What is identity, anyway? ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity is a mechanism to capture what a given object is.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">Some types, such as string or numbers, do not need an additional key, since their value is their identity.</span> <span lang="en" dir="ltr" class="mw-content-ltr">But for other types it is not as straightforward.</span> <span lang="en" dir="ltr" class="mw-content-ltr">One example are the two boolean values, true and false, which are structurally not distinguishable.</span> <span lang="en" dir="ltr" class="mw-content-ltr">By persisting the object on Wikifunctions, it gets a ZID, and we use that ZID to distinguish the two values.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Furthermore, this allows us to add names and descriptions to each object (which effectively allows users to understand the meaning of the given objects).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
By using identity we can also ensure that we are the masters of our own destiny: instead of relying on an external authority such as ISO for languages, we can decide and control ourselves which languages we want to support, which languages to differentiate, etc.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another advantage of identity is that this is the only way to get the Z2 of a given object, and thus to access the name and description of the object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity keys can sometimes be supportive of simpler, more straightforward source code. For example, [[:phab:T321998|T321998]] (the parent of [[:phab:T320557|T320557]]) was motivated by a desire for the orchestrator to have a cleaner approach in recording implementation-id in the metadata map.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Required work in all proposals ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Once we have identity available, this would allow the default component to use this information for whether to select references instead of literals.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Changes on default component so the selection is properly restricted.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Optional: validators could be somewhat streamlined.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Running example ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a running example, we will use the [[Z40]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is how the definition of Z40/Boolean value looks currently:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Boolean",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
It is entirely implicit that the key defines the identity. We can try to guess it because the key type of the key is Boolean, which is the type we are defining, but that can be a wrong assumption.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Boolean value for [[Z41|true]] currently looks as follows:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 1: A type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a new type, Z91/Identity. Z91 is used on the key to declare that this key is an identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="7">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="7">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for [[Z41]] would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="4,5">{
"Type": "Boolean",
"Identity": {
"Type": "Identity",
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="4,5">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": "Z91",
"Z91K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably would need a bespoke component for editing Z91 (simple one, very similar to ZReference, while limiting the choices)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No changes in the Type type</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Unless we create a bespoke user interface, we would have no guidance when creating instances of this type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But a Validator would catch errors</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 2: A generic type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a generic type for identity, Z891. Z891 takes the type the identity key expects and returns something like Z91 from Proposal 1, but type safe.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="8-10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="8-10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for Z41/true would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="5-7">{
"Type": "Boolean",
"Identity": {
"Type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="5-7">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Considerable amount of work to support generic types better</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the Z4/Type type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would have, out of the box, a nice interface for creating instances that have identity, getting an object selector zoomed in on the right type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But this requires considerable extension on supporting generic types</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Generic types are not well supported, and a large hassle. We would need to improve support for generic types considerably in order to actually have the advantages we describe here.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new generic type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 3: A Boolean key ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that is Boolean, and states whether this key is an identity key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Identity": "True"
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": "Z41"
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Minor change to backend or frontend required to include this key in the type objects.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be OK</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The identity key would be on every key, which might be a bit cluttery for something that, per definition, happens only once per type at most</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 4: A List of markers ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that takes a list of Z33/key markers. Z33/Key marker is a new enumeration type that has one value, for now, Z34/Identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10-12">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Markers": [Key marker,
"Identity"
]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10-12">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": ["Z33",
"Z34"
]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity value for the key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably no specific changes to backend or frontend required</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be quite neat</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Easily extensible (see optional below)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Optional: Optional ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Optionality decides whether a key needs to be given or not. We have had optional keys since the beginning (e.g. [[Z14|Z14K2]], [[Z60|Z60K2]]), but we have no way to mark them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Proposal 3 and 4 would allow us to extend to represent optional keys quite straightforwardly, and we should probably do it since we are working on this anyway.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 3, we would add another key, Z3K5/optional, with a Boolean type. If Z3K5 is set to true, that key is optional and does not have to be present on an instance of that type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 4, this would be even easier, since we would only need to create another instance of Z33/key marker. The default user experience for this would remain less cluttery.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
One consideration is the question of what other markers there could be.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">I looked through all the types on Beta (99 types!), and that inspired me to a few more possible markers that could help e.g. with refining the user interface (e.g. a marker for making radio buttons, display checkboxes, etc.), maybe even mark mutability in the future, or indicate evaluation order.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
But it wasn’t a huge space of markers, I would say.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In any case, Validation would need to be adapted to take this new field into account.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
This can happen at a later time since we still control the creation of types, but would need to happen before we allow users to create types.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Out of scope ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually it would be nice to have different user experiences for selecting entities with different cardinalities.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">E.g. for Boolean, we have radio boxes between the two choices.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types that have a small number of instances, we could have a dropdown menu.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types with a large number of instances, we could use the type ahead / search entity selector.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Designing and implementing these experiences is not part of this first work.
</div>
[[Category:Technical documentation{{#translation:}}|Representing identity]]
hxh6dvd33n4gbjzccfh6axtcqswflh6
282238
282236
2026-06-11T12:51:04Z
七八年再来一次
10776
Created page with "本文件概述了四项计划:"
282238
wikitext
text/x-wiki
<languages/>{{Technical documentation navbox}}
<span id="Summary"></span>
== 总述 ==
我们在维基函数数据模型中广泛使用标志,例如 [[Z4|Z4K1]],[[Z8|Z8K5]],和 [[Z40|Z40K1]]等。在某些尚未改变的现有类型中引入标志是合理的,例如 [[Z14|Z14]],[[Z60|Z60]],和 [[Z61|Z61]]。此外计划中的类型,尤其是枚举,如语法特征也将需标识。
此外,其中一个建议的解决方案还能解决围绕可选键值存在已久的一个问题。
本文件概述了四项计划:
# <span lang="en" dir="ltr" class="mw-content-ltr">A type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A generic type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A boolean key on keys</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A key with a list of markers on keys</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Related bugs ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Bugs that are related to this design:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282716|T282716]]: ZObject model: Create a type for identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T320557|T320557]]: Consider adding an identity key to the functional model for ZImplementations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282062|T282062]]: ZObject model: Add a key to Z3 to mark a key as optional</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T290996|T290996]]: Support Optional Keys in Orchestrator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296755|T296755]]: Check current relevance of SELF_REFERENTIAL_KEYS and remove if unnecessary</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T304682|T304682]]: function-schemata: Fix requiredKeys for user defined validators</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T315914|T315914]]: Discuss whether we need to consider the case of new keys being added to existing types with instances</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296400|T296400]]: When a key of an object is for a Type, default the UX to a reference rather than an instance</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T343614|T343614]]: Validation of types should check for identity</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== What is identity, anyway? ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity is a mechanism to capture what a given object is.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">Some types, such as string or numbers, do not need an additional key, since their value is their identity.</span> <span lang="en" dir="ltr" class="mw-content-ltr">But for other types it is not as straightforward.</span> <span lang="en" dir="ltr" class="mw-content-ltr">One example are the two boolean values, true and false, which are structurally not distinguishable.</span> <span lang="en" dir="ltr" class="mw-content-ltr">By persisting the object on Wikifunctions, it gets a ZID, and we use that ZID to distinguish the two values.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Furthermore, this allows us to add names and descriptions to each object (which effectively allows users to understand the meaning of the given objects).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
By using identity we can also ensure that we are the masters of our own destiny: instead of relying on an external authority such as ISO for languages, we can decide and control ourselves which languages we want to support, which languages to differentiate, etc.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another advantage of identity is that this is the only way to get the Z2 of a given object, and thus to access the name and description of the object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity keys can sometimes be supportive of simpler, more straightforward source code. For example, [[:phab:T321998|T321998]] (the parent of [[:phab:T320557|T320557]]) was motivated by a desire for the orchestrator to have a cleaner approach in recording implementation-id in the metadata map.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Required work in all proposals ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Once we have identity available, this would allow the default component to use this information for whether to select references instead of literals.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Changes on default component so the selection is properly restricted.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Optional: validators could be somewhat streamlined.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Running example ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a running example, we will use the [[Z40]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is how the definition of Z40/Boolean value looks currently:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Boolean",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
It is entirely implicit that the key defines the identity. We can try to guess it because the key type of the key is Boolean, which is the type we are defining, but that can be a wrong assumption.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Boolean value for [[Z41|true]] currently looks as follows:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 1: A type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a new type, Z91/Identity. Z91 is used on the key to declare that this key is an identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="7">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="7">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for [[Z41]] would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="4,5">{
"Type": "Boolean",
"Identity": {
"Type": "Identity",
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="4,5">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": "Z91",
"Z91K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably would need a bespoke component for editing Z91 (simple one, very similar to ZReference, while limiting the choices)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No changes in the Type type</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Unless we create a bespoke user interface, we would have no guidance when creating instances of this type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But a Validator would catch errors</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 2: A generic type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a generic type for identity, Z891. Z891 takes the type the identity key expects and returns something like Z91 from Proposal 1, but type safe.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="8-10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="8-10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for Z41/true would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="5-7">{
"Type": "Boolean",
"Identity": {
"Type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="5-7">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Considerable amount of work to support generic types better</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the Z4/Type type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would have, out of the box, a nice interface for creating instances that have identity, getting an object selector zoomed in on the right type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But this requires considerable extension on supporting generic types</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Generic types are not well supported, and a large hassle. We would need to improve support for generic types considerably in order to actually have the advantages we describe here.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new generic type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 3: A Boolean key ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that is Boolean, and states whether this key is an identity key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Identity": "True"
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": "Z41"
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Minor change to backend or frontend required to include this key in the type objects.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be OK</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The identity key would be on every key, which might be a bit cluttery for something that, per definition, happens only once per type at most</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 4: A List of markers ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that takes a list of Z33/key markers. Z33/Key marker is a new enumeration type that has one value, for now, Z34/Identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10-12">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Markers": [Key marker,
"Identity"
]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10-12">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": ["Z33",
"Z34"
]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity value for the key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably no specific changes to backend or frontend required</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be quite neat</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Easily extensible (see optional below)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Optional: Optional ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Optionality decides whether a key needs to be given or not. We have had optional keys since the beginning (e.g. [[Z14|Z14K2]], [[Z60|Z60K2]]), but we have no way to mark them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Proposal 3 and 4 would allow us to extend to represent optional keys quite straightforwardly, and we should probably do it since we are working on this anyway.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 3, we would add another key, Z3K5/optional, with a Boolean type. If Z3K5 is set to true, that key is optional and does not have to be present on an instance of that type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 4, this would be even easier, since we would only need to create another instance of Z33/key marker. The default user experience for this would remain less cluttery.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
One consideration is the question of what other markers there could be.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">I looked through all the types on Beta (99 types!), and that inspired me to a few more possible markers that could help e.g. with refining the user interface (e.g. a marker for making radio buttons, display checkboxes, etc.), maybe even mark mutability in the future, or indicate evaluation order.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
But it wasn’t a huge space of markers, I would say.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In any case, Validation would need to be adapted to take this new field into account.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
This can happen at a later time since we still control the creation of types, but would need to happen before we allow users to create types.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Out of scope ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually it would be nice to have different user experiences for selecting entities with different cardinalities.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">E.g. for Boolean, we have radio boxes between the two choices.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types that have a small number of instances, we could have a dropdown menu.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types with a large number of instances, we could use the type ahead / search entity selector.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Designing and implementing these experiences is not part of this first work.
</div>
[[Category:Technical documentation{{#translation:}}|Representing identity]]
msakl8st67nh72j4ipezd04qt9pksda
282240
282238
2026-06-11T12:51:41Z
七八年再来一次
10776
282240
wikitext
text/x-wiki
<languages/>{{Technical documentation navbox}}
<span id="Summary"></span>
== 总述 ==
我们在维基函数数据模型中广泛使用标志,例如 [[Z4|Z4K1]],[[Z8|Z8K5]],和 [[Z40|Z40K1]]等。在某些尚未改变的现有类型中引入标志是合理的,例如 [[Z14|Z14]],[[Z60|Z60]],和 [[Z61|Z61]]。此外计划中的类型,尤其是枚举,如语法特征也将需标识。
此外,其中一个建议的解决方案还能解决围绕可选键值存在已久的一个问题。
本文概述了四项建议:
# <span lang="en" dir="ltr" class="mw-content-ltr">A type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A generic type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A boolean key on keys</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A key with a list of markers on keys</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Related bugs ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Bugs that are related to this design:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282716|T282716]]: ZObject model: Create a type for identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T320557|T320557]]: Consider adding an identity key to the functional model for ZImplementations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282062|T282062]]: ZObject model: Add a key to Z3 to mark a key as optional</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T290996|T290996]]: Support Optional Keys in Orchestrator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296755|T296755]]: Check current relevance of SELF_REFERENTIAL_KEYS and remove if unnecessary</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T304682|T304682]]: function-schemata: Fix requiredKeys for user defined validators</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T315914|T315914]]: Discuss whether we need to consider the case of new keys being added to existing types with instances</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296400|T296400]]: When a key of an object is for a Type, default the UX to a reference rather than an instance</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T343614|T343614]]: Validation of types should check for identity</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== What is identity, anyway? ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity is a mechanism to capture what a given object is.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">Some types, such as string or numbers, do not need an additional key, since their value is their identity.</span> <span lang="en" dir="ltr" class="mw-content-ltr">But for other types it is not as straightforward.</span> <span lang="en" dir="ltr" class="mw-content-ltr">One example are the two boolean values, true and false, which are structurally not distinguishable.</span> <span lang="en" dir="ltr" class="mw-content-ltr">By persisting the object on Wikifunctions, it gets a ZID, and we use that ZID to distinguish the two values.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Furthermore, this allows us to add names and descriptions to each object (which effectively allows users to understand the meaning of the given objects).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
By using identity we can also ensure that we are the masters of our own destiny: instead of relying on an external authority such as ISO for languages, we can decide and control ourselves which languages we want to support, which languages to differentiate, etc.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another advantage of identity is that this is the only way to get the Z2 of a given object, and thus to access the name and description of the object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity keys can sometimes be supportive of simpler, more straightforward source code. For example, [[:phab:T321998|T321998]] (the parent of [[:phab:T320557|T320557]]) was motivated by a desire for the orchestrator to have a cleaner approach in recording implementation-id in the metadata map.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Required work in all proposals ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Once we have identity available, this would allow the default component to use this information for whether to select references instead of literals.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Changes on default component so the selection is properly restricted.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Optional: validators could be somewhat streamlined.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Running example ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a running example, we will use the [[Z40]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is how the definition of Z40/Boolean value looks currently:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Boolean",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
It is entirely implicit that the key defines the identity. We can try to guess it because the key type of the key is Boolean, which is the type we are defining, but that can be a wrong assumption.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Boolean value for [[Z41|true]] currently looks as follows:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 1: A type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a new type, Z91/Identity. Z91 is used on the key to declare that this key is an identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="7">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="7">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for [[Z41]] would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="4,5">{
"Type": "Boolean",
"Identity": {
"Type": "Identity",
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="4,5">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": "Z91",
"Z91K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably would need a bespoke component for editing Z91 (simple one, very similar to ZReference, while limiting the choices)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No changes in the Type type</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Unless we create a bespoke user interface, we would have no guidance when creating instances of this type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But a Validator would catch errors</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 2: A generic type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a generic type for identity, Z891. Z891 takes the type the identity key expects and returns something like Z91 from Proposal 1, but type safe.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="8-10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="8-10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for Z41/true would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="5-7">{
"Type": "Boolean",
"Identity": {
"Type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="5-7">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Considerable amount of work to support generic types better</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the Z4/Type type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would have, out of the box, a nice interface for creating instances that have identity, getting an object selector zoomed in on the right type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But this requires considerable extension on supporting generic types</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Generic types are not well supported, and a large hassle. We would need to improve support for generic types considerably in order to actually have the advantages we describe here.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new generic type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 3: A Boolean key ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that is Boolean, and states whether this key is an identity key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Identity": "True"
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": "Z41"
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Minor change to backend or frontend required to include this key in the type objects.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be OK</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The identity key would be on every key, which might be a bit cluttery for something that, per definition, happens only once per type at most</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 4: A List of markers ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that takes a list of Z33/key markers. Z33/Key marker is a new enumeration type that has one value, for now, Z34/Identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10-12">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Markers": [Key marker,
"Identity"
]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10-12">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": ["Z33",
"Z34"
]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity value for the key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably no specific changes to backend or frontend required</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be quite neat</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Easily extensible (see optional below)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Optional: Optional ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Optionality decides whether a key needs to be given or not. We have had optional keys since the beginning (e.g. [[Z14|Z14K2]], [[Z60|Z60K2]]), but we have no way to mark them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Proposal 3 and 4 would allow us to extend to represent optional keys quite straightforwardly, and we should probably do it since we are working on this anyway.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 3, we would add another key, Z3K5/optional, with a Boolean type. If Z3K5 is set to true, that key is optional and does not have to be present on an instance of that type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 4, this would be even easier, since we would only need to create another instance of Z33/key marker. The default user experience for this would remain less cluttery.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
One consideration is the question of what other markers there could be.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">I looked through all the types on Beta (99 types!), and that inspired me to a few more possible markers that could help e.g. with refining the user interface (e.g. a marker for making radio buttons, display checkboxes, etc.), maybe even mark mutability in the future, or indicate evaluation order.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
But it wasn’t a huge space of markers, I would say.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In any case, Validation would need to be adapted to take this new field into account.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
This can happen at a later time since we still control the creation of types, but would need to happen before we allow users to create types.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Out of scope ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually it would be nice to have different user experiences for selecting entities with different cardinalities.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">E.g. for Boolean, we have radio boxes between the two choices.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types that have a small number of instances, we could have a dropdown menu.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types with a large number of instances, we could use the type ahead / search entity selector.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Designing and implementing these experiences is not part of this first work.
</div>
[[Category:Technical documentation{{#translation:}}|Representing identity]]
frxyipxywfztdukrloqnqgubtdngeyq
282242
282240
2026-06-11T12:52:33Z
七八年再来一次
10776
Created page with "一个标志的类"
282242
wikitext
text/x-wiki
<languages/>{{Technical documentation navbox}}
<span id="Summary"></span>
== 总述 ==
我们在维基函数数据模型中广泛使用标志,例如 [[Z4|Z4K1]],[[Z8|Z8K5]],和 [[Z40|Z40K1]]等。在某些尚未改变的现有类型中引入标志是合理的,例如 [[Z14|Z14]],[[Z60|Z60]],和 [[Z61|Z61]]。此外计划中的类型,尤其是枚举,如语法特征也将需标识。
此外,其中一个建议的解决方案还能解决围绕可选键值存在已久的一个问题。
本文概述了四项建议:
# 一个标志的类
# <span lang="en" dir="ltr" class="mw-content-ltr">A generic type for identity</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A boolean key on keys</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A key with a list of markers on keys</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Related bugs ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Bugs that are related to this design:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282716|T282716]]: ZObject model: Create a type for identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T320557|T320557]]: Consider adding an identity key to the functional model for ZImplementations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282062|T282062]]: ZObject model: Add a key to Z3 to mark a key as optional</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T290996|T290996]]: Support Optional Keys in Orchestrator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296755|T296755]]: Check current relevance of SELF_REFERENTIAL_KEYS and remove if unnecessary</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T304682|T304682]]: function-schemata: Fix requiredKeys for user defined validators</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T315914|T315914]]: Discuss whether we need to consider the case of new keys being added to existing types with instances</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296400|T296400]]: When a key of an object is for a Type, default the UX to a reference rather than an instance</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T343614|T343614]]: Validation of types should check for identity</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== What is identity, anyway? ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity is a mechanism to capture what a given object is.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">Some types, such as string or numbers, do not need an additional key, since their value is their identity.</span> <span lang="en" dir="ltr" class="mw-content-ltr">But for other types it is not as straightforward.</span> <span lang="en" dir="ltr" class="mw-content-ltr">One example are the two boolean values, true and false, which are structurally not distinguishable.</span> <span lang="en" dir="ltr" class="mw-content-ltr">By persisting the object on Wikifunctions, it gets a ZID, and we use that ZID to distinguish the two values.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Furthermore, this allows us to add names and descriptions to each object (which effectively allows users to understand the meaning of the given objects).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
By using identity we can also ensure that we are the masters of our own destiny: instead of relying on an external authority such as ISO for languages, we can decide and control ourselves which languages we want to support, which languages to differentiate, etc.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another advantage of identity is that this is the only way to get the Z2 of a given object, and thus to access the name and description of the object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity keys can sometimes be supportive of simpler, more straightforward source code. For example, [[:phab:T321998|T321998]] (the parent of [[:phab:T320557|T320557]]) was motivated by a desire for the orchestrator to have a cleaner approach in recording implementation-id in the metadata map.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Required work in all proposals ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Once we have identity available, this would allow the default component to use this information for whether to select references instead of literals.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Changes on default component so the selection is properly restricted.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Optional: validators could be somewhat streamlined.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Running example ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a running example, we will use the [[Z40]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is how the definition of Z40/Boolean value looks currently:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Boolean",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
It is entirely implicit that the key defines the identity. We can try to guess it because the key type of the key is Boolean, which is the type we are defining, but that can be a wrong assumption.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Boolean value for [[Z41|true]] currently looks as follows:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 1: A type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a new type, Z91/Identity. Z91 is used on the key to declare that this key is an identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="7">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="7">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for [[Z41]] would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="4,5">{
"Type": "Boolean",
"Identity": {
"Type": "Identity",
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="4,5">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": "Z91",
"Z91K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably would need a bespoke component for editing Z91 (simple one, very similar to ZReference, while limiting the choices)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No changes in the Type type</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Unless we create a bespoke user interface, we would have no guidance when creating instances of this type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But a Validator would catch errors</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 2: A generic type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a generic type for identity, Z891. Z891 takes the type the identity key expects and returns something like Z91 from Proposal 1, but type safe.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="8-10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="8-10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for Z41/true would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="5-7">{
"Type": "Boolean",
"Identity": {
"Type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="5-7">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Considerable amount of work to support generic types better</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the Z4/Type type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would have, out of the box, a nice interface for creating instances that have identity, getting an object selector zoomed in on the right type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But this requires considerable extension on supporting generic types</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Generic types are not well supported, and a large hassle. We would need to improve support for generic types considerably in order to actually have the advantages we describe here.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new generic type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 3: A Boolean key ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that is Boolean, and states whether this key is an identity key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Identity": "True"
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": "Z41"
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Minor change to backend or frontend required to include this key in the type objects.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be OK</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The identity key would be on every key, which might be a bit cluttery for something that, per definition, happens only once per type at most</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 4: A List of markers ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that takes a list of Z33/key markers. Z33/Key marker is a new enumeration type that has one value, for now, Z34/Identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10-12">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Markers": [Key marker,
"Identity"
]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10-12">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": ["Z33",
"Z34"
]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity value for the key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably no specific changes to backend or frontend required</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be quite neat</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Easily extensible (see optional below)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Optional: Optional ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Optionality decides whether a key needs to be given or not. We have had optional keys since the beginning (e.g. [[Z14|Z14K2]], [[Z60|Z60K2]]), but we have no way to mark them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Proposal 3 and 4 would allow us to extend to represent optional keys quite straightforwardly, and we should probably do it since we are working on this anyway.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 3, we would add another key, Z3K5/optional, with a Boolean type. If Z3K5 is set to true, that key is optional and does not have to be present on an instance of that type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 4, this would be even easier, since we would only need to create another instance of Z33/key marker. The default user experience for this would remain less cluttery.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
One consideration is the question of what other markers there could be.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">I looked through all the types on Beta (99 types!), and that inspired me to a few more possible markers that could help e.g. with refining the user interface (e.g. a marker for making radio buttons, display checkboxes, etc.), maybe even mark mutability in the future, or indicate evaluation order.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
But it wasn’t a huge space of markers, I would say.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In any case, Validation would need to be adapted to take this new field into account.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
This can happen at a later time since we still control the creation of types, but would need to happen before we allow users to create types.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Out of scope ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually it would be nice to have different user experiences for selecting entities with different cardinalities.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">E.g. for Boolean, we have radio boxes between the two choices.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types that have a small number of instances, we could have a dropdown menu.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types with a large number of instances, we could use the type ahead / search entity selector.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Designing and implementing these experiences is not part of this first work.
</div>
[[Category:Technical documentation{{#translation:}}|Representing identity]]
fhkd6nfktu4nldryaf5vapvvhntjm31
282244
282242
2026-06-11T12:53:24Z
七八年再来一次
10776
Created page with "一个标志的泛型类"
282244
wikitext
text/x-wiki
<languages/>{{Technical documentation navbox}}
<span id="Summary"></span>
== 总述 ==
我们在维基函数数据模型中广泛使用标志,例如 [[Z4|Z4K1]],[[Z8|Z8K5]],和 [[Z40|Z40K1]]等。在某些尚未改变的现有类型中引入标志是合理的,例如 [[Z14|Z14]],[[Z60|Z60]],和 [[Z61|Z61]]。此外计划中的类型,尤其是枚举,如语法特征也将需标识。
此外,其中一个建议的解决方案还能解决围绕可选键值存在已久的一个问题。
本文概述了四项建议:
# 一个标志的类
# 一个标志的泛型类
# <span lang="en" dir="ltr" class="mw-content-ltr">A boolean key on keys</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A key with a list of markers on keys</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Related bugs ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Bugs that are related to this design:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282716|T282716]]: ZObject model: Create a type for identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T320557|T320557]]: Consider adding an identity key to the functional model for ZImplementations</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T282062|T282062]]: ZObject model: Add a key to Z3 to mark a key as optional</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T290996|T290996]]: Support Optional Keys in Orchestrator</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296755|T296755]]: Check current relevance of SELF_REFERENTIAL_KEYS and remove if unnecessary</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T304682|T304682]]: function-schemata: Fix requiredKeys for user defined validators</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T315914|T315914]]: Discuss whether we need to consider the case of new keys being added to existing types with instances</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T296400|T296400]]: When a key of an object is for a Type, default the UX to a reference rather than an instance</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:phab:T343614|T343614]]: Validation of types should check for identity</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== What is identity, anyway? ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity is a mechanism to capture what a given object is.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">Some types, such as string or numbers, do not need an additional key, since their value is their identity.</span> <span lang="en" dir="ltr" class="mw-content-ltr">But for other types it is not as straightforward.</span> <span lang="en" dir="ltr" class="mw-content-ltr">One example are the two boolean values, true and false, which are structurally not distinguishable.</span> <span lang="en" dir="ltr" class="mw-content-ltr">By persisting the object on Wikifunctions, it gets a ZID, and we use that ZID to distinguish the two values.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Furthermore, this allows us to add names and descriptions to each object (which effectively allows users to understand the meaning of the given objects).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
By using identity we can also ensure that we are the masters of our own destiny: instead of relying on an external authority such as ISO for languages, we can decide and control ourselves which languages we want to support, which languages to differentiate, etc.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Another advantage of identity is that this is the only way to get the Z2 of a given object, and thus to access the name and description of the object.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Identity keys can sometimes be supportive of simpler, more straightforward source code. For example, [[:phab:T321998|T321998]] (the parent of [[:phab:T320557|T320557]]) was motivated by a desire for the orchestrator to have a cleaner approach in recording implementation-id in the metadata map.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Required work in all proposals ==
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Once we have identity available, this would allow the default component to use this information for whether to select references instead of literals.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Changes on default component so the selection is properly restricted.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Optional: validators could be somewhat streamlined.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Running example ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
As a running example, we will use the [[Z40]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is how the definition of Z40/Boolean value looks currently:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Boolean",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z40",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
It is entirely implicit that the key defines the identity. We can try to guess it because the key type of the key is Boolean, which is the type we are defining, but that can be a wrong assumption.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A Boolean value for [[Z41|true]] currently looks as follows:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 1: A type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a new type, Z91/Identity. Z91 is used on the key to declare that this key is an identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="7">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="7">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for [[Z41]] would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="4,5">{
"Type": "Boolean",
"Identity": {
"Type": "Identity",
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="4,5">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": "Z91",
"Z91K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably would need a bespoke component for editing Z91 (simple one, very similar to ZReference, while limiting the choices)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No changes in the Type type</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Unless we create a bespoke user interface, we would have no guidance when creating instances of this type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But a Validator would catch errors</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 2: A generic type for identity ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We introduce a generic type for identity, Z891. Z891 takes the type the identity key expects and returns something like Z91 from Proposal 1, but type safe.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="8-10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Key ID": "Z40K1",
"Names": [ … ]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="8-10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"Z3K2": "Z40K1",
"Z3K3": [ … ]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
There is a new type that would have the same definition as Z9. So the value for Z41/true would look as follows.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="5-7">{
"Type": "Boolean",
"Identity": {
"Type": {
"Type": "Function call",
"Function": "Identity",
"Type": "Boolean"
},
"Reference": "True"
}
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="5-7">{
"Z1K1": "Z40",
"Z40K1": {
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z891",
"Z891K1": "Z40"
},
"K1": "Z41"
}
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Considerable amount of work to support generic types better</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types and all values that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Will require adapting the backend for every type that uses identity, since the instances have changed</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the Z4/Type type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would have, out of the box, a nice interface for creating instances that have identity, getting an object selector zoomed in on the right type.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But this requires considerable extension on supporting generic types</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Generic types are not well supported, and a large hassle. We would need to improve support for generic types considerably in order to actually have the advantages we describe here.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change all existing values using an identity and all types that use an identity. But better now than later.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Validators need to be adapted to the new generic type. The work needs to be synchronized with switching the individual types over.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 3: A Boolean key ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that is Boolean, and states whether this key is an identity key.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Identity": "True"
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": "Z41"
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Minor change to backend or frontend required to include this key in the type objects.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be OK</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The identity key would be on every key, which might be a bit cluttery for something that, per definition, happens only once per type at most</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Proposal 4: A List of markers ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of introducing a new type, we extend Z3/Key by another key that takes a list of Z33/key markers. Z33/Key marker is a new enumeration type that has one value, for now, Z34/Identity.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Defining Boolean ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Differences are highlighted.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line" highlight="10-12">{
"Type": "Type",
"Identity": "Boolean",
"Keys": ["Key",
{
"Type": "Key",
"Key type": "Identity",
"Key ID": "Z40K1",
"Names": [ … ],
"Markers": [Key marker,
"Identity"
]
}
],
"Validator": …
}</syntaxhighlight>
| <syntaxhighlight lang="json" highlight="10-12">{
"Z1K1": "Z4",
"Z4K1": "Z40",
"Z4K2": ["Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z91",
"Z3K2": "Z40K1",
"Z3K3": [ … ],
"Z3K4": ["Z33",
"Z34"
]
}
],
"Z4K3": …
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
In this case, the value for Z41/true would not change at all.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"Type": "Boolean",
"Identity": "True"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z40",
"Z40K1": "Z41"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Required work ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add identity value for the key marker type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Add key Z3K4 to Type Z3 / Key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Adapt types that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Probably no specific changes to backend or frontend required</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Advantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">No change to the instances that use identity</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The out-of-the box interface for editing identity on a type would be quite neat</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Easily extensible (see optional below)</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Disadvantages ====
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We would need to change type Z4/Type</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">But we just did that recently and it went quite smoothly</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Optional: Optional ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Optionality decides whether a key needs to be given or not. We have had optional keys since the beginning (e.g. [[Z14|Z14K2]], [[Z60|Z60K2]]), but we have no way to mark them.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Proposal 3 and 4 would allow us to extend to represent optional keys quite straightforwardly, and we should probably do it since we are working on this anyway.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 3, we would add another key, Z3K5/optional, with a Boolean type. If Z3K5 is set to true, that key is optional and does not have to be present on an instance of that type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For Proposal 4, this would be even easier, since we would only need to create another instance of Z33/key marker. The default user experience for this would remain less cluttery.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
One consideration is the question of what other markers there could be.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">I looked through all the types on Beta (99 types!), and that inspired me to a few more possible markers that could help e.g. with refining the user interface (e.g. a marker for making radio buttons, display checkboxes, etc.), maybe even mark mutability in the future, or indicate evaluation order.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
But it wasn’t a huge space of markers, I would say.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In any case, Validation would need to be adapted to take this new field into account.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
This can happen at a later time since we still control the creation of types, but would need to happen before we allow users to create types.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Out of scope ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Eventually it would be nice to have different user experiences for selecting entities with different cardinalities.
</div> <span lang="en" dir="ltr" class="mw-content-ltr">E.g. for Boolean, we have radio boxes between the two choices.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types that have a small number of instances, we could have a dropdown menu.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For types with a large number of instances, we could use the type ahead / search entity selector.</span> <div lang="en" dir="ltr" class="mw-content-ltr">
Designing and implementing these experiences is not part of this first work.
</div>
[[Category:Technical documentation{{#translation:}}|Representing identity]]
ftgty8clrrjvp75cy3lw65f67hzm3fj
Translations:Wikifunctions:Representing identity/1/zh-hans
1198
85466
282231
2026-06-11T12:42:01Z
七八年再来一次
10776
Created page with "== 总述 =="
282231
wikitext
text/x-wiki
== 总述 ==
2dikid97r42t6zyc1lvuyfmyn1vx4q3
Translations:Wikifunctions:Representing identity/2/zh-hans
1198
85467
282233
2026-06-11T12:48:44Z
七八年再来一次
10776
Created page with "我们在维基函数数据模型中广泛使用标志,例如 [[$1|Z4K1]],[[$2|Z8K5]],和 [[$3|Z40K1]]等。在某些尚未改变的现有类型中引入标志是合理的,例如 [[$4|Z14]],[[$5|Z60]],和 [[$6|Z61]]。此外计划中的类型,尤其是枚举,如语法特征也将需标识。"
282233
wikitext
text/x-wiki
我们在维基函数数据模型中广泛使用标志,例如 [[$1|Z4K1]],[[$2|Z8K5]],和 [[$3|Z40K1]]等。在某些尚未改变的现有类型中引入标志是合理的,例如 [[$4|Z14]],[[$5|Z60]],和 [[$6|Z61]]。此外计划中的类型,尤其是枚举,如语法特征也将需标识。
rmt79eis8fbe50o3ymowuj9i3mhiyfo
Translations:Wikifunctions:Representing identity/3/zh-hans
1198
85468
282235
2026-06-11T12:49:18Z
七八年再来一次
10776
Created page with "此外,其中一个建议的解决方案还能解决围绕可选键值存在已久的一个问题。"
282235
wikitext
text/x-wiki
此外,其中一个建议的解决方案还能解决围绕可选键值存在已久的一个问题。
4m038w97ri34ppiu9t96vx7uymt6jft
Translations:Wikifunctions:Representing identity/4/zh-hans
1198
85469
282237
2026-06-11T12:51:01Z
七八年再来一次
10776
Created page with "本文件概述了四项计划:"
282237
wikitext
text/x-wiki
本文件概述了四项计划:
8jvhivka3lr30yva56twsx7ls4qy1zh
282239
282237
2026-06-11T12:51:37Z
七八年再来一次
10776
282239
wikitext
text/x-wiki
本文概述了四项建议:
08nptsswnug5j2ijdarqazd3ubhfmru
Translations:Wikifunctions:Representing identity/5/zh-hans
1198
85470
282241
2026-06-11T12:52:29Z
七八年再来一次
10776
Created page with "一个标志的类"
282241
wikitext
text/x-wiki
一个标志的类
8wt7n5coi4you5c82qhvz98w5i8vx09
Translations:Wikifunctions:Representing identity/6/zh-hans
1198
85471
282243
2026-06-11T12:53:20Z
七八年再来一次
10776
Created page with "一个标志的泛型类"
282243
wikitext
text/x-wiki
一个标志的泛型类
3gos9zeih7vyq0cqshay0in5n9xbxyl
Translations:Wikifunctions:Reserved ZIDs/Page display title/zh-hans
1198
85472
282249
2026-06-11T12:59:13Z
七八年再来一次
10776
Created page with "维基函数:保留的 Z 编号"
282249
wikitext
text/x-wiki
维基函数:保留的 Z 编号
tl2mop2u42mnla0dnzj2vgcjang54j8
Wikifunctions:Reserved ZIDs/zh-hans
4
85473
282250
2026-06-11T12:59:17Z
七八年再来一次
10776
Created page with "维基函数:保留的 Z 编号"
282250
wikitext
text/x-wiki
<noinclude><languages/>{{Technical documentation navbox}}</noinclude>
<div lang="en" dir="ltr" class="mw-content-ltr">
This page details ZIDs that are reserved by Wikilambda, the software that runs Wikifunctions. All ZIDs with four digits or fewer are reserved. See [[Wikifunctions:Reserved ZIDs/all]] for a list of currently pre-defined objects.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Ranges ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We reserve certain spaces for certain kinds of pre-defined objects.
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code> – <code>Z99</code>: <span lang="en" dir="ltr" class="mw-content-ltr">core types.</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-types|§ Core types]] below.)</span>''
* <code>Z100</code> – <code>Z199</code>: <span lang="en" dir="ltr" class="mw-content-ltr">validators for the core types (''i.e.'' for each core type, +100 gives the validator), ''e.g.'' Z104 is the validator for Z4/Type</span>
* <code>Z200</code> – <code>Z299</code>: <span lang="en" dir="ltr" class="mw-content-ltr">built-in implementations for the validators for the core types (''i.e.'' Z204 is the built-in implementation for the validator for Z4/Type)</span>
* <code>Z300</code> – <code>Z399</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">unassigned for now</span>''
* <code>Z400</code> – <code>Z499</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for local use</span>''
* <code>Z500</code> – <code>Z599</code>: <span lang="en" dir="ltr" class="mw-content-ltr">core error types (<code>Z5xx</code> because <code>Z5</code> is error)</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-error-types|§ Core error types]] below.)</span>''
* <code>Z600</code> – <code>Z699</code>: <span lang="en" dir="ltr" class="mw-content-ltr">core programming languages (<code>Z6xx</code> because <code>Z61</code> is programming language)</span>
* <code>Z700</code> – <code>Z799</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">unassigned for now</span>''
* <code>Z800</code> – <code>Z899</code>: <span lang="en" dir="ltr" class="mw-content-ltr">definitions of core functions with built-ins (<code>Z8xx</code> because <code>Z8</code> is function)</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-functions|§ Core functions]] below.)</span>''
* <code>Z900</code> – <code>Z999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">built-ins for the core functions (they are +100 from the respective Z8xx)</span>
* <code>Z1000</code> – <code>Z2999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">natural languages (instances of Z60)</span>
* <code>Z3000</code> – <code>Z5999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for future use</span>''
* <code>Z6000</code> – <code>Z6999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">''types, functions, ''etc.'' for using content from Wikidata and other Wikimedia sources''</span>
** <code>Z6000</code> – <code>Z6099</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">types for content from Wikidata and other Wikimedia sources</span>'' ''(See [[<tvar name="1">#wikidata-types</tvar>|§ Wikidata types]] below.)''
** <code>Z6100</code> – <code>Z6199</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">validators for these types</span>''
** <code>Z6200</code> – <code>Z6299</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">built-in implementations of the validators</span>''
** <code>Z6800</code> – <code>Z6899</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">helper functions for these types that need to be built-in (e.g., fetching, equality)</span>'' ''(See [[<tvar name="1">#wikidata-functions</tvar>|§ Wikidata functions]] below.)''
** <code>Z6900</code> – <code>Z6999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">built-in implementations of the helper functions</span>''
* <code>Z7000</code> – <code>Z7999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for future use</span>''
* <code>Z8000</code> – <code>Z8999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">Testers for each pre-defined function (''e.g.'' Z801 is tested via Z8010, Z8011, Z8012, … Z8019).</span>
* <code>Z9000</code> – <code>Z9999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for future use</span>''
</div></div>
{{Anchor|core-types}}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Core types ===
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z1}} (Type), the root.</span>
* <code>Z2</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z2}} (Type): everything on the wiki is a <code>Z2</code>, that's why this has such a low ZID.</span>
* <code>Z3</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z3}} (Type): because the word <bdi lang="en" dir="ltr">''key''</bdi> has three letters in English.</span>
* <code>Z4</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z4}} (Type): because the word <bdi lang="en" dir="ltr">''type''</bdi> has four letters in English.</span>
* <code>Z5</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z5}} (Type): because the word <bdi lang="en" dir="ltr">''error''</bdi> has five letters in English.</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-error-types|§ Core error types]] below.)</span>''
* <code>Z6</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6}} (Type): because the word <bdi lang="en" dir="ltr">''string''</bdi> has six letters in English.</span>
* <code>Z7</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z7}} (Type): because function calls are the main magic of the system, and 7 is a magic number. It is also close to <code>Z8</code>.</span>
* <code>Z8</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z8}} (generic type, thus technically a function): because <bdi lang="en" dir="ltr">''function''</bdi> has eight letters in English.</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-functions|§ Core functions]] below.)</span>''
* <code>Z9</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z9}} (Type): because the word <bdi lang="en" dir="ltr">''reference''</bdi> has nine letters in English.</span>
* <code>Z10</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z11</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z11}} (Type): because it is just one language, and there's a ''one'' in the name.</span>
* <code>Z12</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z12}} (Type): because it's an extension of <code>Z11</code>.</span>
* <code>Z13</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z14</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z14}} (Type): because the word <bdi lang="en" dir="ltr">''implementation''</bdi> has fourteen letters in English.</span>
* <code>Z15</code>: <span lang="en" dir="ltr" class="mw-content-ltr">''Not yet assigned.''</span>
* <code>Z16</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z16}} (Type): no good reason, it's close to Z14, and Z61/Programming language.</span>
* <code>Z17</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z17}} (Type).</span>
* <code>Z18</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z18}} (Type).</span>
* <code>Z19</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z20</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z20}} (Type): because 20/20 is perfect vision, and tests make errors visible.</span>
* <code>Z21</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z21}} (Type).</span>
* <code>Z22</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z22}} (Type).</span>
* <code>Z23</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z23}} (Type).</span>
* <code>Z24</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z24}} (Unit).</span>
* <code>Z25</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z26</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z27</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z28</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z29</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z30</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z31</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z31}} (Type).</span>
* <code>Z32</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z32}} (Type): because it's an extension of <code>Z31</code>.</span>
* <code>Z33</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z34</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z35</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z36</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z37</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z38</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z39</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z39}} (Type): because Z3/Key Z9/Reference.</span>
* <code>Z40</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z40}} (Type): because Boole first published in (18)40.</span>
* <code>Z41</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z41}} (Boolean).</span>
* <code>Z42</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z42}} (Boolean).</span>
* <code>Z43</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z44</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z45</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z46</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z46}} (Type): because it converts a Z4/Type into code in a Z61/Programming language.</span>
* <code>Z47</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z48</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z49</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z50</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z50}} (Type): because Error is <code>Z5</code>.</span>
<!--<nowiki>
* <code>Z51</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z59</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z60</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z60}} (Type): because <code>Z6</code> is a string.</span>
* <code>Z61</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z61}} (Type): because <code>Z16</code> is code.</span>
* <code>Z64</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z64}}: because it is the inverse of <code>Z46</code>.</span>
<!--<nowiki>
* <code>Z62</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z79</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z80</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z80}} (Type): because it is an octet.</span>
<!--<nowiki>
* <code>Z81</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z69</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z84</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z85</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z86</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z86}} (Type): because it is not exactly a Z80/Byte, but more like Z6/String.</span>
<!--<nowiki>
* <code>Z87</code>: <translate>'''…''' (Type).</translate>
* <code>Z88</code>: <translate>'''…''' (Type).</translate>
</nowiki>
-->
* <code>Z89</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z89}} (Type)</span>
* <code>Z99</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z99}} (Type): because it looks a bit like a closing quotation mark in English.</span>
</div></div>
{{Anchor|wikidata-types}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Wikidata types ====
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<code>Z6001</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6001}} (Type)</span>
*<code>Z6002</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6002}} (Type)</span>
*<code>Z6003</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6003}} (Type)</span>
*<code>Z6004</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6004}} (Type)</span>
*<code>Z6005</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6005}} (Type)</span>
*<code>Z6006</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6006}} (Type)</span>
*<code>Z6007</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6007}} (Type)</span>
*<code>Z6008</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6008}} (Type)</span>
*<code>Z6010</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6010}} (Type)</span>
*<code>Z6011</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6011}} (Type)</span>
*<code>Z6020</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6020}} (Type)</span>
*<code>Z6021</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6021}} (Claim subtype)</span>
*<code>Z6022</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6022}} (Claim subtype)</span>
*<code>Z6023</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6023}} (Claim subtype)</span>
*<code>Z6030</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6030}} (Type)</span>
*<code>Z6031</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6031}} (Entity part)</span>
*<code>Z6032</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6032}} (Entity part)</span>
*<code>Z6033</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6033}} (Entity part)</span>
*<code>Z6034</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6034}} (Entity part)</span>
*<code>Z6035</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6035}} (Entity part)</span>
*<code>Z6036</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6036}} (Entity part)</span>
*<code>Z6037</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6037}} (Entity part)</span>
*<code>Z6038</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6038}} (Entity part)</span>
*<code>Z6040</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6040}} (Type)</span>
*<code>Z6041</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6041}} (Statement rank)</span>
*<code>Z6042</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6042}} (Statement rank)</span>
*<code>Z6043</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6043}} (Statement rank)</span>
*<code>Z6060</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6060}} (Type)</span>
*<code>Z6061</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6061}} (Type)</span>
*<code>Z6062</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6062}} (Type)</span>
*<code>Z6063</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6063}} (Type)</span>
*<code>Z6064</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6064}} (Type)</span>
*<code>Z6091</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6091}} (Type)</span>
*<code>Z6092</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6092}} (Type)</span>
*<code>Z6094</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6094}} (Type)</span>
*<code>Z6095</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6095}} (Type)</span>
*<code>Z6096</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6096}} (Type)</span>
</div></div>
{{Anchor|core-functions}}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Core functions ===
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z801</code> {{Z+|Z801}}: T ➝ T
* <code>Z802</code> {{Z+|Z802}}: Boolean, T, T ➝ T
* <code>Z803</code> {{Z+|Z803}}: Key reference, Any ➝ Any
*: <span lang="en" dir="ltr" class="mw-content-ltr">Z3/Key</span>
* <code>Z804</code> {{Z+|Z804}}: List(Key reference) ➝ Abt
* <code>Z805</code> {{Z+|Z805}}: Any ➝ List(Pair(Key reference, Any))
*: <span lang="en" dir="ltr" class="mw-content-ltr">Reify has five letters</span>
* <code>Z808</code> {{Z+|Z808}}: List(Pair(Key reference, Any)) ➝ Any
*: <span lang="en" dir="ltr" class="mw-content-ltr">Abstract has eight letters.</span>
* <code>Z810</code> {{Z+|Z810}}: T, List(T) ➝ List(T)
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z10 is list).</span>
* <code>Z811</code> {{Z+|Z811}}: List(T) ➝ T
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z10 was going to be list and we get the first)</span>
* <code>Z812</code> {{Z+|Z812}}: List(T) ➝ List(T)
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z10 was going to be list and we get the second, the rest)</span>
* <code>Z813</code> {{Z+|Z813}}: List(T) ➝ Boolean
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z13 was planned to be empty list).</span>
* <code>Z820</code> {{Z+|Z820}}: String, Any ➝ Any
* <code>Z821</code> {{Z+|Z821}}: Pair(T1, T2) ➝ T1
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z22 is pair).</span>
* <code>Z822</code> {{Z+|Z822}}: Pair(T1, T2) ➝ T2
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z22 is pair).</span>
* <code>Z844</code> {{Z+|Z844}}: Boolean, Boolean ➝ Boolean
* <code>Z850</code> {{Z+|Z850}}: Object, Error type, Object ➝ Object
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because it deals with Z5/Errors)</span>
* <code>Z851</code> {{Z+|Z851}}: Error type, List(T) ➝ Unit
* <code>Z852</code> {{Z+|Z852}}: Error, Error type ➝ Boolean
* <code>Z853</code> {{Z+|Z853}}: Object ➝ Pair(Error, Object)
* <code>Z854</code> {{Z+|Z854}}: Object ➝ String
* <code>Z860</code> {{Z+|Z860}}: String ➝ Language
* <code>Z866</code> {{Z+|Z866}}: String, String ➝ Boolean
* <code>Z868</code> <span lang="en" dir="ltr" class="mw-content-ltr">Replaced by {{Z+|Z22717}}: String ➝ List(Character)</span>
*: <span lang="en" dir="ltr" class="mw-content-ltr">Because Z6/String and Z86/Character.</span>
* <code>Z872</code> {{Z+|Z872}}: Function, Typed list (Object) ➝ Object
* <code>Z873</code> {{Z+|Z873}} Function, List ➝ List
* <code>Z876</code> {{Z+|Z876}}: Function, List, Object ➝ Object
* <code>Z877</code> {{Z+|Z877}}: HTML fragment -> HTML fragment
* <code>Z881</code> {{Z+|Z881}}: Type ➝ Type
* <code>Z882</code> {{Z+|Z882}}: Type, Type ➝ Type
* <code>Z883</code> {{Z+|Z883}}: T ➝ T
* <code>Z884</code> {{Z+|Z884}}: Type, List(Reference), String ➝ Type
* <code>Z885</code> {{Z+|Z885}}: Error type ➝ Type
* <code>Z886</code> <span lang="en" dir="ltr" class="mw-content-ltr">Replaced by {{Z+|Z22693}}: List*(Character) ➝ String</span>
*: <span lang="en" dir="ltr" class="mw-content-ltr">because Z86/Character and Z6/String.</span>
* <code>Z888</code> <span lang="en" dir="ltr" class="mw-content-ltr">Replaced by {{Z+|Z22683}}: Character, Character ➝ Boolean</span>
* <code>Z899</code> {{Z+|Z899}}: Quote ➝ Any
*: <span lang="en" dir="ltr" class="mw-content-ltr">because Z99/Quote.</span>
</div></div>
{{Anchor|wikidata-functions}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Wikidata functions ====
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z6801</code> to <code>Z6808</code> are the 'same object' functions corresponding to <code>Z6001</code> to <code>Z6008</code>.</span>
*<code>Z6820</code> {{Z+|Z6820}}: List(Object) ➝ Map(String, Object)
*<code>Z6821</code> {{Z+|Z6821}}: Item reference ➝ Item
*<code>Z6822</code> {{Z+|Z6822}}: Property reference ➝ Property
*<code>Z6824</code> {{Z+|Z6824}}: Lexeme form reference ➝ Lexeme form
*<code>Z6825</code> {{Z+|Z6825}}: Lexeme reference ➝ Lexeme
*<code>Z6826</code> {{Z+|Z6826}}: Lexeme sense reference ➝ Lexeme sense
*<code>Z6830</code> {{Z+|Z6830}}: Item reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6831</code> {{Z+|Z6831}}: Lexeme sense reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6884</code> {{Z+|Z6884}}: Type, List(Object), String ➝ Type
*<code>Z6894</code> {{Z+|Z6894}}
*<code>Z6895</code> {{Z+|Z6895}}: Object ➝ Object
*<code>Z6896</code> {{Z+|Z6896}}: List(String) ➝ Object
</div></div>
{{Anchor|core-error-types}}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Core error types ===
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z501}} (error message, input): syntax error</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z502}} (subtype, value): not wellformed, points to Z52x or Z53x</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z503}} (function name): not implemented yet</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z504}} (zid): Zid not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z505}} (expected, actual, args): number of arguments mismatch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z506}} (expected, actual, arg): argument type mismatches</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z507}} (function call): error in evaluation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z508}} (object): competing keys</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z509}} (errors): List of errors</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z510}} (none): nil</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z511}} (key reference, object): key not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z512}} (object): Z9 error</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z513}} (resolved object): resolved object without Z2K2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z514}} (implementation): Builtin does not exist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z515}} (implementation): Builtin ID is erroneous</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z516}} (key, bad value): Argument value error</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z517}} (expected type, actual type, returned value, propagated error): Return type mismatch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z518}} (expected type, object, propagated error): Object type mismatch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z519}} (object): Undefined list type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z520}} (object): Wrong list type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z521}} (offending value): ZObjects must not be number or boolean or null</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z522}} (offending index in array, propagated error): Array element not well formed</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z523}} (object): Missing Z1K1</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z524}} (value of Z1K1): Z1K1 must not be a string or array</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z525}} (key): Invalid key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z526}} (key, propagated error): not wellformed value</span>]
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z529}} (host name)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z530}} (function call, propagated error)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z531}} (whole object): Z6 must have 2 keys</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z532}} (whole object): Z6 without a Z6K1</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z533}} (value of Z6K1): Z6K1 must be a string</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z534}} (whole object): Z9 must have 2 keys</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z535}} (whole object): Z9 without a Z9K1</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z536}} (value of Z9K1): Z9K1 must be a string in JSON</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z537}} (value of Z9K1): Z9K1 must look like a reference</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z538}} (page title): wrong namespace</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z539}} (page title): wrong content type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z540}} (language code): invalid language code</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z541}} (language code): language code not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z542}} (expected type, actual object): expected type, actual object</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z543}} (type name): type not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z544}} (type zid, type name, existing type name): conflicting type names</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z545}} (type zid, type name, existing type zid): conflicting type Zids</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z546}} (type zid, type name): builtin type not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z547}} (input): invalid format</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z548}} (error message, input): invalid JSON</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z549}} (reference value): invalid ZReference</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z550}} (reference value): unknown ZReference</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z551}} (key, expected type, actual type): schema type mismatch</span>
* {{Z|Z552}} <span lang="en" dir="ltr" class="mw-content-ltr">(index, expected type, actual type): array element type mismatch</span>
* {{Z|Z553}} <span lang="en" dir="ltr" class="mw-content-ltr">(zobject): disallowed root type</span>
* {{Z|Z554}} <span lang="en" dir="ltr" class="mw-content-ltr">(clashing ZID, language): label clashes with another ZObject's label</span>
* {{Z|Z555}} <span lang="en" dir="ltr" class="mw-content-ltr">(ZID, title): mis-matched ZID and page title</span>
* {{Z|Z556}} <span lang="en" dir="ltr" class="mw-content-ltr">(title): invalid page title</span>
* {{Z|Z557}} <span lang="en" dir="ltr" class="mw-content-ltr">(error message): user does not have permission</span>
* {{Z|Z558}} <span lang="en" dir="ltr" class="mw-content-ltr">(programming language): invalid programming language</span>
* {{Z|Z559}} <span lang="en" dir="ltr" class="mw-content-ltr">(none): user not permitted to evaluate function</span>
* {{Z|Z560}} <span lang="en" dir="ltr" class="mw-content-ltr">(evaluation result): invalid evaluation result</span>
* {{Z|Z561}} <span lang="en" dir="ltr" class="mw-content-ltr">(propagated error): invalid evaluation request</span>
* {{Z|Z562}} <span lang="en" dir="ltr" class="mw-content-ltr">(missing property): incomplete evaluation request</span>
* {{Z|Z563}} <span lang="en" dir="ltr" class="mw-content-ltr">(call): call by non-reentrant executor</span>
* {{Z|Z564}} <span lang="en" dir="ltr" class="mw-content-ltr">(contents): invalid executor response</span>
* {{Z|Z565}} <span lang="en" dir="ltr" class="mw-content-ltr">(missing property): Incomplete executor request</span>
* {{Z|Z570}} <span lang="en" dir="ltr" class="mw-content-ltr">(orchestrator rate limit): reached rate limit in orchestrator</span>
* {{Z|Z571}} <span lang="en" dir="ltr" class="mw-content-ltr">(evaluator rate limit): reached rate limit in evaluator</span>
* {{Z|Z572}} <span lang="en" dir="ltr" class="mw-content-ltr">(recursion limit, function name): reached recursion limit in orchestrator</span>
* {{Z|Z573}} <span lang="en" dir="ltr" class="mw-content-ltr">(recursion limit, function name): reached recursion limit in evaluator</span>
* {{Z|Z574}} <span lang="en" dir="ltr" class="mw-content-ltr">(time limit): reached time limit in orchestrator</span>
* {{Z|Z575}} <span lang="en" dir="ltr" class="mw-content-ltr">(time limit): reached time limit in evaluator</span>
* {{Z|Z576}} <span lang="en" dir="ltr" class="mw-content-ltr">(time limit)</span>
* {{Z|Z580}} <span lang="en" dir="ltr" class="mw-content-ltr">(duplicate language)</span>
</div></div>
<span id="See_also"></span>
== 参阅 ==
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:m:Special:MyLanguage/Abstract Wikipedia/Notes|Overview of notes]]</span>
<noinclude>
[[Category:Technical documentation{{#translation:}}|Reserved ZIDs]]
</noinclude>
r4r90adqp7orh54272mkiwzocacp5gd
282252
282250
2026-06-11T13:02:32Z
七八年再来一次
10776
Created page with "本页面详细列出了由 Wikilambda,运行维基函数的软件保留的 Z 编号。所有四位数及以下的 Z 编号均是保留的。当前预定义对象的表参见[[Wikifunctions:Reserved ZIDs/all]]。"
282252
wikitext
text/x-wiki
<noinclude><languages/>{{Technical documentation navbox}}</noinclude>
本页面详细列出了由 Wikilambda,运行维基函数的软件保留的 Z 编号。所有四位数及以下的 Z 编号均是保留的。当前预定义对象的表参见[[Wikifunctions:Reserved ZIDs/all]]。
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Ranges ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We reserve certain spaces for certain kinds of pre-defined objects.
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code> – <code>Z99</code>: <span lang="en" dir="ltr" class="mw-content-ltr">core types.</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-types|§ Core types]] below.)</span>''
* <code>Z100</code> – <code>Z199</code>: <span lang="en" dir="ltr" class="mw-content-ltr">validators for the core types (''i.e.'' for each core type, +100 gives the validator), ''e.g.'' Z104 is the validator for Z4/Type</span>
* <code>Z200</code> – <code>Z299</code>: <span lang="en" dir="ltr" class="mw-content-ltr">built-in implementations for the validators for the core types (''i.e.'' Z204 is the built-in implementation for the validator for Z4/Type)</span>
* <code>Z300</code> – <code>Z399</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">unassigned for now</span>''
* <code>Z400</code> – <code>Z499</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for local use</span>''
* <code>Z500</code> – <code>Z599</code>: <span lang="en" dir="ltr" class="mw-content-ltr">core error types (<code>Z5xx</code> because <code>Z5</code> is error)</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-error-types|§ Core error types]] below.)</span>''
* <code>Z600</code> – <code>Z699</code>: <span lang="en" dir="ltr" class="mw-content-ltr">core programming languages (<code>Z6xx</code> because <code>Z61</code> is programming language)</span>
* <code>Z700</code> – <code>Z799</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">unassigned for now</span>''
* <code>Z800</code> – <code>Z899</code>: <span lang="en" dir="ltr" class="mw-content-ltr">definitions of core functions with built-ins (<code>Z8xx</code> because <code>Z8</code> is function)</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-functions|§ Core functions]] below.)</span>''
* <code>Z900</code> – <code>Z999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">built-ins for the core functions (they are +100 from the respective Z8xx)</span>
* <code>Z1000</code> – <code>Z2999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">natural languages (instances of Z60)</span>
* <code>Z3000</code> – <code>Z5999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for future use</span>''
* <code>Z6000</code> – <code>Z6999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">''types, functions, ''etc.'' for using content from Wikidata and other Wikimedia sources''</span>
** <code>Z6000</code> – <code>Z6099</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">types for content from Wikidata and other Wikimedia sources</span>'' ''(See [[<tvar name="1">#wikidata-types</tvar>|§ Wikidata types]] below.)''
** <code>Z6100</code> – <code>Z6199</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">validators for these types</span>''
** <code>Z6200</code> – <code>Z6299</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">built-in implementations of the validators</span>''
** <code>Z6800</code> – <code>Z6899</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">helper functions for these types that need to be built-in (e.g., fetching, equality)</span>'' ''(See [[<tvar name="1">#wikidata-functions</tvar>|§ Wikidata functions]] below.)''
** <code>Z6900</code> – <code>Z6999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">built-in implementations of the helper functions</span>''
* <code>Z7000</code> – <code>Z7999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for future use</span>''
* <code>Z8000</code> – <code>Z8999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">Testers for each pre-defined function (''e.g.'' Z801 is tested via Z8010, Z8011, Z8012, … Z8019).</span>
* <code>Z9000</code> – <code>Z9999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for future use</span>''
</div></div>
{{Anchor|core-types}}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Core types ===
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z1}} (Type), the root.</span>
* <code>Z2</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z2}} (Type): everything on the wiki is a <code>Z2</code>, that's why this has such a low ZID.</span>
* <code>Z3</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z3}} (Type): because the word <bdi lang="en" dir="ltr">''key''</bdi> has three letters in English.</span>
* <code>Z4</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z4}} (Type): because the word <bdi lang="en" dir="ltr">''type''</bdi> has four letters in English.</span>
* <code>Z5</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z5}} (Type): because the word <bdi lang="en" dir="ltr">''error''</bdi> has five letters in English.</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-error-types|§ Core error types]] below.)</span>''
* <code>Z6</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6}} (Type): because the word <bdi lang="en" dir="ltr">''string''</bdi> has six letters in English.</span>
* <code>Z7</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z7}} (Type): because function calls are the main magic of the system, and 7 is a magic number. It is also close to <code>Z8</code>.</span>
* <code>Z8</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z8}} (generic type, thus technically a function): because <bdi lang="en" dir="ltr">''function''</bdi> has eight letters in English.</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-functions|§ Core functions]] below.)</span>''
* <code>Z9</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z9}} (Type): because the word <bdi lang="en" dir="ltr">''reference''</bdi> has nine letters in English.</span>
* <code>Z10</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z11</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z11}} (Type): because it is just one language, and there's a ''one'' in the name.</span>
* <code>Z12</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z12}} (Type): because it's an extension of <code>Z11</code>.</span>
* <code>Z13</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z14</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z14}} (Type): because the word <bdi lang="en" dir="ltr">''implementation''</bdi> has fourteen letters in English.</span>
* <code>Z15</code>: <span lang="en" dir="ltr" class="mw-content-ltr">''Not yet assigned.''</span>
* <code>Z16</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z16}} (Type): no good reason, it's close to Z14, and Z61/Programming language.</span>
* <code>Z17</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z17}} (Type).</span>
* <code>Z18</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z18}} (Type).</span>
* <code>Z19</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z20</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z20}} (Type): because 20/20 is perfect vision, and tests make errors visible.</span>
* <code>Z21</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z21}} (Type).</span>
* <code>Z22</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z22}} (Type).</span>
* <code>Z23</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z23}} (Type).</span>
* <code>Z24</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z24}} (Unit).</span>
* <code>Z25</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z26</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z27</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z28</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z29</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z30</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z31</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z31}} (Type).</span>
* <code>Z32</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z32}} (Type): because it's an extension of <code>Z31</code>.</span>
* <code>Z33</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z34</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z35</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z36</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z37</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z38</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z39</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z39}} (Type): because Z3/Key Z9/Reference.</span>
* <code>Z40</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z40}} (Type): because Boole first published in (18)40.</span>
* <code>Z41</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z41}} (Boolean).</span>
* <code>Z42</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z42}} (Boolean).</span>
* <code>Z43</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z44</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z45</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z46</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z46}} (Type): because it converts a Z4/Type into code in a Z61/Programming language.</span>
* <code>Z47</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z48</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z49</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z50</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z50}} (Type): because Error is <code>Z5</code>.</span>
<!--<nowiki>
* <code>Z51</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z59</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z60</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z60}} (Type): because <code>Z6</code> is a string.</span>
* <code>Z61</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z61}} (Type): because <code>Z16</code> is code.</span>
* <code>Z64</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z64}}: because it is the inverse of <code>Z46</code>.</span>
<!--<nowiki>
* <code>Z62</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z79</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z80</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z80}} (Type): because it is an octet.</span>
<!--<nowiki>
* <code>Z81</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z69</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z84</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z85</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z86</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z86}} (Type): because it is not exactly a Z80/Byte, but more like Z6/String.</span>
<!--<nowiki>
* <code>Z87</code>: <translate>'''…''' (Type).</translate>
* <code>Z88</code>: <translate>'''…''' (Type).</translate>
</nowiki>
-->
* <code>Z89</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z89}} (Type)</span>
* <code>Z99</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z99}} (Type): because it looks a bit like a closing quotation mark in English.</span>
</div></div>
{{Anchor|wikidata-types}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Wikidata types ====
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<code>Z6001</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6001}} (Type)</span>
*<code>Z6002</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6002}} (Type)</span>
*<code>Z6003</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6003}} (Type)</span>
*<code>Z6004</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6004}} (Type)</span>
*<code>Z6005</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6005}} (Type)</span>
*<code>Z6006</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6006}} (Type)</span>
*<code>Z6007</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6007}} (Type)</span>
*<code>Z6008</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6008}} (Type)</span>
*<code>Z6010</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6010}} (Type)</span>
*<code>Z6011</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6011}} (Type)</span>
*<code>Z6020</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6020}} (Type)</span>
*<code>Z6021</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6021}} (Claim subtype)</span>
*<code>Z6022</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6022}} (Claim subtype)</span>
*<code>Z6023</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6023}} (Claim subtype)</span>
*<code>Z6030</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6030}} (Type)</span>
*<code>Z6031</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6031}} (Entity part)</span>
*<code>Z6032</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6032}} (Entity part)</span>
*<code>Z6033</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6033}} (Entity part)</span>
*<code>Z6034</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6034}} (Entity part)</span>
*<code>Z6035</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6035}} (Entity part)</span>
*<code>Z6036</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6036}} (Entity part)</span>
*<code>Z6037</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6037}} (Entity part)</span>
*<code>Z6038</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6038}} (Entity part)</span>
*<code>Z6040</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6040}} (Type)</span>
*<code>Z6041</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6041}} (Statement rank)</span>
*<code>Z6042</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6042}} (Statement rank)</span>
*<code>Z6043</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6043}} (Statement rank)</span>
*<code>Z6060</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6060}} (Type)</span>
*<code>Z6061</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6061}} (Type)</span>
*<code>Z6062</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6062}} (Type)</span>
*<code>Z6063</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6063}} (Type)</span>
*<code>Z6064</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6064}} (Type)</span>
*<code>Z6091</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6091}} (Type)</span>
*<code>Z6092</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6092}} (Type)</span>
*<code>Z6094</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6094}} (Type)</span>
*<code>Z6095</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6095}} (Type)</span>
*<code>Z6096</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6096}} (Type)</span>
</div></div>
{{Anchor|core-functions}}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Core functions ===
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z801</code> {{Z+|Z801}}: T ➝ T
* <code>Z802</code> {{Z+|Z802}}: Boolean, T, T ➝ T
* <code>Z803</code> {{Z+|Z803}}: Key reference, Any ➝ Any
*: <span lang="en" dir="ltr" class="mw-content-ltr">Z3/Key</span>
* <code>Z804</code> {{Z+|Z804}}: List(Key reference) ➝ Abt
* <code>Z805</code> {{Z+|Z805}}: Any ➝ List(Pair(Key reference, Any))
*: <span lang="en" dir="ltr" class="mw-content-ltr">Reify has five letters</span>
* <code>Z808</code> {{Z+|Z808}}: List(Pair(Key reference, Any)) ➝ Any
*: <span lang="en" dir="ltr" class="mw-content-ltr">Abstract has eight letters.</span>
* <code>Z810</code> {{Z+|Z810}}: T, List(T) ➝ List(T)
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z10 is list).</span>
* <code>Z811</code> {{Z+|Z811}}: List(T) ➝ T
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z10 was going to be list and we get the first)</span>
* <code>Z812</code> {{Z+|Z812}}: List(T) ➝ List(T)
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z10 was going to be list and we get the second, the rest)</span>
* <code>Z813</code> {{Z+|Z813}}: List(T) ➝ Boolean
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z13 was planned to be empty list).</span>
* <code>Z820</code> {{Z+|Z820}}: String, Any ➝ Any
* <code>Z821</code> {{Z+|Z821}}: Pair(T1, T2) ➝ T1
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z22 is pair).</span>
* <code>Z822</code> {{Z+|Z822}}: Pair(T1, T2) ➝ T2
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z22 is pair).</span>
* <code>Z844</code> {{Z+|Z844}}: Boolean, Boolean ➝ Boolean
* <code>Z850</code> {{Z+|Z850}}: Object, Error type, Object ➝ Object
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because it deals with Z5/Errors)</span>
* <code>Z851</code> {{Z+|Z851}}: Error type, List(T) ➝ Unit
* <code>Z852</code> {{Z+|Z852}}: Error, Error type ➝ Boolean
* <code>Z853</code> {{Z+|Z853}}: Object ➝ Pair(Error, Object)
* <code>Z854</code> {{Z+|Z854}}: Object ➝ String
* <code>Z860</code> {{Z+|Z860}}: String ➝ Language
* <code>Z866</code> {{Z+|Z866}}: String, String ➝ Boolean
* <code>Z868</code> <span lang="en" dir="ltr" class="mw-content-ltr">Replaced by {{Z+|Z22717}}: String ➝ List(Character)</span>
*: <span lang="en" dir="ltr" class="mw-content-ltr">Because Z6/String and Z86/Character.</span>
* <code>Z872</code> {{Z+|Z872}}: Function, Typed list (Object) ➝ Object
* <code>Z873</code> {{Z+|Z873}} Function, List ➝ List
* <code>Z876</code> {{Z+|Z876}}: Function, List, Object ➝ Object
* <code>Z877</code> {{Z+|Z877}}: HTML fragment -> HTML fragment
* <code>Z881</code> {{Z+|Z881}}: Type ➝ Type
* <code>Z882</code> {{Z+|Z882}}: Type, Type ➝ Type
* <code>Z883</code> {{Z+|Z883}}: T ➝ T
* <code>Z884</code> {{Z+|Z884}}: Type, List(Reference), String ➝ Type
* <code>Z885</code> {{Z+|Z885}}: Error type ➝ Type
* <code>Z886</code> <span lang="en" dir="ltr" class="mw-content-ltr">Replaced by {{Z+|Z22693}}: List*(Character) ➝ String</span>
*: <span lang="en" dir="ltr" class="mw-content-ltr">because Z86/Character and Z6/String.</span>
* <code>Z888</code> <span lang="en" dir="ltr" class="mw-content-ltr">Replaced by {{Z+|Z22683}}: Character, Character ➝ Boolean</span>
* <code>Z899</code> {{Z+|Z899}}: Quote ➝ Any
*: <span lang="en" dir="ltr" class="mw-content-ltr">because Z99/Quote.</span>
</div></div>
{{Anchor|wikidata-functions}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Wikidata functions ====
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z6801</code> to <code>Z6808</code> are the 'same object' functions corresponding to <code>Z6001</code> to <code>Z6008</code>.</span>
*<code>Z6820</code> {{Z+|Z6820}}: List(Object) ➝ Map(String, Object)
*<code>Z6821</code> {{Z+|Z6821}}: Item reference ➝ Item
*<code>Z6822</code> {{Z+|Z6822}}: Property reference ➝ Property
*<code>Z6824</code> {{Z+|Z6824}}: Lexeme form reference ➝ Lexeme form
*<code>Z6825</code> {{Z+|Z6825}}: Lexeme reference ➝ Lexeme
*<code>Z6826</code> {{Z+|Z6826}}: Lexeme sense reference ➝ Lexeme sense
*<code>Z6830</code> {{Z+|Z6830}}: Item reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6831</code> {{Z+|Z6831}}: Lexeme sense reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6884</code> {{Z+|Z6884}}: Type, List(Object), String ➝ Type
*<code>Z6894</code> {{Z+|Z6894}}
*<code>Z6895</code> {{Z+|Z6895}}: Object ➝ Object
*<code>Z6896</code> {{Z+|Z6896}}: List(String) ➝ Object
</div></div>
{{Anchor|core-error-types}}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Core error types ===
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z501}} (error message, input): syntax error</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z502}} (subtype, value): not wellformed, points to Z52x or Z53x</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z503}} (function name): not implemented yet</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z504}} (zid): Zid not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z505}} (expected, actual, args): number of arguments mismatch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z506}} (expected, actual, arg): argument type mismatches</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z507}} (function call): error in evaluation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z508}} (object): competing keys</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z509}} (errors): List of errors</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z510}} (none): nil</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z511}} (key reference, object): key not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z512}} (object): Z9 error</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z513}} (resolved object): resolved object without Z2K2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z514}} (implementation): Builtin does not exist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z515}} (implementation): Builtin ID is erroneous</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z516}} (key, bad value): Argument value error</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z517}} (expected type, actual type, returned value, propagated error): Return type mismatch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z518}} (expected type, object, propagated error): Object type mismatch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z519}} (object): Undefined list type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z520}} (object): Wrong list type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z521}} (offending value): ZObjects must not be number or boolean or null</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z522}} (offending index in array, propagated error): Array element not well formed</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z523}} (object): Missing Z1K1</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z524}} (value of Z1K1): Z1K1 must not be a string or array</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z525}} (key): Invalid key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z526}} (key, propagated error): not wellformed value</span>]
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z529}} (host name)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z530}} (function call, propagated error)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z531}} (whole object): Z6 must have 2 keys</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z532}} (whole object): Z6 without a Z6K1</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z533}} (value of Z6K1): Z6K1 must be a string</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z534}} (whole object): Z9 must have 2 keys</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z535}} (whole object): Z9 without a Z9K1</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z536}} (value of Z9K1): Z9K1 must be a string in JSON</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z537}} (value of Z9K1): Z9K1 must look like a reference</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z538}} (page title): wrong namespace</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z539}} (page title): wrong content type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z540}} (language code): invalid language code</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z541}} (language code): language code not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z542}} (expected type, actual object): expected type, actual object</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z543}} (type name): type not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z544}} (type zid, type name, existing type name): conflicting type names</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z545}} (type zid, type name, existing type zid): conflicting type Zids</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z546}} (type zid, type name): builtin type not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z547}} (input): invalid format</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z548}} (error message, input): invalid JSON</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z549}} (reference value): invalid ZReference</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z550}} (reference value): unknown ZReference</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z551}} (key, expected type, actual type): schema type mismatch</span>
* {{Z|Z552}} <span lang="en" dir="ltr" class="mw-content-ltr">(index, expected type, actual type): array element type mismatch</span>
* {{Z|Z553}} <span lang="en" dir="ltr" class="mw-content-ltr">(zobject): disallowed root type</span>
* {{Z|Z554}} <span lang="en" dir="ltr" class="mw-content-ltr">(clashing ZID, language): label clashes with another ZObject's label</span>
* {{Z|Z555}} <span lang="en" dir="ltr" class="mw-content-ltr">(ZID, title): mis-matched ZID and page title</span>
* {{Z|Z556}} <span lang="en" dir="ltr" class="mw-content-ltr">(title): invalid page title</span>
* {{Z|Z557}} <span lang="en" dir="ltr" class="mw-content-ltr">(error message): user does not have permission</span>
* {{Z|Z558}} <span lang="en" dir="ltr" class="mw-content-ltr">(programming language): invalid programming language</span>
* {{Z|Z559}} <span lang="en" dir="ltr" class="mw-content-ltr">(none): user not permitted to evaluate function</span>
* {{Z|Z560}} <span lang="en" dir="ltr" class="mw-content-ltr">(evaluation result): invalid evaluation result</span>
* {{Z|Z561}} <span lang="en" dir="ltr" class="mw-content-ltr">(propagated error): invalid evaluation request</span>
* {{Z|Z562}} <span lang="en" dir="ltr" class="mw-content-ltr">(missing property): incomplete evaluation request</span>
* {{Z|Z563}} <span lang="en" dir="ltr" class="mw-content-ltr">(call): call by non-reentrant executor</span>
* {{Z|Z564}} <span lang="en" dir="ltr" class="mw-content-ltr">(contents): invalid executor response</span>
* {{Z|Z565}} <span lang="en" dir="ltr" class="mw-content-ltr">(missing property): Incomplete executor request</span>
* {{Z|Z570}} <span lang="en" dir="ltr" class="mw-content-ltr">(orchestrator rate limit): reached rate limit in orchestrator</span>
* {{Z|Z571}} <span lang="en" dir="ltr" class="mw-content-ltr">(evaluator rate limit): reached rate limit in evaluator</span>
* {{Z|Z572}} <span lang="en" dir="ltr" class="mw-content-ltr">(recursion limit, function name): reached recursion limit in orchestrator</span>
* {{Z|Z573}} <span lang="en" dir="ltr" class="mw-content-ltr">(recursion limit, function name): reached recursion limit in evaluator</span>
* {{Z|Z574}} <span lang="en" dir="ltr" class="mw-content-ltr">(time limit): reached time limit in orchestrator</span>
* {{Z|Z575}} <span lang="en" dir="ltr" class="mw-content-ltr">(time limit): reached time limit in evaluator</span>
* {{Z|Z576}} <span lang="en" dir="ltr" class="mw-content-ltr">(time limit)</span>
* {{Z|Z580}} <span lang="en" dir="ltr" class="mw-content-ltr">(duplicate language)</span>
</div></div>
<span id="See_also"></span>
== 参阅 ==
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:m:Special:MyLanguage/Abstract Wikipedia/Notes|Overview of notes]]</span>
<noinclude>
[[Category:Technical documentation{{#translation:}}|Reserved ZIDs]]
</noinclude>
fv7bk5grmkvb080ku9tst63y1fcw8hf
282254
282252
2026-06-11T13:02:48Z
七八年再来一次
10776
Created page with "=== 范围 ==="
282254
wikitext
text/x-wiki
<noinclude><languages/>{{Technical documentation navbox}}</noinclude>
本页面详细列出了由 Wikilambda,运行维基函数的软件保留的 Z 编号。所有四位数及以下的 Z 编号均是保留的。当前预定义对象的表参见[[Wikifunctions:Reserved ZIDs/all]]。
<span id="Ranges"></span>
=== 范围 ===
<div lang="en" dir="ltr" class="mw-content-ltr">
We reserve certain spaces for certain kinds of pre-defined objects.
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code> – <code>Z99</code>: <span lang="en" dir="ltr" class="mw-content-ltr">core types.</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-types|§ Core types]] below.)</span>''
* <code>Z100</code> – <code>Z199</code>: <span lang="en" dir="ltr" class="mw-content-ltr">validators for the core types (''i.e.'' for each core type, +100 gives the validator), ''e.g.'' Z104 is the validator for Z4/Type</span>
* <code>Z200</code> – <code>Z299</code>: <span lang="en" dir="ltr" class="mw-content-ltr">built-in implementations for the validators for the core types (''i.e.'' Z204 is the built-in implementation for the validator for Z4/Type)</span>
* <code>Z300</code> – <code>Z399</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">unassigned for now</span>''
* <code>Z400</code> – <code>Z499</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for local use</span>''
* <code>Z500</code> – <code>Z599</code>: <span lang="en" dir="ltr" class="mw-content-ltr">core error types (<code>Z5xx</code> because <code>Z5</code> is error)</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-error-types|§ Core error types]] below.)</span>''
* <code>Z600</code> – <code>Z699</code>: <span lang="en" dir="ltr" class="mw-content-ltr">core programming languages (<code>Z6xx</code> because <code>Z61</code> is programming language)</span>
* <code>Z700</code> – <code>Z799</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">unassigned for now</span>''
* <code>Z800</code> – <code>Z899</code>: <span lang="en" dir="ltr" class="mw-content-ltr">definitions of core functions with built-ins (<code>Z8xx</code> because <code>Z8</code> is function)</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-functions|§ Core functions]] below.)</span>''
* <code>Z900</code> – <code>Z999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">built-ins for the core functions (they are +100 from the respective Z8xx)</span>
* <code>Z1000</code> – <code>Z2999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">natural languages (instances of Z60)</span>
* <code>Z3000</code> – <code>Z5999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for future use</span>''
* <code>Z6000</code> – <code>Z6999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">''types, functions, ''etc.'' for using content from Wikidata and other Wikimedia sources''</span>
** <code>Z6000</code> – <code>Z6099</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">types for content from Wikidata and other Wikimedia sources</span>'' ''(See [[<tvar name="1">#wikidata-types</tvar>|§ Wikidata types]] below.)''
** <code>Z6100</code> – <code>Z6199</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">validators for these types</span>''
** <code>Z6200</code> – <code>Z6299</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">built-in implementations of the validators</span>''
** <code>Z6800</code> – <code>Z6899</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">helper functions for these types that need to be built-in (e.g., fetching, equality)</span>'' ''(See [[<tvar name="1">#wikidata-functions</tvar>|§ Wikidata functions]] below.)''
** <code>Z6900</code> – <code>Z6999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">built-in implementations of the helper functions</span>''
* <code>Z7000</code> – <code>Z7999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for future use</span>''
* <code>Z8000</code> – <code>Z8999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">Testers for each pre-defined function (''e.g.'' Z801 is tested via Z8010, Z8011, Z8012, … Z8019).</span>
* <code>Z9000</code> – <code>Z9999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for future use</span>''
</div></div>
{{Anchor|core-types}}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Core types ===
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z1}} (Type), the root.</span>
* <code>Z2</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z2}} (Type): everything on the wiki is a <code>Z2</code>, that's why this has such a low ZID.</span>
* <code>Z3</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z3}} (Type): because the word <bdi lang="en" dir="ltr">''key''</bdi> has three letters in English.</span>
* <code>Z4</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z4}} (Type): because the word <bdi lang="en" dir="ltr">''type''</bdi> has four letters in English.</span>
* <code>Z5</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z5}} (Type): because the word <bdi lang="en" dir="ltr">''error''</bdi> has five letters in English.</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-error-types|§ Core error types]] below.)</span>''
* <code>Z6</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6}} (Type): because the word <bdi lang="en" dir="ltr">''string''</bdi> has six letters in English.</span>
* <code>Z7</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z7}} (Type): because function calls are the main magic of the system, and 7 is a magic number. It is also close to <code>Z8</code>.</span>
* <code>Z8</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z8}} (generic type, thus technically a function): because <bdi lang="en" dir="ltr">''function''</bdi> has eight letters in English.</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-functions|§ Core functions]] below.)</span>''
* <code>Z9</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z9}} (Type): because the word <bdi lang="en" dir="ltr">''reference''</bdi> has nine letters in English.</span>
* <code>Z10</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z11</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z11}} (Type): because it is just one language, and there's a ''one'' in the name.</span>
* <code>Z12</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z12}} (Type): because it's an extension of <code>Z11</code>.</span>
* <code>Z13</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z14</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z14}} (Type): because the word <bdi lang="en" dir="ltr">''implementation''</bdi> has fourteen letters in English.</span>
* <code>Z15</code>: <span lang="en" dir="ltr" class="mw-content-ltr">''Not yet assigned.''</span>
* <code>Z16</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z16}} (Type): no good reason, it's close to Z14, and Z61/Programming language.</span>
* <code>Z17</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z17}} (Type).</span>
* <code>Z18</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z18}} (Type).</span>
* <code>Z19</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z20</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z20}} (Type): because 20/20 is perfect vision, and tests make errors visible.</span>
* <code>Z21</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z21}} (Type).</span>
* <code>Z22</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z22}} (Type).</span>
* <code>Z23</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z23}} (Type).</span>
* <code>Z24</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z24}} (Unit).</span>
* <code>Z25</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z26</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z27</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z28</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z29</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z30</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z31</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z31}} (Type).</span>
* <code>Z32</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z32}} (Type): because it's an extension of <code>Z31</code>.</span>
* <code>Z33</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z34</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z35</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z36</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z37</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z38</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z39</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z39}} (Type): because Z3/Key Z9/Reference.</span>
* <code>Z40</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z40}} (Type): because Boole first published in (18)40.</span>
* <code>Z41</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z41}} (Boolean).</span>
* <code>Z42</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z42}} (Boolean).</span>
* <code>Z43</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z44</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z45</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z46</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z46}} (Type): because it converts a Z4/Type into code in a Z61/Programming language.</span>
* <code>Z47</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z48</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z49</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z50</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z50}} (Type): because Error is <code>Z5</code>.</span>
<!--<nowiki>
* <code>Z51</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z59</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z60</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z60}} (Type): because <code>Z6</code> is a string.</span>
* <code>Z61</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z61}} (Type): because <code>Z16</code> is code.</span>
* <code>Z64</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z64}}: because it is the inverse of <code>Z46</code>.</span>
<!--<nowiki>
* <code>Z62</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z79</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z80</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z80}} (Type): because it is an octet.</span>
<!--<nowiki>
* <code>Z81</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z69</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z84</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z85</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z86</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z86}} (Type): because it is not exactly a Z80/Byte, but more like Z6/String.</span>
<!--<nowiki>
* <code>Z87</code>: <translate>'''…''' (Type).</translate>
* <code>Z88</code>: <translate>'''…''' (Type).</translate>
</nowiki>
-->
* <code>Z89</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z89}} (Type)</span>
* <code>Z99</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z99}} (Type): because it looks a bit like a closing quotation mark in English.</span>
</div></div>
{{Anchor|wikidata-types}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Wikidata types ====
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<code>Z6001</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6001}} (Type)</span>
*<code>Z6002</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6002}} (Type)</span>
*<code>Z6003</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6003}} (Type)</span>
*<code>Z6004</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6004}} (Type)</span>
*<code>Z6005</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6005}} (Type)</span>
*<code>Z6006</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6006}} (Type)</span>
*<code>Z6007</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6007}} (Type)</span>
*<code>Z6008</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6008}} (Type)</span>
*<code>Z6010</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6010}} (Type)</span>
*<code>Z6011</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6011}} (Type)</span>
*<code>Z6020</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6020}} (Type)</span>
*<code>Z6021</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6021}} (Claim subtype)</span>
*<code>Z6022</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6022}} (Claim subtype)</span>
*<code>Z6023</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6023}} (Claim subtype)</span>
*<code>Z6030</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6030}} (Type)</span>
*<code>Z6031</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6031}} (Entity part)</span>
*<code>Z6032</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6032}} (Entity part)</span>
*<code>Z6033</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6033}} (Entity part)</span>
*<code>Z6034</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6034}} (Entity part)</span>
*<code>Z6035</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6035}} (Entity part)</span>
*<code>Z6036</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6036}} (Entity part)</span>
*<code>Z6037</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6037}} (Entity part)</span>
*<code>Z6038</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6038}} (Entity part)</span>
*<code>Z6040</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6040}} (Type)</span>
*<code>Z6041</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6041}} (Statement rank)</span>
*<code>Z6042</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6042}} (Statement rank)</span>
*<code>Z6043</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6043}} (Statement rank)</span>
*<code>Z6060</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6060}} (Type)</span>
*<code>Z6061</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6061}} (Type)</span>
*<code>Z6062</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6062}} (Type)</span>
*<code>Z6063</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6063}} (Type)</span>
*<code>Z6064</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6064}} (Type)</span>
*<code>Z6091</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6091}} (Type)</span>
*<code>Z6092</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6092}} (Type)</span>
*<code>Z6094</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6094}} (Type)</span>
*<code>Z6095</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6095}} (Type)</span>
*<code>Z6096</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6096}} (Type)</span>
</div></div>
{{Anchor|core-functions}}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Core functions ===
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z801</code> {{Z+|Z801}}: T ➝ T
* <code>Z802</code> {{Z+|Z802}}: Boolean, T, T ➝ T
* <code>Z803</code> {{Z+|Z803}}: Key reference, Any ➝ Any
*: <span lang="en" dir="ltr" class="mw-content-ltr">Z3/Key</span>
* <code>Z804</code> {{Z+|Z804}}: List(Key reference) ➝ Abt
* <code>Z805</code> {{Z+|Z805}}: Any ➝ List(Pair(Key reference, Any))
*: <span lang="en" dir="ltr" class="mw-content-ltr">Reify has five letters</span>
* <code>Z808</code> {{Z+|Z808}}: List(Pair(Key reference, Any)) ➝ Any
*: <span lang="en" dir="ltr" class="mw-content-ltr">Abstract has eight letters.</span>
* <code>Z810</code> {{Z+|Z810}}: T, List(T) ➝ List(T)
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z10 is list).</span>
* <code>Z811</code> {{Z+|Z811}}: List(T) ➝ T
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z10 was going to be list and we get the first)</span>
* <code>Z812</code> {{Z+|Z812}}: List(T) ➝ List(T)
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z10 was going to be list and we get the second, the rest)</span>
* <code>Z813</code> {{Z+|Z813}}: List(T) ➝ Boolean
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z13 was planned to be empty list).</span>
* <code>Z820</code> {{Z+|Z820}}: String, Any ➝ Any
* <code>Z821</code> {{Z+|Z821}}: Pair(T1, T2) ➝ T1
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z22 is pair).</span>
* <code>Z822</code> {{Z+|Z822}}: Pair(T1, T2) ➝ T2
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z22 is pair).</span>
* <code>Z844</code> {{Z+|Z844}}: Boolean, Boolean ➝ Boolean
* <code>Z850</code> {{Z+|Z850}}: Object, Error type, Object ➝ Object
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because it deals with Z5/Errors)</span>
* <code>Z851</code> {{Z+|Z851}}: Error type, List(T) ➝ Unit
* <code>Z852</code> {{Z+|Z852}}: Error, Error type ➝ Boolean
* <code>Z853</code> {{Z+|Z853}}: Object ➝ Pair(Error, Object)
* <code>Z854</code> {{Z+|Z854}}: Object ➝ String
* <code>Z860</code> {{Z+|Z860}}: String ➝ Language
* <code>Z866</code> {{Z+|Z866}}: String, String ➝ Boolean
* <code>Z868</code> <span lang="en" dir="ltr" class="mw-content-ltr">Replaced by {{Z+|Z22717}}: String ➝ List(Character)</span>
*: <span lang="en" dir="ltr" class="mw-content-ltr">Because Z6/String and Z86/Character.</span>
* <code>Z872</code> {{Z+|Z872}}: Function, Typed list (Object) ➝ Object
* <code>Z873</code> {{Z+|Z873}} Function, List ➝ List
* <code>Z876</code> {{Z+|Z876}}: Function, List, Object ➝ Object
* <code>Z877</code> {{Z+|Z877}}: HTML fragment -> HTML fragment
* <code>Z881</code> {{Z+|Z881}}: Type ➝ Type
* <code>Z882</code> {{Z+|Z882}}: Type, Type ➝ Type
* <code>Z883</code> {{Z+|Z883}}: T ➝ T
* <code>Z884</code> {{Z+|Z884}}: Type, List(Reference), String ➝ Type
* <code>Z885</code> {{Z+|Z885}}: Error type ➝ Type
* <code>Z886</code> <span lang="en" dir="ltr" class="mw-content-ltr">Replaced by {{Z+|Z22693}}: List*(Character) ➝ String</span>
*: <span lang="en" dir="ltr" class="mw-content-ltr">because Z86/Character and Z6/String.</span>
* <code>Z888</code> <span lang="en" dir="ltr" class="mw-content-ltr">Replaced by {{Z+|Z22683}}: Character, Character ➝ Boolean</span>
* <code>Z899</code> {{Z+|Z899}}: Quote ➝ Any
*: <span lang="en" dir="ltr" class="mw-content-ltr">because Z99/Quote.</span>
</div></div>
{{Anchor|wikidata-functions}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Wikidata functions ====
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z6801</code> to <code>Z6808</code> are the 'same object' functions corresponding to <code>Z6001</code> to <code>Z6008</code>.</span>
*<code>Z6820</code> {{Z+|Z6820}}: List(Object) ➝ Map(String, Object)
*<code>Z6821</code> {{Z+|Z6821}}: Item reference ➝ Item
*<code>Z6822</code> {{Z+|Z6822}}: Property reference ➝ Property
*<code>Z6824</code> {{Z+|Z6824}}: Lexeme form reference ➝ Lexeme form
*<code>Z6825</code> {{Z+|Z6825}}: Lexeme reference ➝ Lexeme
*<code>Z6826</code> {{Z+|Z6826}}: Lexeme sense reference ➝ Lexeme sense
*<code>Z6830</code> {{Z+|Z6830}}: Item reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6831</code> {{Z+|Z6831}}: Lexeme sense reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6884</code> {{Z+|Z6884}}: Type, List(Object), String ➝ Type
*<code>Z6894</code> {{Z+|Z6894}}
*<code>Z6895</code> {{Z+|Z6895}}: Object ➝ Object
*<code>Z6896</code> {{Z+|Z6896}}: List(String) ➝ Object
</div></div>
{{Anchor|core-error-types}}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Core error types ===
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z501}} (error message, input): syntax error</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z502}} (subtype, value): not wellformed, points to Z52x or Z53x</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z503}} (function name): not implemented yet</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z504}} (zid): Zid not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z505}} (expected, actual, args): number of arguments mismatch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z506}} (expected, actual, arg): argument type mismatches</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z507}} (function call): error in evaluation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z508}} (object): competing keys</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z509}} (errors): List of errors</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z510}} (none): nil</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z511}} (key reference, object): key not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z512}} (object): Z9 error</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z513}} (resolved object): resolved object without Z2K2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z514}} (implementation): Builtin does not exist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z515}} (implementation): Builtin ID is erroneous</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z516}} (key, bad value): Argument value error</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z517}} (expected type, actual type, returned value, propagated error): Return type mismatch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z518}} (expected type, object, propagated error): Object type mismatch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z519}} (object): Undefined list type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z520}} (object): Wrong list type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z521}} (offending value): ZObjects must not be number or boolean or null</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z522}} (offending index in array, propagated error): Array element not well formed</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z523}} (object): Missing Z1K1</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z524}} (value of Z1K1): Z1K1 must not be a string or array</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z525}} (key): Invalid key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z526}} (key, propagated error): not wellformed value</span>]
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z529}} (host name)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z530}} (function call, propagated error)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z531}} (whole object): Z6 must have 2 keys</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z532}} (whole object): Z6 without a Z6K1</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z533}} (value of Z6K1): Z6K1 must be a string</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z534}} (whole object): Z9 must have 2 keys</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z535}} (whole object): Z9 without a Z9K1</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z536}} (value of Z9K1): Z9K1 must be a string in JSON</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z537}} (value of Z9K1): Z9K1 must look like a reference</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z538}} (page title): wrong namespace</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z539}} (page title): wrong content type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z540}} (language code): invalid language code</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z541}} (language code): language code not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z542}} (expected type, actual object): expected type, actual object</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z543}} (type name): type not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z544}} (type zid, type name, existing type name): conflicting type names</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z545}} (type zid, type name, existing type zid): conflicting type Zids</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z546}} (type zid, type name): builtin type not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z547}} (input): invalid format</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z548}} (error message, input): invalid JSON</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z549}} (reference value): invalid ZReference</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z550}} (reference value): unknown ZReference</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z551}} (key, expected type, actual type): schema type mismatch</span>
* {{Z|Z552}} <span lang="en" dir="ltr" class="mw-content-ltr">(index, expected type, actual type): array element type mismatch</span>
* {{Z|Z553}} <span lang="en" dir="ltr" class="mw-content-ltr">(zobject): disallowed root type</span>
* {{Z|Z554}} <span lang="en" dir="ltr" class="mw-content-ltr">(clashing ZID, language): label clashes with another ZObject's label</span>
* {{Z|Z555}} <span lang="en" dir="ltr" class="mw-content-ltr">(ZID, title): mis-matched ZID and page title</span>
* {{Z|Z556}} <span lang="en" dir="ltr" class="mw-content-ltr">(title): invalid page title</span>
* {{Z|Z557}} <span lang="en" dir="ltr" class="mw-content-ltr">(error message): user does not have permission</span>
* {{Z|Z558}} <span lang="en" dir="ltr" class="mw-content-ltr">(programming language): invalid programming language</span>
* {{Z|Z559}} <span lang="en" dir="ltr" class="mw-content-ltr">(none): user not permitted to evaluate function</span>
* {{Z|Z560}} <span lang="en" dir="ltr" class="mw-content-ltr">(evaluation result): invalid evaluation result</span>
* {{Z|Z561}} <span lang="en" dir="ltr" class="mw-content-ltr">(propagated error): invalid evaluation request</span>
* {{Z|Z562}} <span lang="en" dir="ltr" class="mw-content-ltr">(missing property): incomplete evaluation request</span>
* {{Z|Z563}} <span lang="en" dir="ltr" class="mw-content-ltr">(call): call by non-reentrant executor</span>
* {{Z|Z564}} <span lang="en" dir="ltr" class="mw-content-ltr">(contents): invalid executor response</span>
* {{Z|Z565}} <span lang="en" dir="ltr" class="mw-content-ltr">(missing property): Incomplete executor request</span>
* {{Z|Z570}} <span lang="en" dir="ltr" class="mw-content-ltr">(orchestrator rate limit): reached rate limit in orchestrator</span>
* {{Z|Z571}} <span lang="en" dir="ltr" class="mw-content-ltr">(evaluator rate limit): reached rate limit in evaluator</span>
* {{Z|Z572}} <span lang="en" dir="ltr" class="mw-content-ltr">(recursion limit, function name): reached recursion limit in orchestrator</span>
* {{Z|Z573}} <span lang="en" dir="ltr" class="mw-content-ltr">(recursion limit, function name): reached recursion limit in evaluator</span>
* {{Z|Z574}} <span lang="en" dir="ltr" class="mw-content-ltr">(time limit): reached time limit in orchestrator</span>
* {{Z|Z575}} <span lang="en" dir="ltr" class="mw-content-ltr">(time limit): reached time limit in evaluator</span>
* {{Z|Z576}} <span lang="en" dir="ltr" class="mw-content-ltr">(time limit)</span>
* {{Z|Z580}} <span lang="en" dir="ltr" class="mw-content-ltr">(duplicate language)</span>
</div></div>
<span id="See_also"></span>
== 参阅 ==
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:m:Special:MyLanguage/Abstract Wikipedia/Notes|Overview of notes]]</span>
<noinclude>
[[Category:Technical documentation{{#translation:}}|Reserved ZIDs]]
</noinclude>
d005h6gajzo6sif07ex153i12lrubuw
282256
282254
2026-06-11T13:03:26Z
七八年再来一次
10776
Created page with "我们为某些种类的预定义对象预留特定空间。"
282256
wikitext
text/x-wiki
<noinclude><languages/>{{Technical documentation navbox}}</noinclude>
本页面详细列出了由 Wikilambda,运行维基函数的软件保留的 Z 编号。所有四位数及以下的 Z 编号均是保留的。当前预定义对象的表参见[[Wikifunctions:Reserved ZIDs/all]]。
<span id="Ranges"></span>
=== 范围 ===
我们为某些种类的预定义对象预留特定空间。
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code> – <code>Z99</code>: <span lang="en" dir="ltr" class="mw-content-ltr">core types.</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-types|§ Core types]] below.)</span>''
* <code>Z100</code> – <code>Z199</code>: <span lang="en" dir="ltr" class="mw-content-ltr">validators for the core types (''i.e.'' for each core type, +100 gives the validator), ''e.g.'' Z104 is the validator for Z4/Type</span>
* <code>Z200</code> – <code>Z299</code>: <span lang="en" dir="ltr" class="mw-content-ltr">built-in implementations for the validators for the core types (''i.e.'' Z204 is the built-in implementation for the validator for Z4/Type)</span>
* <code>Z300</code> – <code>Z399</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">unassigned for now</span>''
* <code>Z400</code> – <code>Z499</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for local use</span>''
* <code>Z500</code> – <code>Z599</code>: <span lang="en" dir="ltr" class="mw-content-ltr">core error types (<code>Z5xx</code> because <code>Z5</code> is error)</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-error-types|§ Core error types]] below.)</span>''
* <code>Z600</code> – <code>Z699</code>: <span lang="en" dir="ltr" class="mw-content-ltr">core programming languages (<code>Z6xx</code> because <code>Z61</code> is programming language)</span>
* <code>Z700</code> – <code>Z799</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">unassigned for now</span>''
* <code>Z800</code> – <code>Z899</code>: <span lang="en" dir="ltr" class="mw-content-ltr">definitions of core functions with built-ins (<code>Z8xx</code> because <code>Z8</code> is function)</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-functions|§ Core functions]] below.)</span>''
* <code>Z900</code> – <code>Z999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">built-ins for the core functions (they are +100 from the respective Z8xx)</span>
* <code>Z1000</code> – <code>Z2999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">natural languages (instances of Z60)</span>
* <code>Z3000</code> – <code>Z5999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for future use</span>''
* <code>Z6000</code> – <code>Z6999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">''types, functions, ''etc.'' for using content from Wikidata and other Wikimedia sources''</span>
** <code>Z6000</code> – <code>Z6099</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">types for content from Wikidata and other Wikimedia sources</span>'' ''(See [[<tvar name="1">#wikidata-types</tvar>|§ Wikidata types]] below.)''
** <code>Z6100</code> – <code>Z6199</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">validators for these types</span>''
** <code>Z6200</code> – <code>Z6299</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">built-in implementations of the validators</span>''
** <code>Z6800</code> – <code>Z6899</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">helper functions for these types that need to be built-in (e.g., fetching, equality)</span>'' ''(See [[<tvar name="1">#wikidata-functions</tvar>|§ Wikidata functions]] below.)''
** <code>Z6900</code> – <code>Z6999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">built-in implementations of the helper functions</span>''
* <code>Z7000</code> – <code>Z7999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for future use</span>''
* <code>Z8000</code> – <code>Z8999</code>: <span lang="en" dir="ltr" class="mw-content-ltr">Testers for each pre-defined function (''e.g.'' Z801 is tested via Z8010, Z8011, Z8012, … Z8019).</span>
* <code>Z9000</code> – <code>Z9999</code>: ''<span lang="en" dir="ltr" class="mw-content-ltr">reserved for future use</span>''
</div></div>
{{Anchor|core-types}}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Core types ===
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z1</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z1}} (Type), the root.</span>
* <code>Z2</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z2}} (Type): everything on the wiki is a <code>Z2</code>, that's why this has such a low ZID.</span>
* <code>Z3</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z3}} (Type): because the word <bdi lang="en" dir="ltr">''key''</bdi> has three letters in English.</span>
* <code>Z4</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z4}} (Type): because the word <bdi lang="en" dir="ltr">''type''</bdi> has four letters in English.</span>
* <code>Z5</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z5}} (Type): because the word <bdi lang="en" dir="ltr">''error''</bdi> has five letters in English.</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-error-types|§ Core error types]] below.)</span>''
* <code>Z6</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6}} (Type): because the word <bdi lang="en" dir="ltr">''string''</bdi> has six letters in English.</span>
* <code>Z7</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z7}} (Type): because function calls are the main magic of the system, and 7 is a magic number. It is also close to <code>Z8</code>.</span>
* <code>Z8</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z8}} (generic type, thus technically a function): because <bdi lang="en" dir="ltr">''function''</bdi> has eight letters in English.</span> ''<span lang="en" dir="ltr" class="mw-content-ltr">(See [[#core-functions|§ Core functions]] below.)</span>''
* <code>Z9</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z9}} (Type): because the word <bdi lang="en" dir="ltr">''reference''</bdi> has nine letters in English.</span>
* <code>Z10</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z11</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z11}} (Type): because it is just one language, and there's a ''one'' in the name.</span>
* <code>Z12</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z12}} (Type): because it's an extension of <code>Z11</code>.</span>
* <code>Z13</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z14</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z14}} (Type): because the word <bdi lang="en" dir="ltr">''implementation''</bdi> has fourteen letters in English.</span>
* <code>Z15</code>: <span lang="en" dir="ltr" class="mw-content-ltr">''Not yet assigned.''</span>
* <code>Z16</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z16}} (Type): no good reason, it's close to Z14, and Z61/Programming language.</span>
* <code>Z17</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z17}} (Type).</span>
* <code>Z18</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z18}} (Type).</span>
* <code>Z19</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z20</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z20}} (Type): because 20/20 is perfect vision, and tests make errors visible.</span>
* <code>Z21</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z21}} (Type).</span>
* <code>Z22</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z22}} (Type).</span>
* <code>Z23</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z23}} (Type).</span>
* <code>Z24</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z24}} (Unit).</span>
* <code>Z25</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z26</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z27</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z28</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z29</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z30</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z31</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z31}} (Type).</span>
* <code>Z32</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z32}} (Type): because it's an extension of <code>Z31</code>.</span>
* <code>Z33</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z34</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z35</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z36</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z37</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z38</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z39</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z39}} (Type): because Z3/Key Z9/Reference.</span>
* <code>Z40</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z40}} (Type): because Boole first published in (18)40.</span>
* <code>Z41</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z41}} (Boolean).</span>
* <code>Z42</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z42}} (Boolean).</span>
* <code>Z43</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z44</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z45</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z46</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z46}} (Type): because it converts a Z4/Type into code in a Z61/Programming language.</span>
* <code>Z47</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z48</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z49</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z50</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z50}} (Type): because Error is <code>Z5</code>.</span>
<!--<nowiki>
* <code>Z51</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z59</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z60</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z60}} (Type): because <code>Z6</code> is a string.</span>
* <code>Z61</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z61}} (Type): because <code>Z16</code> is code.</span>
* <code>Z64</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z64}}: because it is the inverse of <code>Z46</code>.</span>
<!--<nowiki>
* <code>Z62</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z79</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z80</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z80}} (Type): because it is an octet.</span>
<!--<nowiki>
* <code>Z81</code>: <translate>'''…''' (Type).</translate>
…
* <code>Z69</code>: <translate>'''…''' (Type).</translate>
</nowiki>-->
* <code>Z84</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z85</code>: {{Tunit|151|''Not yet assigned.''}}
* <code>Z86</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z86}} (Type): because it is not exactly a Z80/Byte, but more like Z6/String.</span>
<!--<nowiki>
* <code>Z87</code>: <translate>'''…''' (Type).</translate>
* <code>Z88</code>: <translate>'''…''' (Type).</translate>
</nowiki>
-->
* <code>Z89</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z89}} (Type)</span>
* <code>Z99</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z99}} (Type): because it looks a bit like a closing quotation mark in English.</span>
</div></div>
{{Anchor|wikidata-types}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Wikidata types ====
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<code>Z6001</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6001}} (Type)</span>
*<code>Z6002</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6002}} (Type)</span>
*<code>Z6003</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6003}} (Type)</span>
*<code>Z6004</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6004}} (Type)</span>
*<code>Z6005</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6005}} (Type)</span>
*<code>Z6006</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6006}} (Type)</span>
*<code>Z6007</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6007}} (Type)</span>
*<code>Z6008</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6008}} (Type)</span>
*<code>Z6010</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6010}} (Type)</span>
*<code>Z6011</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6011}} (Type)</span>
*<code>Z6020</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6020}} (Type)</span>
*<code>Z6021</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6021}} (Claim subtype)</span>
*<code>Z6022</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6022}} (Claim subtype)</span>
*<code>Z6023</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6023}} (Claim subtype)</span>
*<code>Z6030</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6030}} (Type)</span>
*<code>Z6031</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6031}} (Entity part)</span>
*<code>Z6032</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6032}} (Entity part)</span>
*<code>Z6033</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6033}} (Entity part)</span>
*<code>Z6034</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6034}} (Entity part)</span>
*<code>Z6035</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6035}} (Entity part)</span>
*<code>Z6036</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6036}} (Entity part)</span>
*<code>Z6037</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6037}} (Entity part)</span>
*<code>Z6038</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6038}} (Entity part)</span>
*<code>Z6040</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6040}} (Type)</span>
*<code>Z6041</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6041}} (Statement rank)</span>
*<code>Z6042</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6042}} (Statement rank)</span>
*<code>Z6043</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6043}} (Statement rank)</span>
*<code>Z6060</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6060}} (Type)</span>
*<code>Z6061</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6061}} (Type)</span>
*<code>Z6062</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6062}} (Type)</span>
*<code>Z6063</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6063}} (Type)</span>
*<code>Z6064</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6064}} (Type)</span>
*<code>Z6091</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6091}} (Type)</span>
*<code>Z6092</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6092}} (Type)</span>
*<code>Z6094</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6094}} (Type)</span>
*<code>Z6095</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6095}} (Type)</span>
*<code>Z6096</code>: <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z6096}} (Type)</span>
</div></div>
{{Anchor|core-functions}}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Core functions ===
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <code>Z801</code> {{Z+|Z801}}: T ➝ T
* <code>Z802</code> {{Z+|Z802}}: Boolean, T, T ➝ T
* <code>Z803</code> {{Z+|Z803}}: Key reference, Any ➝ Any
*: <span lang="en" dir="ltr" class="mw-content-ltr">Z3/Key</span>
* <code>Z804</code> {{Z+|Z804}}: List(Key reference) ➝ Abt
* <code>Z805</code> {{Z+|Z805}}: Any ➝ List(Pair(Key reference, Any))
*: <span lang="en" dir="ltr" class="mw-content-ltr">Reify has five letters</span>
* <code>Z808</code> {{Z+|Z808}}: List(Pair(Key reference, Any)) ➝ Any
*: <span lang="en" dir="ltr" class="mw-content-ltr">Abstract has eight letters.</span>
* <code>Z810</code> {{Z+|Z810}}: T, List(T) ➝ List(T)
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z10 is list).</span>
* <code>Z811</code> {{Z+|Z811}}: List(T) ➝ T
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z10 was going to be list and we get the first)</span>
* <code>Z812</code> {{Z+|Z812}}: List(T) ➝ List(T)
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z10 was going to be list and we get the second, the rest)</span>
* <code>Z813</code> {{Z+|Z813}}: List(T) ➝ Boolean
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z13 was planned to be empty list).</span>
* <code>Z820</code> {{Z+|Z820}}: String, Any ➝ Any
* <code>Z821</code> {{Z+|Z821}}: Pair(T1, T2) ➝ T1
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z22 is pair).</span>
* <code>Z822</code> {{Z+|Z822}}: Pair(T1, T2) ➝ T2
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because Z22 is pair).</span>
* <code>Z844</code> {{Z+|Z844}}: Boolean, Boolean ➝ Boolean
* <code>Z850</code> {{Z+|Z850}}: Object, Error type, Object ➝ Object
*: <span lang="en" dir="ltr" class="mw-content-ltr">(because it deals with Z5/Errors)</span>
* <code>Z851</code> {{Z+|Z851}}: Error type, List(T) ➝ Unit
* <code>Z852</code> {{Z+|Z852}}: Error, Error type ➝ Boolean
* <code>Z853</code> {{Z+|Z853}}: Object ➝ Pair(Error, Object)
* <code>Z854</code> {{Z+|Z854}}: Object ➝ String
* <code>Z860</code> {{Z+|Z860}}: String ➝ Language
* <code>Z866</code> {{Z+|Z866}}: String, String ➝ Boolean
* <code>Z868</code> <span lang="en" dir="ltr" class="mw-content-ltr">Replaced by {{Z+|Z22717}}: String ➝ List(Character)</span>
*: <span lang="en" dir="ltr" class="mw-content-ltr">Because Z6/String and Z86/Character.</span>
* <code>Z872</code> {{Z+|Z872}}: Function, Typed list (Object) ➝ Object
* <code>Z873</code> {{Z+|Z873}} Function, List ➝ List
* <code>Z876</code> {{Z+|Z876}}: Function, List, Object ➝ Object
* <code>Z877</code> {{Z+|Z877}}: HTML fragment -> HTML fragment
* <code>Z881</code> {{Z+|Z881}}: Type ➝ Type
* <code>Z882</code> {{Z+|Z882}}: Type, Type ➝ Type
* <code>Z883</code> {{Z+|Z883}}: T ➝ T
* <code>Z884</code> {{Z+|Z884}}: Type, List(Reference), String ➝ Type
* <code>Z885</code> {{Z+|Z885}}: Error type ➝ Type
* <code>Z886</code> <span lang="en" dir="ltr" class="mw-content-ltr">Replaced by {{Z+|Z22693}}: List*(Character) ➝ String</span>
*: <span lang="en" dir="ltr" class="mw-content-ltr">because Z86/Character and Z6/String.</span>
* <code>Z888</code> <span lang="en" dir="ltr" class="mw-content-ltr">Replaced by {{Z+|Z22683}}: Character, Character ➝ Boolean</span>
* <code>Z899</code> {{Z+|Z899}}: Quote ➝ Any
*: <span lang="en" dir="ltr" class="mw-content-ltr">because Z99/Quote.</span>
</div></div>
{{Anchor|wikidata-functions}}
<div lang="en" dir="ltr" class="mw-content-ltr">
==== Wikidata functions ====
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
*<span lang="en" dir="ltr" class="mw-content-ltr"><code>Z6801</code> to <code>Z6808</code> are the 'same object' functions corresponding to <code>Z6001</code> to <code>Z6008</code>.</span>
*<code>Z6820</code> {{Z+|Z6820}}: List(Object) ➝ Map(String, Object)
*<code>Z6821</code> {{Z+|Z6821}}: Item reference ➝ Item
*<code>Z6822</code> {{Z+|Z6822}}: Property reference ➝ Property
*<code>Z6824</code> {{Z+|Z6824}}: Lexeme form reference ➝ Lexeme form
*<code>Z6825</code> {{Z+|Z6825}}: Lexeme reference ➝ Lexeme
*<code>Z6826</code> {{Z+|Z6826}}: Lexeme sense reference ➝ Lexeme sense
*<code>Z6830</code> {{Z+|Z6830}}: Item reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6831</code> {{Z+|Z6831}}: Lexeme sense reference, Property reference, Natural language ➝ List(Lexeme reference)
*<code>Z6884</code> {{Z+|Z6884}}: Type, List(Object), String ➝ Type
*<code>Z6894</code> {{Z+|Z6894}}
*<code>Z6895</code> {{Z+|Z6895}}: Object ➝ Object
*<code>Z6896</code> {{Z+|Z6896}}: List(String) ➝ Object
</div></div>
{{Anchor|core-error-types}}
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Core error types ===
</div>
<div style="margin:.3em 0; border:1px solid #AAA; padding:.3em .5em;"><div style="margin-top:-.3em">
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z501}} (error message, input): syntax error</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z502}} (subtype, value): not wellformed, points to Z52x or Z53x</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z503}} (function name): not implemented yet</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z504}} (zid): Zid not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z505}} (expected, actual, args): number of arguments mismatch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z506}} (expected, actual, arg): argument type mismatches</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z507}} (function call): error in evaluation</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z508}} (object): competing keys</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z509}} (errors): List of errors</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z510}} (none): nil</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z511}} (key reference, object): key not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z512}} (object): Z9 error</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z513}} (resolved object): resolved object without Z2K2</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z514}} (implementation): Builtin does not exist</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z515}} (implementation): Builtin ID is erroneous</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z516}} (key, bad value): Argument value error</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z517}} (expected type, actual type, returned value, propagated error): Return type mismatch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z518}} (expected type, object, propagated error): Object type mismatch</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z519}} (object): Undefined list type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z520}} (object): Wrong list type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z521}} (offending value): ZObjects must not be number or boolean or null</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z522}} (offending index in array, propagated error): Array element not well formed</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z523}} (object): Missing Z1K1</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z524}} (value of Z1K1): Z1K1 must not be a string or array</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z525}} (key): Invalid key</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z526}} (key, propagated error): not wellformed value</span>]
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z529}} (host name)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z530}} (function call, propagated error)</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z531}} (whole object): Z6 must have 2 keys</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z532}} (whole object): Z6 without a Z6K1</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z533}} (value of Z6K1): Z6K1 must be a string</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z534}} (whole object): Z9 must have 2 keys</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z535}} (whole object): Z9 without a Z9K1</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z536}} (value of Z9K1): Z9K1 must be a string in JSON</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z537}} (value of Z9K1): Z9K1 must look like a reference</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z538}} (page title): wrong namespace</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z539}} (page title): wrong content type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z540}} (language code): invalid language code</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z541}} (language code): language code not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z542}} (expected type, actual object): expected type, actual object</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z543}} (type name): type not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z544}} (type zid, type name, existing type name): conflicting type names</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z545}} (type zid, type name, existing type zid): conflicting type Zids</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z546}} (type zid, type name): builtin type not found</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z547}} (input): invalid format</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z548}} (error message, input): invalid JSON</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z549}} (reference value): invalid ZReference</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z550}} (reference value): unknown ZReference</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">{{Z|Z551}} (key, expected type, actual type): schema type mismatch</span>
* {{Z|Z552}} <span lang="en" dir="ltr" class="mw-content-ltr">(index, expected type, actual type): array element type mismatch</span>
* {{Z|Z553}} <span lang="en" dir="ltr" class="mw-content-ltr">(zobject): disallowed root type</span>
* {{Z|Z554}} <span lang="en" dir="ltr" class="mw-content-ltr">(clashing ZID, language): label clashes with another ZObject's label</span>
* {{Z|Z555}} <span lang="en" dir="ltr" class="mw-content-ltr">(ZID, title): mis-matched ZID and page title</span>
* {{Z|Z556}} <span lang="en" dir="ltr" class="mw-content-ltr">(title): invalid page title</span>
* {{Z|Z557}} <span lang="en" dir="ltr" class="mw-content-ltr">(error message): user does not have permission</span>
* {{Z|Z558}} <span lang="en" dir="ltr" class="mw-content-ltr">(programming language): invalid programming language</span>
* {{Z|Z559}} <span lang="en" dir="ltr" class="mw-content-ltr">(none): user not permitted to evaluate function</span>
* {{Z|Z560}} <span lang="en" dir="ltr" class="mw-content-ltr">(evaluation result): invalid evaluation result</span>
* {{Z|Z561}} <span lang="en" dir="ltr" class="mw-content-ltr">(propagated error): invalid evaluation request</span>
* {{Z|Z562}} <span lang="en" dir="ltr" class="mw-content-ltr">(missing property): incomplete evaluation request</span>
* {{Z|Z563}} <span lang="en" dir="ltr" class="mw-content-ltr">(call): call by non-reentrant executor</span>
* {{Z|Z564}} <span lang="en" dir="ltr" class="mw-content-ltr">(contents): invalid executor response</span>
* {{Z|Z565}} <span lang="en" dir="ltr" class="mw-content-ltr">(missing property): Incomplete executor request</span>
* {{Z|Z570}} <span lang="en" dir="ltr" class="mw-content-ltr">(orchestrator rate limit): reached rate limit in orchestrator</span>
* {{Z|Z571}} <span lang="en" dir="ltr" class="mw-content-ltr">(evaluator rate limit): reached rate limit in evaluator</span>
* {{Z|Z572}} <span lang="en" dir="ltr" class="mw-content-ltr">(recursion limit, function name): reached recursion limit in orchestrator</span>
* {{Z|Z573}} <span lang="en" dir="ltr" class="mw-content-ltr">(recursion limit, function name): reached recursion limit in evaluator</span>
* {{Z|Z574}} <span lang="en" dir="ltr" class="mw-content-ltr">(time limit): reached time limit in orchestrator</span>
* {{Z|Z575}} <span lang="en" dir="ltr" class="mw-content-ltr">(time limit): reached time limit in evaluator</span>
* {{Z|Z576}} <span lang="en" dir="ltr" class="mw-content-ltr">(time limit)</span>
* {{Z|Z580}} <span lang="en" dir="ltr" class="mw-content-ltr">(duplicate language)</span>
</div></div>
<span id="See_also"></span>
== 参阅 ==
* <span lang="en" dir="ltr" class="mw-content-ltr">[[:m:Special:MyLanguage/Abstract Wikipedia/Notes|Overview of notes]]</span>
<noinclude>
[[Category:Technical documentation{{#translation:}}|Reserved ZIDs]]
</noinclude>
88t3ghnnnsz46u9u7rphockvlyw09cm
Translations:Wikifunctions:Reserved ZIDs/214/zh-hans
1198
85474
282251
2026-06-11T13:02:28Z
七八年再来一次
10776
Created page with "本页面详细列出了由 Wikilambda,运行维基函数的软件保留的 Z 编号。所有四位数及以下的 Z 编号均是保留的。当前预定义对象的表参见[[Wikifunctions:Reserved ZIDs/all]]。"
282251
wikitext
text/x-wiki
本页面详细列出了由 Wikilambda,运行维基函数的软件保留的 Z 编号。所有四位数及以下的 Z 编号均是保留的。当前预定义对象的表参见[[Wikifunctions:Reserved ZIDs/all]]。
fna1mmx4eulbe3cvrg06w6kujv5seia
Translations:Wikifunctions:Reserved ZIDs/62/zh-hans
1198
85475
282253
2026-06-11T13:02:44Z
七八年再来一次
10776
Created page with "=== 范围 ==="
282253
wikitext
text/x-wiki
=== 范围 ===
64vdct1ot6dhf7gezdcfx5ohz6ppsyb
Translations:Wikifunctions:Reserved ZIDs/10/zh-hans
1198
85476
282255
2026-06-11T13:03:22Z
七八年再来一次
10776
Created page with "我们为某些种类的预定义对象预留特定空间。"
282255
wikitext
text/x-wiki
我们为某些种类的预定义对象预留特定空间。
gx7r650gqier45rftxvwyu9w7jm8rjc
Translations:Wikifunctions:Support for Wikidata content/Page display title/zh-hans
1198
85477
282257
2026-06-11T13:04:46Z
七八年再来一次
10776
Created page with "维基函数:对维基数据内容的支持"
282257
wikitext
text/x-wiki
维基函数:对维基数据内容的支持
dd2t3yh9p73kfo7lg6xf0exedv3daxl
Wikifunctions:Support for Wikidata content/zh-hans
4
85478
282258
2026-06-11T13:04:54Z
七八年再来一次
10776
Created page with "维基函数:对维基数据内容的支持"
282258
wikitext
text/x-wiki
<languages/>
{{AW Content}}{{Technical documentation navbox}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions provides support for retrieving and using Wikidata content, including encyclopedic content contained primarily in ''Items'' and lexicographic content contained in ''Lexemes, Lexeme forms'', and ''Lexeme senses''.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Since instances of these four content types can contain ''Statements'', Wikifunctions also includes support for ''Statements'' and their components, including ''Properties'', ''Statement ranks'', ''Qualifiers'', and (coming soon) ''References''.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Documentation of Wikidata's lexicographic types can be found at [[:d:Special:MyLanguage/WD:Lexicographical data/Documentation|lexicographical data documentation]], and documentation of the other Wikidata types can be found at [[mw:Special:MyLanguage/Wikibase/DataModel|Wikibase/DataModel]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Terminology note''': On Wikidata, ''Item, Property, Lexeme, Lexeme form'', and ''Lexeme sense'' are all types of ''entities'', so we refer to these as the ''entity types''.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Implemented support currently includes:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Built-in types corresponding to the 5 entity types, ''Statement'', and ''Statement rank''</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A built-in type "Reference", which corresponds to Wikidata's ''ReferenceRecord'' type</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A built-in type "Claim" <sup>[ [[d:Special:MyLanguage/Wikidata:Glossary#Claim|glossary]] ]</sup>, which corresponds to Wikidata's type {{Q|86719099}} <sup>[ [[d:Special:MyLanguage/Wikidata:Glossary#Snak|glossary]] ]</sup>, and is used in Wikifunctions' representation of qualifiers and references inside statements</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Built-in ''reference types'' corresponding to the 5 entity types</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Built-in ''fetch functions'', for each of the entity types, which retrieve content from Wikidata and transform it into instances of the built-in types</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Built-in ''search functions'', which provide methods for finding lexemes by their relations to other entities</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">User interface components for selecting Wikidata content to be fetched, and for displaying the fetched content.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Terminology notes''':
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We refer to the built-in types of (1) -- (3) as the “Wikidata types”, and the built-in types of (4) as the “Wikidata reference types”, but note that all of these are types '''on Wikifunctions''' for working with content '''from Wikidata'''.</span> <span lang="en" dir="ltr" class="mw-content-ltr">When we mention one of these types below, it will be underlined, and it will also be a link if it’s currently defined on Wikifunctions (e.g., [[Z6005|<u>Wikidata lexeme</u>]]).</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">To help keep things clear, when we mention a type ''in italics'' (such as ''Lexeme'' or ''Item'') we are talking about a type that exists '''on Wikidata'''.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For example, we will talk about the [[Z6005|<u>Wikidata lexeme</u>]] type that’s been created on Wikifunctions, which corresponds to the ''Lexeme'' type on Wikidata.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The ''reference types'' mentioned in (4) are not related to the "Reference" type mentioned in (2).</span> <span lang="en" dir="ltr" class="mw-content-ltr">(4) provides a way to refer to Wikidata entities using their identifiers, whereas (2) captures the sources that substantiate particular content.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This page describes each of the above areas of support. Everything described here is deployed and available, except as noted in a few places.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikidata types ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The following types have been defined, with their structure corresponding closely to the structure of the corresponding types on wikidata:
</div>
* [[Z6005|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme</span></u>]]
* [[Z6004|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme form</span></u>]]
* [[Z6006|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme sense</span></u>]]
* [[Z6003|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata statement</span></u>]]
* [[Z6002|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata property</span></u>]]
* [[Z6001|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata item</span></u>]]
* [[Z6040|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata statement rank</span></u>]]
* [[Z6008|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata reference</span></u>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Z6007|<u> Wikidata claim</u>]], which corresponds to Wikidata's ''Snak'' type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Z6020|<u> Wikidata claim subtype</u>]], which captures the 3 types of Snaks on Wikidata</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instances of these types are never made persistent on Wikifunctions (except for the instances of [[Z6040|<u>Wikidata statement rank</u>]] and [[Z6020|<u>Wikidata claim subtype</u>]]).
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">They are constructed on the fly, when needed, using content retrieved directly from Wikidata.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instances of the entity types carry within them the identifier of the Wikidata entity from which they were obtained.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z6040|<u>Wikidata statement rank</u>]] is an enumeration type which has only the 3 fixed instances <u>preferred</u>, <u>normal</u>, and <u>deprecated</u>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z6020|<u>Wikidata claim subtype</u>]] is an enumeration type which has only the 3 fixed instances <u>value</u>, <u>some value</u>, and <u>no value</u>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Additional background, motivation, and examples of the Wikidata types may be found on the [[Wikifunctions:Type proposals/Wikidata based types|types proposal discussion page]] (but please be aware that page is no longer active and isn't necessarily up-to-date in all details).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Example ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An instance of [[Z6005|<u>Wikidata lexeme</u>]] has these 7 parts:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">identity, with a value of type [[Z6095|<u>Wikidata lexeme reference</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">lemmas, with a value of type [[Z12|Multilingual text]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">language, with a value of type [[Z60|Natural language]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">lexical category, with a value of type [[Z6091|<u>Wikidata item reference</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">statements, whose value is a list of [[Z6003|<u>Wikidata statement</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">senses, whose value is a list of [[Z6006|<u>Wikidata lexeme sense</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">forms, whose value is a list of [[Z6004|<u>Wikidata lexeme form</u>]]</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note, then, that each such instance contains instances of three other Wikidata types ([[Z6003|<u>Wikidata statement</u>]], [[Z6006|<u>Wikidata lexeme sense</u>]], and [[Z6004|<u>Wikidata lexeme form</u>]]), and also two Wikidata reference types (which are discussed in the next section).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z12|Multilingual text]] and [[Z60|Natural language]] are multipurpose Wikifunctions’ types, not created specifically for handling Wikidata content.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The identity part stores the Wikidata identifier associated with the lexeme, and serves as a self-reference.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For information about the content of each of the other parts, please see [[:d:Special:MyLanguage/d:Lexicographical data/Documentation|d:Lexicographical data/Documentation]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A specific instance, which has been fetched from [[:d:Lexeme:L3435|L3435 on Wikidata]], is shown in the appendix.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Status of Wikidata types ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
All these types are defined and available for use; there are no outstanding tasks directly related to them.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">They all have built-in equality functions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Each of the five entity types has a built-in fetch function, as described below, by which its instances can be directly fetched (retrieved from Wikidata and instantiated on Wikifunctions).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Notes about Wikidata statements ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Statements appear inside of Wikidata items, properties, lexemes, lexeme forms, and lexeme senses.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Each [[Z6003|<u>Wikidata statement</u>]] imported from Wikidata contains seven parts:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">a subject (an entity reference, discussed below)</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a predicate (a property reference, discussed below)</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a value</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a rank (an instance of [[Z6040|<u>Wikidata statement rank</u>]])</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a list of qualifiers (each represented as a [[Z6003|<u>Wikidata claim</u>]])</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a list of [[Z6008|<u>Wikidata reference</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">an instance of [[Z6020|<u>Wikidata claim subtype</u>]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The value, (3), may be of several different Wikifunctions types, including:
</div>
* [[Z6|<u><span lang="en" dir="ltr" class="mw-content-ltr">String</span></u>]]
* [[Z11|<u><span lang="en" dir="ltr" class="mw-content-ltr">Monolingual text</span></u>]]
* [[Z6010|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata quantity</span></u>]]
* [[Z6011|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata geo-coordinate</span></u>]]
* [[Z6040|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata time</span></u>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">one of the Wikidata reference types, discussed below.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
As noted in the introductory section, the word "reference" is overloaded. [[Z6008|<u>Wikidata reference</u>]], (6) above, is a Wikifunctions type that holds references to information sources, and appears in statements imported from Wikidata. The ''Wikidata reference types'', discussed in the next section, are also Wikifunctions types, but refer to Wikidata entities, and contain only Wikidata identifiers.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Because ''Statements'' in Wikidata do not have public identifiers, in Wikifunctions [[Z6003|<u>Wikidata statement</u>]] does not have a reference type or a fetch function. (These are described in more detail below.)
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikidata reference types ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The following reference types provide the means to refer to Wikidata entities without including the details of their content.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instances of these reference types contain ''only'' the Wikidata ID of an entity, as a Z6/String.
</div>
* [[Z6095|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme reference</span></u>]]
* [[Z6094|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme form reference</span></u>]]
* [[Z6096|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme sense reference</span></u>]]
* [[Z6092|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata property reference</span></u>]]
* [[Z6091|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata item reference</span></u>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''': a [[Z6091|<u>Wikidata item reference</u>]] to the item ''Q1084'' (which represents the concept ''noun'' on Wikidata) looks like the following.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">The right column shows the formal ZObject representation (in canonical form); the left column, for readability, shows the same content with English labels for each of the ZObject's elements.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions’ ZObject representation is presented in {{ll|Wikifunctions:Function model}}; we do not explain the details of the representation here.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Wikidata item reference",
"Wikidata item id": "Q1084"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example uses''':
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Wikidata reference types are used with Wikidata fetch functions (see below).</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When entity IDs and ''Property'' IDs appear inside of Wikidata lexemes, Wikidata lexeme forms, Wikidata lexeme senses, or Wikidata statements, they appear as instances of the appropriate Wikidata reference types.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For example, to indicate that ''Lexeme L3435'' (“umbrella”) has lexical category ''noun'' (which has entity ID ''Q1084''), the [[Z6005|<u>Wikidata lexeme</u>]] for ''L3435'' contains the [[Z6091|<u>Wikidata item reference</u>]] shown above, in the '''Example'''.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Status of Wikidata reference types ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Ready for use. No outstanding tasks directly related to these types.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikidata fetch functions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A fetch function is a built-in Wikifunctions function that takes an instance of one of the Wikidata reference types as its input argument.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">As noted above, each such instance contains the ID of a Wikidata entity.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Given that, it retrieves the content of that entity from Wikidata and transforms it into an instance of the corresponding Wikidata type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''': If [[Z6825|<u>Fetch Wikidata lexeme</u>]] is called with this instance of [[Z6095|<u>Wikidata lexeme reference</u>]]:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Wikidata lexeme reference",
"Wikidata lexeme id": "L3435"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6095",
"Z6095K1": "L3435"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
it will return the instance of [[Z6005|<u>Wikidata lexeme</u>]] that is introduced in the ''Example'' subsection of the ''Wikidata types'' section above, and shown in greater detail in the Appendix.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Status of Wikidata fetch functions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A fetch function exists for each of the entity types on Wikifunctions:
</div>
* [[Z6825|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata lexeme</span></u>]]
* [[Z6824|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata lexeme form</span></u>]]
* [[Z6826|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata lexeme sense</span></u>]]
* [[Z6822|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata property</span></u>]]
* [[Z6821|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata item</span></u>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
To enable calling the fetch functions from the user interface, Wikifunctions provides selector components, which make it possible to select an entity to be fetched.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">There will eventually be a selector corresponding to each of the entity types (and thus, to each of the fetch functions).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The next section provides more information about selector components.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikidata search functions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In addition to fetching content from Wikidata, it's also possible to search Wikidata content in various ways, using its APIs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions currently provides two built-in functions based on these search capabilities.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Function: [[Z6830|<u>Find lexemes for an item</u>]] ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Argument types: [[Z6091|<u>Wikidata item reference</u>]], [[Z6092|<u>Wikidata property reference</u>]], [[Z60|<u>Natural language</u>]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Return value type: List of [[Z6095|<u>Wikidata lexeme reference</u>]]</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikidata captures useful relationships between lexeme senses (which represent the meanings of a lexeme) and items. These include:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[d:Property:P5137|item for this sense]], most often connecting a noun to a thing or a class of things in Wikidata</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[d:Property:P9970|predicate for]], connecting a verb to an action or event</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[d:Property:P6271|demonym of]], connecting a noun or adjective to a location, describing the people and things that live or are from that place.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example 1.''' The three senses of the lexeme [[d:Lexeme:L18379|L18379/rose]] refer to the color, the flower, and the biological taxon.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Each of these 3 senses is related to a different item, by means of a statement, in Wikidata, such as this (for the first sense):
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">statement subject: [[d:Lexeme:L18379|L18379-S1/rose sense 1]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">statement property: [[d:Property:P5137|P5137/item for this sense]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">statement value: [[d:Q533047|Q533047/rose]]</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z6830|<u>Find lexemes for an item</u>]] searches for lexemes that are related to a given item by a given property. (Even though the relationships exist between a ''lexeme sense'' and an item, Wikidata's API, and this function, return references to the ''lexeme(s)'' that contain the sense(s).)
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''' '''2''': Calling [[Z6830|<u>Find lexemes for an item</u>]] with [[d:Q533047|Q533047/rose]] (the color), [[d:Property:P5137|P5137/item for this sense]], and [[Z1002|<u>Z1002/English</u>]] returns a list containing the lexeme reference for [[d:Lexeme:L18379|L18379/rose]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Calling the function with [[d:Q102231|Q102231/rose]] (the flower) or with [[d:Q34687|Q34687/Rosa ]] (the biological taxon) as the first argument also returns the lexeme [[d:Lexeme:L18379|L18379/rose]], because that lexeme is related (via its 3 senses) to all 3 of those items.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''' '''3''': Calling [[Z6830|<u>Find lexemes for an item</u>]] with [[d:Q55|Q55/Netherlands]], [[d:Property:P6271|P6271/demonym of]], and [[Z1002|<u>Z1002/English</u>]] returns a list containing the [[Z6095|<u>Wikidata lexeme reference</u>]] for [[d:Lexeme:L34519|L34519/Dutch]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For an example in which [[Z6830|<u>Find lexemes for an item</u>]] is used in generating a natural language phrase, please see the ''Function of the Week'' section in {{ll|Wikifunctions:Status updates/2025-02-26}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Function: [[Z6831|<u>Find lexemes for a Wikidata lexeme sense</u>]] ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Argument types: [[Z6096|<u>Wikidata lexeme sense reference</u>]], [[Z6092|<u>Wikidata property reference</u>]], [[Z60|<u>Natural language</u>]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Return value type: List of [[Z6095|<u>Wikidata lexeme reference</u>]]</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikidata also captures useful relationships between lexemes senses and other lexeme senses, such as the relationships expressed using the property [[:d:Property:P8471|pertainym of]], which links an adjective sense to a related noun sense (e.g. lunar → moon), or an adverb sense to a related adjective sense (e.g. slowly → slow).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z6831|<u>Find lexemes for a Wikidata lexeme sense</u>]] searches for lexemes that are related to a given lexeme sense by a given property, such as [[:d:Property:P8471|pertainym of]]. (Even though the relationships exist between pairs of ''lexeme senses'', Wikidata's API, and this function, return references to the ''lexeme(s)'' that contain the target sense(s).)
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== User interface ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Selectors ===
</div>
[[File:Selecting a lexeme for "goose".png|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Fig. 1. Selecting a lexeme for "goose"</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
Selectors make it possible, in Wikifunctions' user interface, to select an entity to be used.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, when the user types a partial keyword in Wikifunctions' lexeme selector, the selector will query Wikidata for lexemes that match that partial keyword. (The search matches the partial keyword against the lemmas of all the lexemes on Wikidata.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">It shows up to 10 of the current matches, and allows the user to pick one of them.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
It updates the matches list as more typing is done.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''': Figure 1 shows the appearance of a lexeme selector, after typing in the 5 characters "goose".
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">At this point the user is presented with 4 matching lexemes to choose from.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For an example in which this lexeme selector is used in preparing a function call, please see the ''Function of the Week'' section in {{ll|Wikifunctions:Status updates/2024-10-17}}.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that the presence of a Wikidata selector is indicated by the Wikidata icon (with vertical bars in red, green, and blue).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once a choice has been made by the user, the selector will generate the appropriate internal representation of the selected item, depending on context:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">an instance of the appropriate Wikidata reference type, if that's all that's needed, or</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a call to the appropriate fetch function, with an instance of the reference type as the argument passed to that call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Selectors are primarily used when providing the arguments for a function call in the UI, and the called function provides the relevant context.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">If the user is specifying a value for an argument having a Wikidata reference type as its type, the selector will provide (1).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">In this case, no fetch is performed.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If the argument in question has a Wikidata type as its type, the selector will provide (2), which will internally fetch the entire object and make it available to the called function.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Display elements ===
</div>
[[File:Compact view of lexeme form for "umbrellas".png|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Fig. 2. Compact view of the lexeme form for "umbrellas"</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions also provides a simplified, compact view of Wikidata entities.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">This view is displayed in read pages and when viewing the output of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">This compact view displays the Wikidata icon followed by a word-form associated with the Wikidata entity (e.g., a lemma from a lexeme, representation from a lexeme form, or label from an entity), in the user's language if available.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The word-form is linked to the Wikidata page from which the entity has been fetched.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example:''' Figure 2 shows the compact view, below the word '''Result''', of the [[Z6824|<u>Wikidata lexeme form</u>]] for ''umbrellas'' (which is called the ''representation'' of the form).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the initial appearance of the result of running a function that returns a lexeme form.
</div>
[[File:Expanded view of lexeme form for "umbrellas".png|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Fig. 3. Expanded view of the lexeme form for "umbrellas"</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
If there's a need to explore the entity and its details, it can be expanded using the right ''chevron'' button (which looks like '>') preceding the element.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">The expanded view allows the user to understand what kind of representation is being used for this entity.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The representation might employ a Wikidata reference type, a function call to the appropriate Wikidata fetch function, or the entire entity instance returned by that function call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In any case, the user will be able to expand, explore and navigate through its content.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example:''' Figure 3 shows the expanded view of the lexeme form for ''umbrellas'', which results from clicking the chevron in Figure 2.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Here we see the presentation of the entire instance of [[Z6824|<u>Wikidata lexeme form</u>]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Each of the form's nested components with a chevron (e.g., <code>identity</code>, <code>lexeme</code>, etc.), can be expanded for further exploration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Status of UI components for Wikidata entity types ===
</div>
* [[Z6825|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: available</span>
* [[Z6824|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme form</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: available</span>
* [[Z6826|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme sense</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: date of release not yet determined</span>
* [[Z6821|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata item</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: available</span>
* [[Z6822|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata property</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: available</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Limitations of UI components for Wikidata entity types ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Visual discrimination'''.
Currently the Wikifunctions UI is lacking in visual discrimination between the various Wikidata entity types:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The selectors for the other entity types look very similar to that for Wikidata lexemes, shown in Figure 1.</span> <span lang="en" dir="ltr" class="mw-content-ltr">There is no explicit indication of which type is being selected.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Workarounds: Usually one knows from context which type of thing is being selected.</span> <span lang="en" dir="ltr" class="mw-content-ltr">In addition, the content of the selection choices (in the drop-down list) varies depending on which type of thing is being selected.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For example, in a ''lexeme'' selector each choice shows its lemma, language, and part of speech (as shown in Figure 1), whereas in a ''lexeme form'' selector each choice shows its word-form and grammatical features, along with information that identifies its containing lexeme.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The compact views for the other entity types look the same as that for Wikidata lexemes, shown in Figure 2. (That is, they only show the Wikidata icon and a single word form.)</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Workaround: If it's not obvious from context, one can click the chevron to get the expanded view of the entity, which explicitly states its type, as shown in Figure 3.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Missing compact views'''. Because the display elements for [[Z6006|<u>Wikidata lexeme sense</u>]] and [[Z6003|<u>Wikidata statement</u>]] have not yet been fully deployed, the presentation of elements of these types can be rather space-consuming, and can detract from the readability of larger entities that contain them.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
This is especially true when a lexeme, lexeme form, or lexeme sense contains a sizable list of statements.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Mismatch in status'''. Even though the fetch function is available for [[Z6826|<u>Wikidata lexeme sense</u>]], the selector for that type is not yet available.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Appendix: an instance of Wikidata lexeme ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This example is introduced in the ''Example'' subsection of the ''Wikidata types'' section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It shows a specific instance of Wikidata lexeme, which has been fetched from [[:d:Lexeme:L3435|L3435 on Wikidata]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The right column shows the formal ZObject representation (in canonical form); the left column, for readability, shows the same content with English labels for each of the ZObject's elements.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions’ ZObject representation is presented in {{ll|Wikifunctions:Function model}}; we do not explain the details of the representation here.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The example has been shortened by omitting some content, as indicated by ellipses.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For readability, it also omits the element type indication that normally appears in the first position of each list in canonical form.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Wikidata lexeme",
"identity": {
"type": "Wikidata lexeme reference",
"Wikidata lexeme id": "L3435"
},
"lemmas": {
"type": "Multilingual text",
"texts": [
{
"type": "Monolingual text",
"language": "English",
"text": "umbrella"
}
]
},
"language": "English",
"lexical category": {
"type": "Wikidata item reference",
/* Wikidata item for "noun": */
"Wikidata item id": "Q1084"
},
"statements": [
{
"type": "Wikidata statement",
"subject": {
"type": "Wikidata lexeme reference",
"Wikidata lexeme id": "L3435"
},
"predicate": {
"type": "Wikidata property reference",
/* Oxford English Dictionary ID */
"Wikidata property id": "P5275"
},
"value": "208852",
...
},
...
],
"senses": [
{
"type": "Wikidata lexeme sense",
"identity": {
"type": "Wikidata lexeme sense reference",
"Wikidata lexeme sense id": "L3435-S1"
},
"glosses": {
"type": "Multilingual text",
"texts": [
{
"type": "Monolingual text",
"language": "Spanish",
"text": "utensilio empleado para cubrirse de la lluvia"
}
]
},
"statements": [
...
]
}
],
"forms": [
{
"type": "Wikidata lexeme form",
"identity": {
"type": "Wikidata lexeme form reference",
"Wikidata lexeme form id": "L3435-F1"
},
"lexeme": {
"type": "Wikidata lexeme reference",
"Wikidata lexeme id": "L3435"
},
"representations": {
"type": "Multilingual text",
"texts": [
{
"type": "Monolingual text",
"language": "English",
"text": "umbrella"
}
]
},
"grammatical features": [
{
"type": "Wikidata item reference",
/* Wikidata item for "singular": */
"Wikidata item id": "Q110786"
}
],
"statements": [
/* (empty list) */
]
},
...
]
}
</syntaxhighlight>
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z6005",
"Z6005K1": {
"Z1K1": "Z6095",
"Z6095K1": "L3435"
},
"Z6005K2": {
"Z1K1": "Z12",
"Z12K1": [
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "umbrella"
}
]
},
"Z6005K3": "Z1002",
"Z6005K4": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z6005K5": [
{
"Z1K1": "Z6003",
"Z6003K1": {
"Z1K1": "Z6095",
"Z6095K1": "L3435"
},
"Z6003K2": {
"Z1K1": "Z6092",
"Z6092K1": "P5275"
},
"Z6003K3": "208852",
...
},
...
],
"Z6005K6": [
{
"Z1K1": "Z6006",
"Z6006K1": {
"Z1K1": "Z6096",
"Z6096K1": "L3435-S1"
},
"Z6006K2": {
"Z1K1": "Z12",
"Z12K1": [
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "utensilio empleado para cubrirse de la lluvia"
}
]
},
"Z6006K3": [
...
]
}
],
"Z6005K7": [
{
"Z1K1": "Z6004",
"Z6004K1": {
"Z1K1": "Z6094",
"Z6094K1": "L3435-F1"
},
"Z6004K2": {
"Z1K1": "Z6095",
"Z6095K1": "L3435"
},
"Z6004K3": {
"Z1K1": "Z12",
"Z12K1": [
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "umbrella"
}
]
},
"Z6004K4": [
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z6004K5": [
]
},
...
]
}
</syntaxhighlight>
|}
[[Category:Wikidata{{#translation:}}| ]]
[[Category:Technical documentation{{#translation:}}]]
tlzzguvihf3481db2yybuqkcgpiw7hj
282260
282258
2026-06-11T13:05:57Z
七八年再来一次
10776
Created page with "维基函数支持检索并使用维基数据的内容,包括主要包含在“条目”中的百科内容,以及包含在“词素、词素形式”和“词素释义”中的词典内容。"
282260
wikitext
text/x-wiki
<languages/>
{{AW Content}}{{Technical documentation navbox}}
维基函数支持检索并使用维基数据的内容,包括主要包含在“条目”中的百科内容,以及包含在“词素、词素形式”和“词素释义”中的词典内容。
<div lang="en" dir="ltr" class="mw-content-ltr">
Since instances of these four content types can contain ''Statements'', Wikifunctions also includes support for ''Statements'' and their components, including ''Properties'', ''Statement ranks'', ''Qualifiers'', and (coming soon) ''References''.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Documentation of Wikidata's lexicographic types can be found at [[:d:Special:MyLanguage/WD:Lexicographical data/Documentation|lexicographical data documentation]], and documentation of the other Wikidata types can be found at [[mw:Special:MyLanguage/Wikibase/DataModel|Wikibase/DataModel]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Terminology note''': On Wikidata, ''Item, Property, Lexeme, Lexeme form'', and ''Lexeme sense'' are all types of ''entities'', so we refer to these as the ''entity types''.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Implemented support currently includes:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Built-in types corresponding to the 5 entity types, ''Statement'', and ''Statement rank''</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A built-in type "Reference", which corresponds to Wikidata's ''ReferenceRecord'' type</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A built-in type "Claim" <sup>[ [[d:Special:MyLanguage/Wikidata:Glossary#Claim|glossary]] ]</sup>, which corresponds to Wikidata's type {{Q|86719099}} <sup>[ [[d:Special:MyLanguage/Wikidata:Glossary#Snak|glossary]] ]</sup>, and is used in Wikifunctions' representation of qualifiers and references inside statements</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Built-in ''reference types'' corresponding to the 5 entity types</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Built-in ''fetch functions'', for each of the entity types, which retrieve content from Wikidata and transform it into instances of the built-in types</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Built-in ''search functions'', which provide methods for finding lexemes by their relations to other entities</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">User interface components for selecting Wikidata content to be fetched, and for displaying the fetched content.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Terminology notes''':
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We refer to the built-in types of (1) -- (3) as the “Wikidata types”, and the built-in types of (4) as the “Wikidata reference types”, but note that all of these are types '''on Wikifunctions''' for working with content '''from Wikidata'''.</span> <span lang="en" dir="ltr" class="mw-content-ltr">When we mention one of these types below, it will be underlined, and it will also be a link if it’s currently defined on Wikifunctions (e.g., [[Z6005|<u>Wikidata lexeme</u>]]).</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">To help keep things clear, when we mention a type ''in italics'' (such as ''Lexeme'' or ''Item'') we are talking about a type that exists '''on Wikidata'''.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For example, we will talk about the [[Z6005|<u>Wikidata lexeme</u>]] type that’s been created on Wikifunctions, which corresponds to the ''Lexeme'' type on Wikidata.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The ''reference types'' mentioned in (4) are not related to the "Reference" type mentioned in (2).</span> <span lang="en" dir="ltr" class="mw-content-ltr">(4) provides a way to refer to Wikidata entities using their identifiers, whereas (2) captures the sources that substantiate particular content.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This page describes each of the above areas of support. Everything described here is deployed and available, except as noted in a few places.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikidata types ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The following types have been defined, with their structure corresponding closely to the structure of the corresponding types on wikidata:
</div>
* [[Z6005|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme</span></u>]]
* [[Z6004|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme form</span></u>]]
* [[Z6006|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme sense</span></u>]]
* [[Z6003|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata statement</span></u>]]
* [[Z6002|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata property</span></u>]]
* [[Z6001|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata item</span></u>]]
* [[Z6040|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata statement rank</span></u>]]
* [[Z6008|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata reference</span></u>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Z6007|<u> Wikidata claim</u>]], which corresponds to Wikidata's ''Snak'' type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Z6020|<u> Wikidata claim subtype</u>]], which captures the 3 types of Snaks on Wikidata</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instances of these types are never made persistent on Wikifunctions (except for the instances of [[Z6040|<u>Wikidata statement rank</u>]] and [[Z6020|<u>Wikidata claim subtype</u>]]).
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">They are constructed on the fly, when needed, using content retrieved directly from Wikidata.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instances of the entity types carry within them the identifier of the Wikidata entity from which they were obtained.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z6040|<u>Wikidata statement rank</u>]] is an enumeration type which has only the 3 fixed instances <u>preferred</u>, <u>normal</u>, and <u>deprecated</u>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z6020|<u>Wikidata claim subtype</u>]] is an enumeration type which has only the 3 fixed instances <u>value</u>, <u>some value</u>, and <u>no value</u>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Additional background, motivation, and examples of the Wikidata types may be found on the [[Wikifunctions:Type proposals/Wikidata based types|types proposal discussion page]] (but please be aware that page is no longer active and isn't necessarily up-to-date in all details).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Example ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An instance of [[Z6005|<u>Wikidata lexeme</u>]] has these 7 parts:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">identity, with a value of type [[Z6095|<u>Wikidata lexeme reference</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">lemmas, with a value of type [[Z12|Multilingual text]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">language, with a value of type [[Z60|Natural language]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">lexical category, with a value of type [[Z6091|<u>Wikidata item reference</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">statements, whose value is a list of [[Z6003|<u>Wikidata statement</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">senses, whose value is a list of [[Z6006|<u>Wikidata lexeme sense</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">forms, whose value is a list of [[Z6004|<u>Wikidata lexeme form</u>]]</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note, then, that each such instance contains instances of three other Wikidata types ([[Z6003|<u>Wikidata statement</u>]], [[Z6006|<u>Wikidata lexeme sense</u>]], and [[Z6004|<u>Wikidata lexeme form</u>]]), and also two Wikidata reference types (which are discussed in the next section).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z12|Multilingual text]] and [[Z60|Natural language]] are multipurpose Wikifunctions’ types, not created specifically for handling Wikidata content.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The identity part stores the Wikidata identifier associated with the lexeme, and serves as a self-reference.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For information about the content of each of the other parts, please see [[:d:Special:MyLanguage/d:Lexicographical data/Documentation|d:Lexicographical data/Documentation]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A specific instance, which has been fetched from [[:d:Lexeme:L3435|L3435 on Wikidata]], is shown in the appendix.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Status of Wikidata types ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
All these types are defined and available for use; there are no outstanding tasks directly related to them.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">They all have built-in equality functions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Each of the five entity types has a built-in fetch function, as described below, by which its instances can be directly fetched (retrieved from Wikidata and instantiated on Wikifunctions).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Notes about Wikidata statements ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Statements appear inside of Wikidata items, properties, lexemes, lexeme forms, and lexeme senses.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Each [[Z6003|<u>Wikidata statement</u>]] imported from Wikidata contains seven parts:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">a subject (an entity reference, discussed below)</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a predicate (a property reference, discussed below)</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a value</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a rank (an instance of [[Z6040|<u>Wikidata statement rank</u>]])</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a list of qualifiers (each represented as a [[Z6003|<u>Wikidata claim</u>]])</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a list of [[Z6008|<u>Wikidata reference</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">an instance of [[Z6020|<u>Wikidata claim subtype</u>]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The value, (3), may be of several different Wikifunctions types, including:
</div>
* [[Z6|<u><span lang="en" dir="ltr" class="mw-content-ltr">String</span></u>]]
* [[Z11|<u><span lang="en" dir="ltr" class="mw-content-ltr">Monolingual text</span></u>]]
* [[Z6010|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata quantity</span></u>]]
* [[Z6011|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata geo-coordinate</span></u>]]
* [[Z6040|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata time</span></u>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">one of the Wikidata reference types, discussed below.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
As noted in the introductory section, the word "reference" is overloaded. [[Z6008|<u>Wikidata reference</u>]], (6) above, is a Wikifunctions type that holds references to information sources, and appears in statements imported from Wikidata. The ''Wikidata reference types'', discussed in the next section, are also Wikifunctions types, but refer to Wikidata entities, and contain only Wikidata identifiers.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Because ''Statements'' in Wikidata do not have public identifiers, in Wikifunctions [[Z6003|<u>Wikidata statement</u>]] does not have a reference type or a fetch function. (These are described in more detail below.)
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikidata reference types ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The following reference types provide the means to refer to Wikidata entities without including the details of their content.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instances of these reference types contain ''only'' the Wikidata ID of an entity, as a Z6/String.
</div>
* [[Z6095|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme reference</span></u>]]
* [[Z6094|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme form reference</span></u>]]
* [[Z6096|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme sense reference</span></u>]]
* [[Z6092|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata property reference</span></u>]]
* [[Z6091|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata item reference</span></u>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''': a [[Z6091|<u>Wikidata item reference</u>]] to the item ''Q1084'' (which represents the concept ''noun'' on Wikidata) looks like the following.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">The right column shows the formal ZObject representation (in canonical form); the left column, for readability, shows the same content with English labels for each of the ZObject's elements.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions’ ZObject representation is presented in {{ll|Wikifunctions:Function model}}; we do not explain the details of the representation here.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Wikidata item reference",
"Wikidata item id": "Q1084"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example uses''':
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Wikidata reference types are used with Wikidata fetch functions (see below).</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When entity IDs and ''Property'' IDs appear inside of Wikidata lexemes, Wikidata lexeme forms, Wikidata lexeme senses, or Wikidata statements, they appear as instances of the appropriate Wikidata reference types.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For example, to indicate that ''Lexeme L3435'' (“umbrella”) has lexical category ''noun'' (which has entity ID ''Q1084''), the [[Z6005|<u>Wikidata lexeme</u>]] for ''L3435'' contains the [[Z6091|<u>Wikidata item reference</u>]] shown above, in the '''Example'''.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Status of Wikidata reference types ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Ready for use. No outstanding tasks directly related to these types.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikidata fetch functions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A fetch function is a built-in Wikifunctions function that takes an instance of one of the Wikidata reference types as its input argument.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">As noted above, each such instance contains the ID of a Wikidata entity.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Given that, it retrieves the content of that entity from Wikidata and transforms it into an instance of the corresponding Wikidata type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''': If [[Z6825|<u>Fetch Wikidata lexeme</u>]] is called with this instance of [[Z6095|<u>Wikidata lexeme reference</u>]]:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Wikidata lexeme reference",
"Wikidata lexeme id": "L3435"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6095",
"Z6095K1": "L3435"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
it will return the instance of [[Z6005|<u>Wikidata lexeme</u>]] that is introduced in the ''Example'' subsection of the ''Wikidata types'' section above, and shown in greater detail in the Appendix.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Status of Wikidata fetch functions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A fetch function exists for each of the entity types on Wikifunctions:
</div>
* [[Z6825|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata lexeme</span></u>]]
* [[Z6824|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata lexeme form</span></u>]]
* [[Z6826|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata lexeme sense</span></u>]]
* [[Z6822|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata property</span></u>]]
* [[Z6821|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata item</span></u>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
To enable calling the fetch functions from the user interface, Wikifunctions provides selector components, which make it possible to select an entity to be fetched.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">There will eventually be a selector corresponding to each of the entity types (and thus, to each of the fetch functions).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The next section provides more information about selector components.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikidata search functions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In addition to fetching content from Wikidata, it's also possible to search Wikidata content in various ways, using its APIs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions currently provides two built-in functions based on these search capabilities.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Function: [[Z6830|<u>Find lexemes for an item</u>]] ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Argument types: [[Z6091|<u>Wikidata item reference</u>]], [[Z6092|<u>Wikidata property reference</u>]], [[Z60|<u>Natural language</u>]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Return value type: List of [[Z6095|<u>Wikidata lexeme reference</u>]]</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikidata captures useful relationships between lexeme senses (which represent the meanings of a lexeme) and items. These include:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[d:Property:P5137|item for this sense]], most often connecting a noun to a thing or a class of things in Wikidata</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[d:Property:P9970|predicate for]], connecting a verb to an action or event</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[d:Property:P6271|demonym of]], connecting a noun or adjective to a location, describing the people and things that live or are from that place.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example 1.''' The three senses of the lexeme [[d:Lexeme:L18379|L18379/rose]] refer to the color, the flower, and the biological taxon.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Each of these 3 senses is related to a different item, by means of a statement, in Wikidata, such as this (for the first sense):
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">statement subject: [[d:Lexeme:L18379|L18379-S1/rose sense 1]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">statement property: [[d:Property:P5137|P5137/item for this sense]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">statement value: [[d:Q533047|Q533047/rose]]</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z6830|<u>Find lexemes for an item</u>]] searches for lexemes that are related to a given item by a given property. (Even though the relationships exist between a ''lexeme sense'' and an item, Wikidata's API, and this function, return references to the ''lexeme(s)'' that contain the sense(s).)
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''' '''2''': Calling [[Z6830|<u>Find lexemes for an item</u>]] with [[d:Q533047|Q533047/rose]] (the color), [[d:Property:P5137|P5137/item for this sense]], and [[Z1002|<u>Z1002/English</u>]] returns a list containing the lexeme reference for [[d:Lexeme:L18379|L18379/rose]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Calling the function with [[d:Q102231|Q102231/rose]] (the flower) or with [[d:Q34687|Q34687/Rosa ]] (the biological taxon) as the first argument also returns the lexeme [[d:Lexeme:L18379|L18379/rose]], because that lexeme is related (via its 3 senses) to all 3 of those items.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''' '''3''': Calling [[Z6830|<u>Find lexemes for an item</u>]] with [[d:Q55|Q55/Netherlands]], [[d:Property:P6271|P6271/demonym of]], and [[Z1002|<u>Z1002/English</u>]] returns a list containing the [[Z6095|<u>Wikidata lexeme reference</u>]] for [[d:Lexeme:L34519|L34519/Dutch]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For an example in which [[Z6830|<u>Find lexemes for an item</u>]] is used in generating a natural language phrase, please see the ''Function of the Week'' section in {{ll|Wikifunctions:Status updates/2025-02-26}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Function: [[Z6831|<u>Find lexemes for a Wikidata lexeme sense</u>]] ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Argument types: [[Z6096|<u>Wikidata lexeme sense reference</u>]], [[Z6092|<u>Wikidata property reference</u>]], [[Z60|<u>Natural language</u>]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Return value type: List of [[Z6095|<u>Wikidata lexeme reference</u>]]</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikidata also captures useful relationships between lexemes senses and other lexeme senses, such as the relationships expressed using the property [[:d:Property:P8471|pertainym of]], which links an adjective sense to a related noun sense (e.g. lunar → moon), or an adverb sense to a related adjective sense (e.g. slowly → slow).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z6831|<u>Find lexemes for a Wikidata lexeme sense</u>]] searches for lexemes that are related to a given lexeme sense by a given property, such as [[:d:Property:P8471|pertainym of]]. (Even though the relationships exist between pairs of ''lexeme senses'', Wikidata's API, and this function, return references to the ''lexeme(s)'' that contain the target sense(s).)
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== User interface ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Selectors ===
</div>
[[File:Selecting a lexeme for "goose".png|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Fig. 1. Selecting a lexeme for "goose"</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
Selectors make it possible, in Wikifunctions' user interface, to select an entity to be used.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, when the user types a partial keyword in Wikifunctions' lexeme selector, the selector will query Wikidata for lexemes that match that partial keyword. (The search matches the partial keyword against the lemmas of all the lexemes on Wikidata.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">It shows up to 10 of the current matches, and allows the user to pick one of them.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
It updates the matches list as more typing is done.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''': Figure 1 shows the appearance of a lexeme selector, after typing in the 5 characters "goose".
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">At this point the user is presented with 4 matching lexemes to choose from.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For an example in which this lexeme selector is used in preparing a function call, please see the ''Function of the Week'' section in {{ll|Wikifunctions:Status updates/2024-10-17}}.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that the presence of a Wikidata selector is indicated by the Wikidata icon (with vertical bars in red, green, and blue).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once a choice has been made by the user, the selector will generate the appropriate internal representation of the selected item, depending on context:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">an instance of the appropriate Wikidata reference type, if that's all that's needed, or</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a call to the appropriate fetch function, with an instance of the reference type as the argument passed to that call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Selectors are primarily used when providing the arguments for a function call in the UI, and the called function provides the relevant context.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">If the user is specifying a value for an argument having a Wikidata reference type as its type, the selector will provide (1).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">In this case, no fetch is performed.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If the argument in question has a Wikidata type as its type, the selector will provide (2), which will internally fetch the entire object and make it available to the called function.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Display elements ===
</div>
[[File:Compact view of lexeme form for "umbrellas".png|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Fig. 2. Compact view of the lexeme form for "umbrellas"</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions also provides a simplified, compact view of Wikidata entities.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">This view is displayed in read pages and when viewing the output of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">This compact view displays the Wikidata icon followed by a word-form associated with the Wikidata entity (e.g., a lemma from a lexeme, representation from a lexeme form, or label from an entity), in the user's language if available.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The word-form is linked to the Wikidata page from which the entity has been fetched.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example:''' Figure 2 shows the compact view, below the word '''Result''', of the [[Z6824|<u>Wikidata lexeme form</u>]] for ''umbrellas'' (which is called the ''representation'' of the form).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the initial appearance of the result of running a function that returns a lexeme form.
</div>
[[File:Expanded view of lexeme form for "umbrellas".png|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Fig. 3. Expanded view of the lexeme form for "umbrellas"</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
If there's a need to explore the entity and its details, it can be expanded using the right ''chevron'' button (which looks like '>') preceding the element.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">The expanded view allows the user to understand what kind of representation is being used for this entity.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The representation might employ a Wikidata reference type, a function call to the appropriate Wikidata fetch function, or the entire entity instance returned by that function call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In any case, the user will be able to expand, explore and navigate through its content.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example:''' Figure 3 shows the expanded view of the lexeme form for ''umbrellas'', which results from clicking the chevron in Figure 2.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Here we see the presentation of the entire instance of [[Z6824|<u>Wikidata lexeme form</u>]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Each of the form's nested components with a chevron (e.g., <code>identity</code>, <code>lexeme</code>, etc.), can be expanded for further exploration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Status of UI components for Wikidata entity types ===
</div>
* [[Z6825|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: available</span>
* [[Z6824|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme form</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: available</span>
* [[Z6826|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme sense</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: date of release not yet determined</span>
* [[Z6821|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata item</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: available</span>
* [[Z6822|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata property</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: available</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Limitations of UI components for Wikidata entity types ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Visual discrimination'''.
Currently the Wikifunctions UI is lacking in visual discrimination between the various Wikidata entity types:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The selectors for the other entity types look very similar to that for Wikidata lexemes, shown in Figure 1.</span> <span lang="en" dir="ltr" class="mw-content-ltr">There is no explicit indication of which type is being selected.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Workarounds: Usually one knows from context which type of thing is being selected.</span> <span lang="en" dir="ltr" class="mw-content-ltr">In addition, the content of the selection choices (in the drop-down list) varies depending on which type of thing is being selected.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For example, in a ''lexeme'' selector each choice shows its lemma, language, and part of speech (as shown in Figure 1), whereas in a ''lexeme form'' selector each choice shows its word-form and grammatical features, along with information that identifies its containing lexeme.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The compact views for the other entity types look the same as that for Wikidata lexemes, shown in Figure 2. (That is, they only show the Wikidata icon and a single word form.)</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Workaround: If it's not obvious from context, one can click the chevron to get the expanded view of the entity, which explicitly states its type, as shown in Figure 3.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Missing compact views'''. Because the display elements for [[Z6006|<u>Wikidata lexeme sense</u>]] and [[Z6003|<u>Wikidata statement</u>]] have not yet been fully deployed, the presentation of elements of these types can be rather space-consuming, and can detract from the readability of larger entities that contain them.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
This is especially true when a lexeme, lexeme form, or lexeme sense contains a sizable list of statements.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Mismatch in status'''. Even though the fetch function is available for [[Z6826|<u>Wikidata lexeme sense</u>]], the selector for that type is not yet available.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Appendix: an instance of Wikidata lexeme ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This example is introduced in the ''Example'' subsection of the ''Wikidata types'' section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It shows a specific instance of Wikidata lexeme, which has been fetched from [[:d:Lexeme:L3435|L3435 on Wikidata]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The right column shows the formal ZObject representation (in canonical form); the left column, for readability, shows the same content with English labels for each of the ZObject's elements.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions’ ZObject representation is presented in {{ll|Wikifunctions:Function model}}; we do not explain the details of the representation here.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The example has been shortened by omitting some content, as indicated by ellipses.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For readability, it also omits the element type indication that normally appears in the first position of each list in canonical form.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Wikidata lexeme",
"identity": {
"type": "Wikidata lexeme reference",
"Wikidata lexeme id": "L3435"
},
"lemmas": {
"type": "Multilingual text",
"texts": [
{
"type": "Monolingual text",
"language": "English",
"text": "umbrella"
}
]
},
"language": "English",
"lexical category": {
"type": "Wikidata item reference",
/* Wikidata item for "noun": */
"Wikidata item id": "Q1084"
},
"statements": [
{
"type": "Wikidata statement",
"subject": {
"type": "Wikidata lexeme reference",
"Wikidata lexeme id": "L3435"
},
"predicate": {
"type": "Wikidata property reference",
/* Oxford English Dictionary ID */
"Wikidata property id": "P5275"
},
"value": "208852",
...
},
...
],
"senses": [
{
"type": "Wikidata lexeme sense",
"identity": {
"type": "Wikidata lexeme sense reference",
"Wikidata lexeme sense id": "L3435-S1"
},
"glosses": {
"type": "Multilingual text",
"texts": [
{
"type": "Monolingual text",
"language": "Spanish",
"text": "utensilio empleado para cubrirse de la lluvia"
}
]
},
"statements": [
...
]
}
],
"forms": [
{
"type": "Wikidata lexeme form",
"identity": {
"type": "Wikidata lexeme form reference",
"Wikidata lexeme form id": "L3435-F1"
},
"lexeme": {
"type": "Wikidata lexeme reference",
"Wikidata lexeme id": "L3435"
},
"representations": {
"type": "Multilingual text",
"texts": [
{
"type": "Monolingual text",
"language": "English",
"text": "umbrella"
}
]
},
"grammatical features": [
{
"type": "Wikidata item reference",
/* Wikidata item for "singular": */
"Wikidata item id": "Q110786"
}
],
"statements": [
/* (empty list) */
]
},
...
]
}
</syntaxhighlight>
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z6005",
"Z6005K1": {
"Z1K1": "Z6095",
"Z6095K1": "L3435"
},
"Z6005K2": {
"Z1K1": "Z12",
"Z12K1": [
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "umbrella"
}
]
},
"Z6005K3": "Z1002",
"Z6005K4": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z6005K5": [
{
"Z1K1": "Z6003",
"Z6003K1": {
"Z1K1": "Z6095",
"Z6095K1": "L3435"
},
"Z6003K2": {
"Z1K1": "Z6092",
"Z6092K1": "P5275"
},
"Z6003K3": "208852",
...
},
...
],
"Z6005K6": [
{
"Z1K1": "Z6006",
"Z6006K1": {
"Z1K1": "Z6096",
"Z6096K1": "L3435-S1"
},
"Z6006K2": {
"Z1K1": "Z12",
"Z12K1": [
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "utensilio empleado para cubrirse de la lluvia"
}
]
},
"Z6006K3": [
...
]
}
],
"Z6005K7": [
{
"Z1K1": "Z6004",
"Z6004K1": {
"Z1K1": "Z6094",
"Z6094K1": "L3435-F1"
},
"Z6004K2": {
"Z1K1": "Z6095",
"Z6095K1": "L3435"
},
"Z6004K3": {
"Z1K1": "Z12",
"Z12K1": [
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "umbrella"
}
]
},
"Z6004K4": [
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z6004K5": [
]
},
...
]
}
</syntaxhighlight>
|}
[[Category:Wikidata{{#translation:}}| ]]
[[Category:Technical documentation{{#translation:}}]]
4yv3a21hvk3ym15nmws3e2d3kjxxbjg
282262
282260
2026-06-11T13:07:40Z
七八年再来一次
10776
Created page with "由于这四种内容类型的实例可能包含“陈述”,维基函数也包括对“陈述”及其组成部分的支持,包括“属性”,“陈述等级”,“限定词”以及(即将推出的)“引用”。"
282262
wikitext
text/x-wiki
<languages/>
{{AW Content}}{{Technical documentation navbox}}
维基函数支持检索并使用维基数据的内容,包括主要包含在“条目”中的百科内容,以及包含在“词素、词素形式”和“词素释义”中的词典内容。
由于这四种内容类型的实例可能包含“陈述”,维基函数也包括对“陈述”及其组成部分的支持,包括“属性”,“陈述等级”,“限定词”以及(即将推出的)“引用”。
<div lang="en" dir="ltr" class="mw-content-ltr">
Documentation of Wikidata's lexicographic types can be found at [[:d:Special:MyLanguage/WD:Lexicographical data/Documentation|lexicographical data documentation]], and documentation of the other Wikidata types can be found at [[mw:Special:MyLanguage/Wikibase/DataModel|Wikibase/DataModel]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Terminology note''': On Wikidata, ''Item, Property, Lexeme, Lexeme form'', and ''Lexeme sense'' are all types of ''entities'', so we refer to these as the ''entity types''.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Implemented support currently includes:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">Built-in types corresponding to the 5 entity types, ''Statement'', and ''Statement rank''</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A built-in type "Reference", which corresponds to Wikidata's ''ReferenceRecord'' type</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">A built-in type "Claim" <sup>[ [[d:Special:MyLanguage/Wikidata:Glossary#Claim|glossary]] ]</sup>, which corresponds to Wikidata's type {{Q|86719099}} <sup>[ [[d:Special:MyLanguage/Wikidata:Glossary#Snak|glossary]] ]</sup>, and is used in Wikifunctions' representation of qualifiers and references inside statements</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Built-in ''reference types'' corresponding to the 5 entity types</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Built-in ''fetch functions'', for each of the entity types, which retrieve content from Wikidata and transform it into instances of the built-in types</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">Built-in ''search functions'', which provide methods for finding lexemes by their relations to other entities</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">User interface components for selecting Wikidata content to be fetched, and for displaying the fetched content.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Terminology notes''':
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">We refer to the built-in types of (1) -- (3) as the “Wikidata types”, and the built-in types of (4) as the “Wikidata reference types”, but note that all of these are types '''on Wikifunctions''' for working with content '''from Wikidata'''.</span> <span lang="en" dir="ltr" class="mw-content-ltr">When we mention one of these types below, it will be underlined, and it will also be a link if it’s currently defined on Wikifunctions (e.g., [[Z6005|<u>Wikidata lexeme</u>]]).</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">To help keep things clear, when we mention a type ''in italics'' (such as ''Lexeme'' or ''Item'') we are talking about a type that exists '''on Wikidata'''.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For example, we will talk about the [[Z6005|<u>Wikidata lexeme</u>]] type that’s been created on Wikifunctions, which corresponds to the ''Lexeme'' type on Wikidata.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The ''reference types'' mentioned in (4) are not related to the "Reference" type mentioned in (2).</span> <span lang="en" dir="ltr" class="mw-content-ltr">(4) provides a way to refer to Wikidata entities using their identifiers, whereas (2) captures the sources that substantiate particular content.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This page describes each of the above areas of support. Everything described here is deployed and available, except as noted in a few places.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikidata types ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The following types have been defined, with their structure corresponding closely to the structure of the corresponding types on wikidata:
</div>
* [[Z6005|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme</span></u>]]
* [[Z6004|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme form</span></u>]]
* [[Z6006|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme sense</span></u>]]
* [[Z6003|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata statement</span></u>]]
* [[Z6002|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata property</span></u>]]
* [[Z6001|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata item</span></u>]]
* [[Z6040|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata statement rank</span></u>]]
* [[Z6008|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata reference</span></u>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Z6007|<u> Wikidata claim</u>]], which corresponds to Wikidata's ''Snak'' type</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Z6020|<u> Wikidata claim subtype</u>]], which captures the 3 types of Snaks on Wikidata</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instances of these types are never made persistent on Wikifunctions (except for the instances of [[Z6040|<u>Wikidata statement rank</u>]] and [[Z6020|<u>Wikidata claim subtype</u>]]).
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">They are constructed on the fly, when needed, using content retrieved directly from Wikidata.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instances of the entity types carry within them the identifier of the Wikidata entity from which they were obtained.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z6040|<u>Wikidata statement rank</u>]] is an enumeration type which has only the 3 fixed instances <u>preferred</u>, <u>normal</u>, and <u>deprecated</u>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z6020|<u>Wikidata claim subtype</u>]] is an enumeration type which has only the 3 fixed instances <u>value</u>, <u>some value</u>, and <u>no value</u>.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Additional background, motivation, and examples of the Wikidata types may be found on the [[Wikifunctions:Type proposals/Wikidata based types|types proposal discussion page]] (but please be aware that page is no longer active and isn't necessarily up-to-date in all details).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Example ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
An instance of [[Z6005|<u>Wikidata lexeme</u>]] has these 7 parts:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">identity, with a value of type [[Z6095|<u>Wikidata lexeme reference</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">lemmas, with a value of type [[Z12|Multilingual text]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">language, with a value of type [[Z60|Natural language]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">lexical category, with a value of type [[Z6091|<u>Wikidata item reference</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">statements, whose value is a list of [[Z6003|<u>Wikidata statement</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">senses, whose value is a list of [[Z6006|<u>Wikidata lexeme sense</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">forms, whose value is a list of [[Z6004|<u>Wikidata lexeme form</u>]]</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note, then, that each such instance contains instances of three other Wikidata types ([[Z6003|<u>Wikidata statement</u>]], [[Z6006|<u>Wikidata lexeme sense</u>]], and [[Z6004|<u>Wikidata lexeme form</u>]]), and also two Wikidata reference types (which are discussed in the next section).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z12|Multilingual text]] and [[Z60|Natural language]] are multipurpose Wikifunctions’ types, not created specifically for handling Wikidata content.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The identity part stores the Wikidata identifier associated with the lexeme, and serves as a self-reference.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For information about the content of each of the other parts, please see [[:d:Special:MyLanguage/d:Lexicographical data/Documentation|d:Lexicographical data/Documentation]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A specific instance, which has been fetched from [[:d:Lexeme:L3435|L3435 on Wikidata]], is shown in the appendix.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Status of Wikidata types ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
All these types are defined and available for use; there are no outstanding tasks directly related to them.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">They all have built-in equality functions.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Each of the five entity types has a built-in fetch function, as described below, by which its instances can be directly fetched (retrieved from Wikidata and instantiated on Wikifunctions).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Notes about Wikidata statements ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Statements appear inside of Wikidata items, properties, lexemes, lexeme forms, and lexeme senses.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Each [[Z6003|<u>Wikidata statement</u>]] imported from Wikidata contains seven parts:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">a subject (an entity reference, discussed below)</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a predicate (a property reference, discussed below)</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a value</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a rank (an instance of [[Z6040|<u>Wikidata statement rank</u>]])</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a list of qualifiers (each represented as a [[Z6003|<u>Wikidata claim</u>]])</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a list of [[Z6008|<u>Wikidata reference</u>]]</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">an instance of [[Z6020|<u>Wikidata claim subtype</u>]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The value, (3), may be of several different Wikifunctions types, including:
</div>
* [[Z6|<u><span lang="en" dir="ltr" class="mw-content-ltr">String</span></u>]]
* [[Z11|<u><span lang="en" dir="ltr" class="mw-content-ltr">Monolingual text</span></u>]]
* [[Z6010|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata quantity</span></u>]]
* [[Z6011|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata geo-coordinate</span></u>]]
* [[Z6040|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata time</span></u>]]
* <span lang="en" dir="ltr" class="mw-content-ltr">one of the Wikidata reference types, discussed below.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
As noted in the introductory section, the word "reference" is overloaded. [[Z6008|<u>Wikidata reference</u>]], (6) above, is a Wikifunctions type that holds references to information sources, and appears in statements imported from Wikidata. The ''Wikidata reference types'', discussed in the next section, are also Wikifunctions types, but refer to Wikidata entities, and contain only Wikidata identifiers.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Because ''Statements'' in Wikidata do not have public identifiers, in Wikifunctions [[Z6003|<u>Wikidata statement</u>]] does not have a reference type or a fetch function. (These are described in more detail below.)
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikidata reference types ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The following reference types provide the means to refer to Wikidata entities without including the details of their content.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instances of these reference types contain ''only'' the Wikidata ID of an entity, as a Z6/String.
</div>
* [[Z6095|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme reference</span></u>]]
* [[Z6094|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme form reference</span></u>]]
* [[Z6096|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme sense reference</span></u>]]
* [[Z6092|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata property reference</span></u>]]
* [[Z6091|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata item reference</span></u>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''': a [[Z6091|<u>Wikidata item reference</u>]] to the item ''Q1084'' (which represents the concept ''noun'' on Wikidata) looks like the following.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">The right column shows the formal ZObject representation (in canonical form); the left column, for readability, shows the same content with English labels for each of the ZObject's elements.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions’ ZObject representation is presented in {{ll|Wikifunctions:Function model}}; we do not explain the details of the representation here.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Wikidata item reference",
"Wikidata item id": "Q1084"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example uses''':
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Wikidata reference types are used with Wikidata fetch functions (see below).</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">When entity IDs and ''Property'' IDs appear inside of Wikidata lexemes, Wikidata lexeme forms, Wikidata lexeme senses, or Wikidata statements, they appear as instances of the appropriate Wikidata reference types.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For example, to indicate that ''Lexeme L3435'' (“umbrella”) has lexical category ''noun'' (which has entity ID ''Q1084''), the [[Z6005|<u>Wikidata lexeme</u>]] for ''L3435'' contains the [[Z6091|<u>Wikidata item reference</u>]] shown above, in the '''Example'''.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Status of Wikidata reference types ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Ready for use. No outstanding tasks directly related to these types.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikidata fetch functions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A fetch function is a built-in Wikifunctions function that takes an instance of one of the Wikidata reference types as its input argument.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">As noted above, each such instance contains the ID of a Wikidata entity.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Given that, it retrieves the content of that entity from Wikidata and transforms it into an instance of the corresponding Wikidata type.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''': If [[Z6825|<u>Fetch Wikidata lexeme</u>]] is called with this instance of [[Z6095|<u>Wikidata lexeme reference</u>]]:
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Wikidata lexeme reference",
"Wikidata lexeme id": "L3435"
}</syntaxhighlight>
| <syntaxhighlight lang="json">{
"Z1K1": "Z6095",
"Z6095K1": "L3435"
}</syntaxhighlight>
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
it will return the instance of [[Z6005|<u>Wikidata lexeme</u>]] that is introduced in the ''Example'' subsection of the ''Wikidata types'' section above, and shown in greater detail in the Appendix.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Status of Wikidata fetch functions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
A fetch function exists for each of the entity types on Wikifunctions:
</div>
* [[Z6825|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata lexeme</span></u>]]
* [[Z6824|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata lexeme form</span></u>]]
* [[Z6826|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata lexeme sense</span></u>]]
* [[Z6822|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata property</span></u>]]
* [[Z6821|<u><span lang="en" dir="ltr" class="mw-content-ltr">Fetch Wikidata item</span></u>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
To enable calling the fetch functions from the user interface, Wikifunctions provides selector components, which make it possible to select an entity to be fetched.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">There will eventually be a selector corresponding to each of the entity types (and thus, to each of the fetch functions).</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The next section provides more information about selector components.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Wikidata search functions ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
In addition to fetching content from Wikidata, it's also possible to search Wikidata content in various ways, using its APIs.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions currently provides two built-in functions based on these search capabilities.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Function: [[Z6830|<u>Find lexemes for an item</u>]] ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Argument types: [[Z6091|<u>Wikidata item reference</u>]], [[Z6092|<u>Wikidata property reference</u>]], [[Z60|<u>Natural language</u>]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Return value type: List of [[Z6095|<u>Wikidata lexeme reference</u>]]</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikidata captures useful relationships between lexeme senses (which represent the meanings of a lexeme) and items. These include:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[d:Property:P5137|item for this sense]], most often connecting a noun to a thing or a class of things in Wikidata</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[d:Property:P9970|predicate for]], connecting a verb to an action or event</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[d:Property:P6271|demonym of]], connecting a noun or adjective to a location, describing the people and things that live or are from that place.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example 1.''' The three senses of the lexeme [[d:Lexeme:L18379|L18379/rose]] refer to the color, the flower, and the biological taxon.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Each of these 3 senses is related to a different item, by means of a statement, in Wikidata, such as this (for the first sense):
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">statement subject: [[d:Lexeme:L18379|L18379-S1/rose sense 1]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">statement property: [[d:Property:P5137|P5137/item for this sense]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">statement value: [[d:Q533047|Q533047/rose]]</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z6830|<u>Find lexemes for an item</u>]] searches for lexemes that are related to a given item by a given property. (Even though the relationships exist between a ''lexeme sense'' and an item, Wikidata's API, and this function, return references to the ''lexeme(s)'' that contain the sense(s).)
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''' '''2''': Calling [[Z6830|<u>Find lexemes for an item</u>]] with [[d:Q533047|Q533047/rose]] (the color), [[d:Property:P5137|P5137/item for this sense]], and [[Z1002|<u>Z1002/English</u>]] returns a list containing the lexeme reference for [[d:Lexeme:L18379|L18379/rose]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Calling the function with [[d:Q102231|Q102231/rose]] (the flower) or with [[d:Q34687|Q34687/Rosa ]] (the biological taxon) as the first argument also returns the lexeme [[d:Lexeme:L18379|L18379/rose]], because that lexeme is related (via its 3 senses) to all 3 of those items.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''' '''3''': Calling [[Z6830|<u>Find lexemes for an item</u>]] with [[d:Q55|Q55/Netherlands]], [[d:Property:P6271|P6271/demonym of]], and [[Z1002|<u>Z1002/English</u>]] returns a list containing the [[Z6095|<u>Wikidata lexeme reference</u>]] for [[d:Lexeme:L34519|L34519/Dutch]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For an example in which [[Z6830|<u>Find lexemes for an item</u>]] is used in generating a natural language phrase, please see the ''Function of the Week'' section in {{ll|Wikifunctions:Status updates/2025-02-26}}.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Function: [[Z6831|<u>Find lexemes for a Wikidata lexeme sense</u>]] ===
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">Argument types: [[Z6096|<u>Wikidata lexeme sense reference</u>]], [[Z6092|<u>Wikidata property reference</u>]], [[Z60|<u>Natural language</u>]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">Return value type: List of [[Z6095|<u>Wikidata lexeme reference</u>]]</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikidata also captures useful relationships between lexemes senses and other lexeme senses, such as the relationships expressed using the property [[:d:Property:P8471|pertainym of]], which links an adjective sense to a related noun sense (e.g. lunar → moon), or an adverb sense to a related adjective sense (e.g. slowly → slow).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[Z6831|<u>Find lexemes for a Wikidata lexeme sense</u>]] searches for lexemes that are related to a given lexeme sense by a given property, such as [[:d:Property:P8471|pertainym of]]. (Even though the relationships exist between pairs of ''lexeme senses'', Wikidata's API, and this function, return references to the ''lexeme(s)'' that contain the target sense(s).)
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== User interface ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Selectors ===
</div>
[[File:Selecting a lexeme for "goose".png|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Fig. 1. Selecting a lexeme for "goose"</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
Selectors make it possible, in Wikifunctions' user interface, to select an entity to be used.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">For example, when the user types a partial keyword in Wikifunctions' lexeme selector, the selector will query Wikidata for lexemes that match that partial keyword. (The search matches the partial keyword against the lemmas of all the lexemes on Wikidata.)</span>
<span lang="en" dir="ltr" class="mw-content-ltr">It shows up to 10 of the current matches, and allows the user to pick one of them.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
It updates the matches list as more typing is done.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example''': Figure 1 shows the appearance of a lexeme selector, after typing in the 5 characters "goose".
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">At this point the user is presented with 4 matching lexemes to choose from.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">For an example in which this lexeme selector is used in preparing a function call, please see the ''Function of the Week'' section in {{ll|Wikifunctions:Status updates/2024-10-17}}.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that the presence of a Wikidata selector is indicated by the Wikidata icon (with vertical bars in red, green, and blue).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Once a choice has been made by the user, the selector will generate the appropriate internal representation of the selected item, depending on context:
</div>
# <span lang="en" dir="ltr" class="mw-content-ltr">an instance of the appropriate Wikidata reference type, if that's all that's needed, or</span>
# <span lang="en" dir="ltr" class="mw-content-ltr">a call to the appropriate fetch function, with an instance of the reference type as the argument passed to that call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Selectors are primarily used when providing the arguments for a function call in the UI, and the called function provides the relevant context.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">If the user is specifying a value for an argument having a Wikidata reference type as its type, the selector will provide (1).</span>
<span lang="en" dir="ltr" class="mw-content-ltr">In this case, no fetch is performed.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
If the argument in question has a Wikidata type as its type, the selector will provide (2), which will internally fetch the entire object and make it available to the called function.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Display elements ===
</div>
[[File:Compact view of lexeme form for "umbrellas".png|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Fig. 2. Compact view of the lexeme form for "umbrellas"</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions also provides a simplified, compact view of Wikidata entities.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">This view is displayed in read pages and when viewing the output of a function call.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">This compact view displays the Wikidata icon followed by a word-form associated with the Wikidata entity (e.g., a lemma from a lexeme, representation from a lexeme form, or label from an entity), in the user's language if available.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
The word-form is linked to the Wikidata page from which the entity has been fetched.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example:''' Figure 2 shows the compact view, below the word '''Result''', of the [[Z6824|<u>Wikidata lexeme form</u>]] for ''umbrellas'' (which is called the ''representation'' of the form).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This is the initial appearance of the result of running a function that returns a lexeme form.
</div>
[[File:Expanded view of lexeme form for "umbrellas".png|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Fig. 3. Expanded view of the lexeme form for "umbrellas"</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
If there's a need to explore the entity and its details, it can be expanded using the right ''chevron'' button (which looks like '>') preceding the element.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">The expanded view allows the user to understand what kind of representation is being used for this entity.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">The representation might employ a Wikidata reference type, a function call to the appropriate Wikidata fetch function, or the entire entity instance returned by that function call.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
In any case, the user will be able to expand, explore and navigate through its content.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Example:''' Figure 3 shows the expanded view of the lexeme form for ''umbrellas'', which results from clicking the chevron in Figure 2.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">Here we see the presentation of the entire instance of [[Z6824|<u>Wikidata lexeme form</u>]].</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
Each of the form's nested components with a chevron (e.g., <code>identity</code>, <code>lexeme</code>, etc.), can be expanded for further exploration.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Status of UI components for Wikidata entity types ===
</div>
* [[Z6825|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: available</span>
* [[Z6824|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme form</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: available</span>
* [[Z6826|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata lexeme sense</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: date of release not yet determined</span>
* [[Z6821|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata item</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: available</span>
* [[Z6822|<u><span lang="en" dir="ltr" class="mw-content-ltr">Wikidata property</span></u>]]
** <span lang="en" dir="ltr" class="mw-content-ltr">Display and selector: available</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Limitations of UI components for Wikidata entity types ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Visual discrimination'''.
Currently the Wikifunctions UI is lacking in visual discrimination between the various Wikidata entity types:
</div>
* <span lang="en" dir="ltr" class="mw-content-ltr">The selectors for the other entity types look very similar to that for Wikidata lexemes, shown in Figure 1.</span> <span lang="en" dir="ltr" class="mw-content-ltr">There is no explicit indication of which type is being selected.</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Workarounds: Usually one knows from context which type of thing is being selected.</span> <span lang="en" dir="ltr" class="mw-content-ltr">In addition, the content of the selection choices (in the drop-down list) varies depending on which type of thing is being selected.</span> <span lang="en" dir="ltr" class="mw-content-ltr">For example, in a ''lexeme'' selector each choice shows its lemma, language, and part of speech (as shown in Figure 1), whereas in a ''lexeme form'' selector each choice shows its word-form and grammatical features, along with information that identifies its containing lexeme.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">The compact views for the other entity types look the same as that for Wikidata lexemes, shown in Figure 2. (That is, they only show the Wikidata icon and a single word form.)</span>
** <span lang="en" dir="ltr" class="mw-content-ltr">Workaround: If it's not obvious from context, one can click the chevron to get the expanded view of the entity, which explicitly states its type, as shown in Figure 3.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Missing compact views'''. Because the display elements for [[Z6006|<u>Wikidata lexeme sense</u>]] and [[Z6003|<u>Wikidata statement</u>]] have not yet been fully deployed, the presentation of elements of these types can be rather space-consuming, and can detract from the readability of larger entities that contain them.
</div> <div lang="en" dir="ltr" class="mw-content-ltr">
This is especially true when a lexeme, lexeme form, or lexeme sense contains a sizable list of statements.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Mismatch in status'''. Even though the fetch function is available for [[Z6826|<u>Wikidata lexeme sense</u>]], the selector for that type is not yet available.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Appendix: an instance of Wikidata lexeme ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This example is introduced in the ''Example'' subsection of the ''Wikidata types'' section.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It shows a specific instance of Wikidata lexeme, which has been fetched from [[:d:Lexeme:L3435|L3435 on Wikidata]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The right column shows the formal ZObject representation (in canonical form); the left column, for readability, shows the same content with English labels for each of the ZObject's elements.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Wikifunctions’ ZObject representation is presented in {{ll|Wikifunctions:Function model}}; we do not explain the details of the representation here.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
The example has been shortened by omitting some content, as indicated by ellipses.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For readability, it also omits the element type indication that normally appears in the first position of each list in canonical form.
</div>
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "Wikidata lexeme",
"identity": {
"type": "Wikidata lexeme reference",
"Wikidata lexeme id": "L3435"
},
"lemmas": {
"type": "Multilingual text",
"texts": [
{
"type": "Monolingual text",
"language": "English",
"text": "umbrella"
}
]
},
"language": "English",
"lexical category": {
"type": "Wikidata item reference",
/* Wikidata item for "noun": */
"Wikidata item id": "Q1084"
},
"statements": [
{
"type": "Wikidata statement",
"subject": {
"type": "Wikidata lexeme reference",
"Wikidata lexeme id": "L3435"
},
"predicate": {
"type": "Wikidata property reference",
/* Oxford English Dictionary ID */
"Wikidata property id": "P5275"
},
"value": "208852",
...
},
...
],
"senses": [
{
"type": "Wikidata lexeme sense",
"identity": {
"type": "Wikidata lexeme sense reference",
"Wikidata lexeme sense id": "L3435-S1"
},
"glosses": {
"type": "Multilingual text",
"texts": [
{
"type": "Monolingual text",
"language": "Spanish",
"text": "utensilio empleado para cubrirse de la lluvia"
}
]
},
"statements": [
...
]
}
],
"forms": [
{
"type": "Wikidata lexeme form",
"identity": {
"type": "Wikidata lexeme form reference",
"Wikidata lexeme form id": "L3435-F1"
},
"lexeme": {
"type": "Wikidata lexeme reference",
"Wikidata lexeme id": "L3435"
},
"representations": {
"type": "Multilingual text",
"texts": [
{
"type": "Monolingual text",
"language": "English",
"text": "umbrella"
}
]
},
"grammatical features": [
{
"type": "Wikidata item reference",
/* Wikidata item for "singular": */
"Wikidata item id": "Q110786"
}
],
"statements": [
/* (empty list) */
]
},
...
]
}
</syntaxhighlight>
| <syntaxhighlight lang="json" line="line">{
"Z1K1": "Z6005",
"Z6005K1": {
"Z1K1": "Z6095",
"Z6095K1": "L3435"
},
"Z6005K2": {
"Z1K1": "Z12",
"Z12K1": [
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "umbrella"
}
]
},
"Z6005K3": "Z1002",
"Z6005K4": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z6005K5": [
{
"Z1K1": "Z6003",
"Z6003K1": {
"Z1K1": "Z6095",
"Z6095K1": "L3435"
},
"Z6003K2": {
"Z1K1": "Z6092",
"Z6092K1": "P5275"
},
"Z6003K3": "208852",
...
},
...
],
"Z6005K6": [
{
"Z1K1": "Z6006",
"Z6006K1": {
"Z1K1": "Z6096",
"Z6096K1": "L3435-S1"
},
"Z6006K2": {
"Z1K1": "Z12",
"Z12K1": [
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "utensilio empleado para cubrirse de la lluvia"
}
]
},
"Z6006K3": [
...
]
}
],
"Z6005K7": [
{
"Z1K1": "Z6004",
"Z6004K1": {
"Z1K1": "Z6094",
"Z6094K1": "L3435-F1"
},
"Z6004K2": {
"Z1K1": "Z6095",
"Z6095K1": "L3435"
},
"Z6004K3": {
"Z1K1": "Z12",
"Z12K1": [
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "umbrella"
}
]
},
"Z6004K4": [
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z6004K5": [
]
},
...
]
}
</syntaxhighlight>
|}
[[Category:Wikidata{{#translation:}}| ]]
[[Category:Technical documentation{{#translation:}}]]
kbqw7b2s6duquugcx0ldbzc9pg4zfio
Translations:Wikifunctions:Support for Wikidata content/1/zh-hans
1198
85479
282259
2026-06-11T13:05:54Z
七八年再来一次
10776
Created page with "维基函数支持检索并使用维基数据的内容,包括主要包含在“条目”中的百科内容,以及包含在“词素、词素形式”和“词素释义”中的词典内容。"
282259
wikitext
text/x-wiki
维基函数支持检索并使用维基数据的内容,包括主要包含在“条目”中的百科内容,以及包含在“词素、词素形式”和“词素释义”中的词典内容。
lmt20xurxk5c7q5udco4hih76zh8alo
Translations:Wikifunctions:Support for Wikidata content/165/zh-hans
1198
85480
282261
2026-06-11T13:07:37Z
七八年再来一次
10776
Created page with "由于这四种内容类型的实例可能包含“陈述”,维基函数也包括对“陈述”及其组成部分的支持,包括“属性”,“陈述等级”,“限定词”以及(即将推出的)“引用”。"
282261
wikitext
text/x-wiki
由于这四种内容类型的实例可能包含“陈述”,维基函数也包括对“陈述”及其组成部分的支持,包括“属性”,“陈述等级”,“限定词”以及(即将推出的)“引用”。
073w0qlfpvpojmn2ffuzseqz7yb8epj
Translations:Wikifunctions:WASM, Rust, and possibilities related thereto/Page display title/zh-hans
1198
85481
282263
2026-06-11T13:11:52Z
七八年再来一次
10776
Created page with "维基函数:WASM、Rust 和随附的可能性"
282263
wikitext
text/x-wiki
维基函数:WASM、Rust 和随附的可能性
iizjpf1emy395i72tymt2f4f6t5ifkc
Wikifunctions:WASM, Rust, and possibilities related thereto/zh-hans
4
85482
282264
2026-06-11T13:11:56Z
七八年再来一次
10776
Created page with "维基函数:WASM、Rust 和随附的可能性"
282264
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
<div lang="en" dir="ltr" class="mw-content-ltr">
== WASM ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Executed code (''i.e.'', user-written code snippets in Python or JavaScript) is run inside of WebAssembly (WASM). Specifically, the WebAssembly System Interface (WASI) provides the runtime and hooks to relevant system calls.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, the function-evaluator ships full interpreters for Python and JavaScript, compiled to WASM.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">To facilitate WASM compilation, the AW team has chosen RustPython and wasmedge-quickjs as the current interpreters of choice.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the features and syntax in the Python and JS executors don't map neatly onto more mainstream implementations (CPython, Node/V8, ''etc.'').
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of compiling ''interpreters'', it is also possible to compile (at least) JavaScript code directly to WASM. Here are some projects that are currently doing this:
</div>
* [https://porffor.dev porffor]
* [https://github.com/drogus/jawsm jawsm]
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the core executor code could be pre-compiled to WASM, potentially allowing that code to remain more up-to-date with mainstream JS implementations.
</div>
[[Category:Technical documentation{{#translation:}}]]
m3rkwwy2vmr0942hk755kyvv5w9m5mc
282266
282264
2026-06-11T13:12:02Z
七八年再来一次
10776
Created page with "== WASM =="
282266
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
== WASM ==
<div lang="en" dir="ltr" class="mw-content-ltr">
Executed code (''i.e.'', user-written code snippets in Python or JavaScript) is run inside of WebAssembly (WASM). Specifically, the WebAssembly System Interface (WASI) provides the runtime and hooks to relevant system calls.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, the function-evaluator ships full interpreters for Python and JavaScript, compiled to WASM.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">To facilitate WASM compilation, the AW team has chosen RustPython and wasmedge-quickjs as the current interpreters of choice.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the features and syntax in the Python and JS executors don't map neatly onto more mainstream implementations (CPython, Node/V8, ''etc.'').
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of compiling ''interpreters'', it is also possible to compile (at least) JavaScript code directly to WASM. Here are some projects that are currently doing this:
</div>
* [https://porffor.dev porffor]
* [https://github.com/drogus/jawsm jawsm]
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the core executor code could be pre-compiled to WASM, potentially allowing that code to remain more up-to-date with mainstream JS implementations.
</div>
[[Category:Technical documentation{{#translation:}}]]
sij5eiph9wyg4a3ambjqdz2q9u7anjg
282268
282266
2026-06-11T13:14:29Z
七八年再来一次
10776
Created page with "执行的代码(''也即'',用户编写的 Python 或 JavaScript 代码片段)在 WebAssembly(WASM)内部运行。具体来说,WebAssembly 系统接口(WASI)提供了运行时以及相关系统调用的钩子。"
282268
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
== WASM ==
执行的代码(''也即'',用户编写的 Python 或 JavaScript 代码片段)在 WebAssembly(WASM)内部运行。具体来说,WebAssembly 系统接口(WASI)提供了运行时以及相关系统调用的钩子。
<div lang="en" dir="ltr" class="mw-content-ltr">
Currently, the function-evaluator ships full interpreters for Python and JavaScript, compiled to WASM.
</div>
<span lang="en" dir="ltr" class="mw-content-ltr">To facilitate WASM compilation, the AW team has chosen RustPython and wasmedge-quickjs as the current interpreters of choice.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the features and syntax in the Python and JS executors don't map neatly onto more mainstream implementations (CPython, Node/V8, ''etc.'').
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of compiling ''interpreters'', it is also possible to compile (at least) JavaScript code directly to WASM. Here are some projects that are currently doing this:
</div>
* [https://porffor.dev porffor]
* [https://github.com/drogus/jawsm jawsm]
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the core executor code could be pre-compiled to WASM, potentially allowing that code to remain more up-to-date with mainstream JS implementations.
</div>
[[Category:Technical documentation{{#translation:}}]]
r38ze5fl8dxspa47mpedrekrr799ox8
282270
282268
2026-06-11T13:15:16Z
七八年再来一次
10776
Created page with "目前,该函数评估器提供了完整的 Python 和 JavaScript 解释器,并已编译成 WASM。"
282270
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
== WASM ==
执行的代码(''也即'',用户编写的 Python 或 JavaScript 代码片段)在 WebAssembly(WASM)内部运行。具体来说,WebAssembly 系统接口(WASI)提供了运行时以及相关系统调用的钩子。
目前,该函数评估器提供了完整的 Python 和 JavaScript 解释器,并已编译成 WASM。
<span lang="en" dir="ltr" class="mw-content-ltr">To facilitate WASM compilation, the AW team has chosen RustPython and wasmedge-quickjs as the current interpreters of choice.</span>
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the features and syntax in the Python and JS executors don't map neatly onto more mainstream implementations (CPython, Node/V8, ''etc.'').
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of compiling ''interpreters'', it is also possible to compile (at least) JavaScript code directly to WASM. Here are some projects that are currently doing this:
</div>
* [https://porffor.dev porffor]
* [https://github.com/drogus/jawsm jawsm]
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the core executor code could be pre-compiled to WASM, potentially allowing that code to remain more up-to-date with mainstream JS implementations.
</div>
[[Category:Technical documentation{{#translation:}}]]
3c9a23o701vwhrzv7c7w2ry675ffziy
282272
282270
2026-06-11T13:16:09Z
七八年再来一次
10776
Created page with "为了简化 WASM 的编译工作,AW 团队目前选择了 RustPython 和 wasmedge-quickjs 作为首选解释器。"
282272
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
== WASM ==
执行的代码(''也即'',用户编写的 Python 或 JavaScript 代码片段)在 WebAssembly(WASM)内部运行。具体来说,WebAssembly 系统接口(WASI)提供了运行时以及相关系统调用的钩子。
目前,该函数评估器提供了完整的 Python 和 JavaScript 解释器,并已编译成 WASM。
为了简化 WASM 的编译工作,AW 团队目前选择了 RustPython 和 wasmedge-quickjs 作为首选解释器。
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the features and syntax in the Python and JS executors don't map neatly onto more mainstream implementations (CPython, Node/V8, ''etc.'').
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of compiling ''interpreters'', it is also possible to compile (at least) JavaScript code directly to WASM. Here are some projects that are currently doing this:
</div>
* [https://porffor.dev porffor]
* [https://github.com/drogus/jawsm jawsm]
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the core executor code could be pre-compiled to WASM, potentially allowing that code to remain more up-to-date with mainstream JS implementations.
</div>
[[Category:Technical documentation{{#translation:}}]]
j1erqimsdni2r10k11xm6ek75xva25u
282274
282272
2026-06-11T13:17:05Z
七八年再来一次
10776
Created page with "这意味着 Python 和 JS 执行器的功能和语法无法与更主流的实现(CPython、Node/V8,''等等'')完全对应。"
282274
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
== WASM ==
执行的代码(''也即'',用户编写的 Python 或 JavaScript 代码片段)在 WebAssembly(WASM)内部运行。具体来说,WebAssembly 系统接口(WASI)提供了运行时以及相关系统调用的钩子。
目前,该函数评估器提供了完整的 Python 和 JavaScript 解释器,并已编译成 WASM。
为了简化 WASM 的编译工作,AW 团队目前选择了 RustPython 和 wasmedge-quickjs 作为首选解释器。
这意味着 Python 和 JS 执行器的功能和语法无法与更主流的实现(CPython、Node/V8,''等等'')完全对应。
<div lang="en" dir="ltr" class="mw-content-ltr">
Instead of compiling ''interpreters'', it is also possible to compile (at least) JavaScript code directly to WASM. Here are some projects that are currently doing this:
</div>
* [https://porffor.dev porffor]
* [https://github.com/drogus/jawsm jawsm]
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the core executor code could be pre-compiled to WASM, potentially allowing that code to remain more up-to-date with mainstream JS implementations.
</div>
[[Category:Technical documentation{{#translation:}}]]
abb9ahp0yltu8tkiiia8a06sp8ov197
282276
282274
2026-06-11T13:22:44Z
七八年再来一次
10776
Created page with "除了编译''解释器''之外,还可以直接编译(起码)JavaScript 代码为 WASM。以下是目下正如此的一些项目:"
282276
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
== WASM ==
执行的代码(''也即'',用户编写的 Python 或 JavaScript 代码片段)在 WebAssembly(WASM)内部运行。具体来说,WebAssembly 系统接口(WASI)提供了运行时以及相关系统调用的钩子。
目前,该函数评估器提供了完整的 Python 和 JavaScript 解释器,并已编译成 WASM。
为了简化 WASM 的编译工作,AW 团队目前选择了 RustPython 和 wasmedge-quickjs 作为首选解释器。
这意味着 Python 和 JS 执行器的功能和语法无法与更主流的实现(CPython、Node/V8,''等等'')完全对应。
除了编译''解释器''之外,还可以直接编译(起码)JavaScript 代码为 WASM。以下是目下正如此的一些项目:
* [https://porffor.dev porffor]
* [https://github.com/drogus/jawsm jawsm]
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the core executor code could be pre-compiled to WASM, potentially allowing that code to remain more up-to-date with mainstream JS implementations.
</div>
[[Category:Technical documentation{{#translation:}}]]
q6x133npk2rk7r7rl5q62oujlf11a1m
282278
282276
2026-06-11T13:22:50Z
七八年再来一次
10776
282278
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
== WASM ==
执行的代码(''也即'',用户编写的 Python 或 JavaScript 代码片段)在 WebAssembly(WASM)内部运行。具体来说,WebAssembly 系统接口(WASI)提供了运行时以及相关系统调用的钩子。
目前,该函数评估器提供了完整的 Python 和 JavaScript 解释器,并已编译成 WASM。
为了简化 WASM 的编译工作,AW 团队目前选择了 RustPython 和 wasmedge-quickjs 作为首选解释器。
这意味着 Python 和 JS 执行器的功能和语法无法与更主流的实现(CPython、Node/V8,''等等'')完全对应。
除了编译''解释器''外,还可以直接编译(起码)JavaScript 代码为 WASM。以下是目下正如此的一些项目:
* [https://porffor.dev porffor]
* [https://github.com/drogus/jawsm jawsm]
<div lang="en" dir="ltr" class="mw-content-ltr">
This means that the core executor code could be pre-compiled to WASM, potentially allowing that code to remain more up-to-date with mainstream JS implementations.
</div>
[[Category:Technical documentation{{#translation:}}]]
77zrkag2h3mtbwkafcozud3718hl5o2
282280
282278
2026-06-11T13:24:20Z
七八年再来一次
10776
Created page with "这意味着核心执行器代码可以预编译为 WASM,从而可能使该代码与主流 JavaScript 实现间留有更紧密的协同。"
282280
wikitext
text/x-wiki
<languages />
{{Technical documentation navbox}}
== WASM ==
执行的代码(''也即'',用户编写的 Python 或 JavaScript 代码片段)在 WebAssembly(WASM)内部运行。具体来说,WebAssembly 系统接口(WASI)提供了运行时以及相关系统调用的钩子。
目前,该函数评估器提供了完整的 Python 和 JavaScript 解释器,并已编译成 WASM。
为了简化 WASM 的编译工作,AW 团队目前选择了 RustPython 和 wasmedge-quickjs 作为首选解释器。
这意味着 Python 和 JS 执行器的功能和语法无法与更主流的实现(CPython、Node/V8,''等等'')完全对应。
除了编译''解释器''外,还可以直接编译(起码)JavaScript 代码为 WASM。以下是目下正如此的一些项目:
* [https://porffor.dev porffor]
* [https://github.com/drogus/jawsm jawsm]
这意味着核心执行器代码可以预编译为 WASM,从而可能使该代码与主流 JavaScript 实现间留有更紧密的协同。
[[Category:Technical documentation{{#translation:}}]]
i1tlkhnxacudmwqgwum462q9dpjjtjt
Translations:Wikifunctions:WASM, Rust, and possibilities related thereto/1/zh-hans
1198
85483
282265
2026-06-11T13:11:57Z
七八年再来一次
10776
Created page with "== WASM =="
282265
wikitext
text/x-wiki
== WASM ==
1oedy79oph85rvzd0ic0axov8y0u755
Translations:Wikifunctions:WASM, Rust, and possibilities related thereto/2/zh-hans
1198
85484
282267
2026-06-11T13:14:25Z
七八年再来一次
10776
Created page with "执行的代码(''也即'',用户编写的 Python 或 JavaScript 代码片段)在 WebAssembly(WASM)内部运行。具体来说,WebAssembly 系统接口(WASI)提供了运行时以及相关系统调用的钩子。"
282267
wikitext
text/x-wiki
执行的代码(''也即'',用户编写的 Python 或 JavaScript 代码片段)在 WebAssembly(WASM)内部运行。具体来说,WebAssembly 系统接口(WASI)提供了运行时以及相关系统调用的钩子。
p5uaq5ropfgcq8w1o0ahqn4stusvvnz
Translations:Wikifunctions:WASM, Rust, and possibilities related thereto/3/zh-hans
1198
85485
282269
2026-06-11T13:15:13Z
七八年再来一次
10776
Created page with "目前,该函数评估器提供了完整的 Python 和 JavaScript 解释器,并已编译成 WASM。"
282269
wikitext
text/x-wiki
目前,该函数评估器提供了完整的 Python 和 JavaScript 解释器,并已编译成 WASM。
ckow9xq3i7oig5a3jodsnksu4hbby9h
Translations:Wikifunctions:WASM, Rust, and possibilities related thereto/6/zh-hans
1198
85486
282271
2026-06-11T13:16:05Z
七八年再来一次
10776
Created page with "为了简化 WASM 的编译工作,AW 团队目前选择了 RustPython 和 wasmedge-quickjs 作为首选解释器。"
282271
wikitext
text/x-wiki
为了简化 WASM 的编译工作,AW 团队目前选择了 RustPython 和 wasmedge-quickjs 作为首选解释器。
mvy2yta19hmky3t276clkz2h516re58
Translations:Wikifunctions:WASM, Rust, and possibilities related thereto/7/zh-hans
1198
85487
282273
2026-06-11T13:17:01Z
七八年再来一次
10776
Created page with "这意味着 Python 和 JS 执行器的功能和语法无法与更主流的实现(CPython、Node/V8,''等等'')完全对应。"
282273
wikitext
text/x-wiki
这意味着 Python 和 JS 执行器的功能和语法无法与更主流的实现(CPython、Node/V8,''等等'')完全对应。
ssfniwpbg5rl17cpg1x87ggr3wpbpl8
Translations:Wikifunctions:WASM, Rust, and possibilities related thereto/4/zh-hans
1198
85488
282275
2026-06-11T13:22:40Z
七八年再来一次
10776
Created page with "除了编译''解释器''之外,还可以直接编译(起码)JavaScript 代码为 WASM。以下是目下正如此的一些项目:"
282275
wikitext
text/x-wiki
除了编译''解释器''之外,还可以直接编译(起码)JavaScript 代码为 WASM。以下是目下正如此的一些项目:
pftp7a25e8wmrncox45rkhkt1qhd2ig
282277
282275
2026-06-11T13:22:46Z
七八年再来一次
10776
282277
wikitext
text/x-wiki
除了编译''解释器''外,还可以直接编译(起码)JavaScript 代码为 WASM。以下是目下正如此的一些项目:
rvgyv27b432jifsb2nwetpxi2a0j1l7
Translations:Wikifunctions:WASM, Rust, and possibilities related thereto/5/zh-hans
1198
85489
282279
2026-06-11T13:24:16Z
七八年再来一次
10776
Created page with "这意味着核心执行器代码可以预编译为 WASM,从而可能使该代码与主流 JavaScript 实现间留有更紧密的协同。"
282279
wikitext
text/x-wiki
这意味着核心执行器代码可以预编译为 WASM,从而可能使该代码与主流 JavaScript 实现间留有更紧密的协同。
3jl4dgbx4owgd92a1hpghnbmrbkdo3q
Translations:Help:Special pages/Page display title/zh-hans
1198
85490
282281
2026-06-11T13:28:44Z
七八年再来一次
10776
Created page with "帮助:特殊页面"
282281
wikitext
text/x-wiki
帮助:特殊页面
9zeqrv8hgltbt36z3l51fn8y5005ynm
Help:Special pages/zh-hans
12
85491
282282
2026-06-11T13:28:48Z
七八年再来一次
10776
Created page with "帮助:特殊页面"
282282
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Special pages''' are pages on Wikifunctions generated by the [[mw:|MediaWiki software]] for special reasons. These pages are found in the special namespace, which is a namespace of pages that cannot be directly edited. A list of all existent special pages on this wiki is available at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Editing a special page ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Special pages cannot be directly edited, but system messages in the MediaWiki namespace are able to be edited by administrators and interface administrators. Pages in the MediaWiki namespace are system messages, and making changes to them will also cause changes to the MediaWiki interface.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Example ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, [[Special:BadTitle]] (which appears as a redlink but is a valid special page) can be edited by an administrator or interface administrator by editing the system message at [[MediaWiki:Badtitletext]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Transclusion of a special page ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are a few special pages on Wikifunctions that can be transcluded by adding <code><nowiki>{{Special:PageName}}</nowiki></code>, where "PageName" should be replaced with the name of the special page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Examples ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChanges]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChangesLinked/Z12863]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
k7isnalox19qvju1xybca34sow5srs8
282284
282282
2026-06-11T13:31:34Z
七八年再来一次
10776
Created page with "'''特殊页面'''是维基函数上由[[$1|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见$2。"
282284
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见[[Special:SpecialPages]]。
<div lang="en" dir="ltr" class="mw-content-ltr">
== Editing a special page ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Special pages cannot be directly edited, but system messages in the MediaWiki namespace are able to be edited by administrators and interface administrators. Pages in the MediaWiki namespace are system messages, and making changes to them will also cause changes to the MediaWiki interface.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Example ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, [[Special:BadTitle]] (which appears as a redlink but is a valid special page) can be edited by an administrator or interface administrator by editing the system message at [[MediaWiki:Badtitletext]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Transclusion of a special page ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are a few special pages on Wikifunctions that can be transcluded by adding <code><nowiki>{{Special:PageName}}</nowiki></code>, where "PageName" should be replaced with the name of the special page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Examples ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChanges]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChangesLinked/Z12863]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
dpwwgbi8xywqk5mpf1pbn7q2478ik72
282286
282284
2026-06-11T13:31:47Z
七八年再来一次
10776
Created page with "== 编辑一个特殊页面 =="
282286
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见[[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
Special pages cannot be directly edited, but system messages in the MediaWiki namespace are able to be edited by administrators and interface administrators. Pages in the MediaWiki namespace are system messages, and making changes to them will also cause changes to the MediaWiki interface.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Example ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, [[Special:BadTitle]] (which appears as a redlink but is a valid special page) can be edited by an administrator or interface administrator by editing the system message at [[MediaWiki:Badtitletext]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Transclusion of a special page ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are a few special pages on Wikifunctions that can be transcluded by adding <code><nowiki>{{Special:PageName}}</nowiki></code>, where "PageName" should be replaced with the name of the special page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Examples ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChanges]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChangesLinked/Z12863]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
iz6dm8dz6awqdxjq3olnoda7kcmwxu1
282289
282286
2026-06-11T13:35:32Z
七八年再来一次
10776
Created page with "特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。"
282289
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见[[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
<div lang="en" dir="ltr" class="mw-content-ltr">
For example, [[Special:BadTitle]] (which appears as a redlink but is a valid special page) can be edited by an administrator or interface administrator by editing the system message at [[MediaWiki:Badtitletext]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Transclusion of a special page ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are a few special pages on Wikifunctions that can be transcluded by adding <code><nowiki>{{Special:PageName}}</nowiki></code>, where "PageName" should be replaced with the name of the special page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Examples ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChanges]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChangesLinked/Z12863]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
bubcy18ailnrl2t4zbjislfy64ow0q5
282291
282289
2026-06-11T13:38:17Z
七八年再来一次
10776
Created page with "例如,$1(显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 $2 编辑系统消息进行编辑。"
282291
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见[[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<div lang="en" dir="ltr" class="mw-content-ltr">
== Transclusion of a special page ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are a few special pages on Wikifunctions that can be transcluded by adding <code><nowiki>{{Special:PageName}}</nowiki></code>, where "PageName" should be replaced with the name of the special page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Examples ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChanges]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChangesLinked/Z12863]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
rw4prq64brszn4xqhhxycio13xi6m8y
282293
282291
2026-06-11T13:38:44Z
七八年再来一次
10776
282293
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<div lang="en" dir="ltr" class="mw-content-ltr">
== Transclusion of a special page ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are a few special pages on Wikifunctions that can be transcluded by adding <code><nowiki>{{Special:PageName}}</nowiki></code>, where "PageName" should be replaced with the name of the special page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Examples ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChanges]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChangesLinked/Z12863]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
ej1a7ulhz8rizokj1qmgya2mgpopfk4
282295
282293
2026-06-11T13:40:14Z
七八年再来一次
10776
Created page with "== 特殊页面的嵌入 =="
282295
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 特殊页面的嵌入 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
There are a few special pages on Wikifunctions that can be transcluded by adding <code><nowiki>{{Special:PageName}}</nowiki></code>, where "PageName" should be replaced with the name of the special page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Examples ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChanges]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChangesLinked/Z12863]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
jnkfbr6u3bxstk41gn7fuadtlcqn3rc
282297
282295
2026-06-11T13:40:27Z
七八年再来一次
10776
282297
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入特殊页面 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
There are a few special pages on Wikifunctions that can be transcluded by adding <code><nowiki>{{Special:PageName}}</nowiki></code>, where "PageName" should be replaced with the name of the special page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Examples ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChanges]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChangesLinked/Z12863]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
evt1uxj8kdpf4d8rpg755wjyjr7nbrh
282299
282297
2026-06-11T13:40:37Z
七八年再来一次
10776
282299
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
There are a few special pages on Wikifunctions that can be transcluded by adding <code><nowiki>{{Special:PageName}}</nowiki></code>, where "PageName" should be replaced with the name of the special page.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Examples ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChanges]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChangesLinked/Z12863]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
b3t891wnd6bvlkjbui2fr0j5q8xn9vz
282301
282299
2026-06-11T13:42:28Z
七八年再来一次
10776
Created page with "维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。"
282301
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Examples ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChanges]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChangesLinked/Z12863]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
tjwb87cunkjankv7u18ysz626i08316
282303
282301
2026-06-11T13:42:47Z
七八年再来一次
10776
Created page with "=== 例 ==="
282303
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChanges]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChangesLinked/Z12863]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
tr81y4s6144ky7pqqsaqprzhq9sgrn2
282305
282303
2026-06-11T13:45:51Z
七八年再来一次
10776
Created page with "当插入 $1 时,会生成下框中所示内容:"
282305
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
When transcluding [[Special:RecentChangesLinked/Z12863]], that would produce the content shown in the box below:
</div>
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
ce8m2iaphc16ky3v8xgmeplvov4nhs0
282307
282305
2026-06-11T13:46:23Z
七八年再来一次
10776
Created page with "当插入 $1 时,会生成如下框中所示的内容:"
282307
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Problems with transcluding ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
5khgddc987xxfi3nmei8u7lwy796lva
282309
282307
2026-06-11T13:47:27Z
七八年再来一次
10776
Created page with "=== 嵌入的问题 ==="
282309
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
<div lang="en" dir="ltr" class="mw-content-ltr">
Many special pages cannot have its contents read when transcluding it. This would result in only a link to the special page. For example, when transcluding [[Special:SpecialPages]], that would produce:
</div>
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
4eh0rdopqpra9dxtsnz81n74wtllaip
282311
282309
2026-06-11T13:49:42Z
七八年再来一次
10776
Created page with "许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 $1 时,将生成:"
282311
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 [[Special:SpecialPages]] 时,将生成:
{{Special:SpecialPages}}
<div lang="en" dir="ltr" class="mw-content-ltr">
The above transclusion is a link to the special page rather than its contents.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Valid and invalid special pages ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
ryh4wbxyiiqo2dbsocam2qehqo7hmdz
282314
282311
2026-06-11T13:50:45Z
七八年再来一次
10776
Created page with "上面嵌入的是一指向该特殊页面的链接而非其内容本身。"
282314
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 [[Special:SpecialPages]] 时,将生成:
{{Special:SpecialPages}}
上面嵌入的是一指向该特殊页面的链接而非其内容本身。
<span id="Valid_and_invalid_special_pages"></span>
== 有效的和无效的特殊页面 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Valid special pages ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
2p4og002oeeawcz5es8qjgdn3c9kkw0
282316
282314
2026-06-11T13:50:59Z
七八年再来一次
10776
Created page with "=== 有效的特殊页面 ==="
282316
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 [[Special:SpecialPages]] 时,将生成:
{{Special:SpecialPages}}
上面嵌入的是一指向该特殊页面的链接而非其内容本身。
<span id="Valid_and_invalid_special_pages"></span>
== 有效的和无效的特殊页面 ==
<span id="Valid_special_pages"></span>
=== 有效的特殊页面 ===
<div lang="en" dir="ltr" class="mw-content-ltr">
There are multiple special pages that exist on Wikifunctions, and a list can be found at [[Special:SpecialPages]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
ewy54lhwm3yz5zlt3d2nzh9yo87wjj3
282318
282316
2026-06-11T13:51:29Z
七八年再来一次
10776
Created page with "Wikifunctions 上存有多个特殊页面,其列表可在 $1 找到。"
282318
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 [[Special:SpecialPages]] 时,将生成:
{{Special:SpecialPages}}
上面嵌入的是一指向该特殊页面的链接而非其内容本身。
<span id="Valid_and_invalid_special_pages"></span>
== 有效的和无效的特殊页面 ==
<span id="Valid_special_pages"></span>
=== 有效的特殊页面 ===
Wikifunctions 上存有多个特殊页面,其列表可在 [[Special:SpecialPages]] 找到。
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
40z3v35wo1sks46lcbpbb2wys3rg6zr
282320
282318
2026-06-11T13:51:47Z
七八年再来一次
10776
282320
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 [[Special:SpecialPages]] 时,将生成:
{{Special:SpecialPages}}
上面嵌入的是一指向该特殊页面的链接而非其内容本身。
<span id="Valid_and_invalid_special_pages"></span>
== 有效的和无效的特殊页面 ==
<span id="Valid_special_pages"></span>
=== 有效的特殊页面 ===
维基函数上存有多个特殊页面,其列表可在 [[Special:SpecialPages]] 找到。
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Invalid special pages ===
</div>
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
buqi20eb56629pyz78z5qc8k7ulupyc
282322
282320
2026-06-11T13:51:52Z
七八年再来一次
10776
Created page with "=== 不可用的特殊页面 ==="
282322
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 [[Special:SpecialPages]] 时,将生成:
{{Special:SpecialPages}}
上面嵌入的是一指向该特殊页面的链接而非其内容本身。
<span id="Valid_and_invalid_special_pages"></span>
== 有效的和无效的特殊页面 ==
<span id="Valid_special_pages"></span>
=== 有效的特殊页面 ===
维基函数上存有多个特殊页面,其列表可在 [[Special:SpecialPages]] 找到。
<span id="Invalid_special_pages"></span>
=== 不可用的特殊页面 ===
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
crzyg5rp33kii3leit09n4qx0nx4z1z
282324
282322
2026-06-11T13:52:25Z
七八年再来一次
10776
282324
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 [[Special:SpecialPages]] 时,将生成:
{{Special:SpecialPages}}
上面嵌入的是一指向该特殊页面的链接而非其内容本身。
<span id="Valid_and_invalid_special_pages"></span>
== 有效的和无效的特殊页面 ==
<span id="Valid_special_pages"></span>
=== 有效的特殊页面 ===
维基函数上存有多个特殊页面,其列表可在 [[Special:SpecialPages]] 找到。
<span id="Invalid_special_pages"></span>
=== 无效的特殊页面 ===
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
<div lang="en" dir="ltr" class="mw-content-ltr">
Requesting an invalid special page will display a "No such special page" message. For example, [[Special:Special]] is an invalid special page, and clicking on it will not result in it being edited. The system message is available in the MediaWiki namespace, at [[MediaWiki:Nospecialpagetext]]. It looks like this:
</div>
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
l9k51sjwqg8een96gtaglvrhksb9qm9
282326
282324
2026-06-11T13:54:06Z
七八年再来一次
10776
Created page with "请求一个无效的特殊页面会显示“无此特殊页面”的消息。例如, $1 是一个无效的特殊页面,点击它不会导致该页面被编辑。该系统消息位于 MediaWiki 命名空间,$2 处。它就像这样:"
282326
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 [[Special:SpecialPages]] 时,将生成:
{{Special:SpecialPages}}
上面嵌入的是一指向该特殊页面的链接而非其内容本身。
<span id="Valid_and_invalid_special_pages"></span>
== 有效的和无效的特殊页面 ==
<span id="Valid_special_pages"></span>
=== 有效的特殊页面 ===
维基函数上存有多个特殊页面,其列表可在 [[Special:SpecialPages]] 找到。
<span id="Invalid_special_pages"></span>
=== 无效的特殊页面 ===
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
请求一个无效的特殊页面会显示“无此特殊页面”的消息。例如, [[Special:Special]] 是一个无效的特殊页面,点击它不会导致该页面被编辑。该系统消息位于 MediaWiki 命名空间,[[MediaWiki:Nospecialpagetext]] 处。它就像这样:
{{int:Nospecialpagetext}}
<div lang="en" dir="ltr" class="mw-content-ltr">
At the bottom of the system message, there is a button that directs you to [[Wikifunctions:Main Page]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
6o9xs466976kayrua8b98dt6xe35m7p
282328
282326
2026-06-11T13:55:12Z
七八年再来一次
10776
Created page with "在系统消息的底部,有一个按钮将你导向 $1。"
282328
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 [[Special:SpecialPages]] 时,将生成:
{{Special:SpecialPages}}
上面嵌入的是一指向该特殊页面的链接而非其内容本身。
<span id="Valid_and_invalid_special_pages"></span>
== 有效的和无效的特殊页面 ==
<span id="Valid_special_pages"></span>
=== 有效的特殊页面 ===
维基函数上存有多个特殊页面,其列表可在 [[Special:SpecialPages]] 找到。
<span id="Invalid_special_pages"></span>
=== 无效的特殊页面 ===
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
请求一个无效的特殊页面会显示“无此特殊页面”的消息。例如, [[Special:Special]] 是一个无效的特殊页面,点击它不会导致该页面被编辑。该系统消息位于 MediaWiki 命名空间,[[MediaWiki:Nospecialpagetext]] 处。它就像这样:
{{int:Nospecialpagetext}}
在系统消息的底部,有一个按钮将你导向 [[Wikifunctions:Main Page]]。
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
66yie7h28fwpaunmoy5zn10nix2que7
282330
282328
2026-06-11T13:56:12Z
七八年再来一次
10776
282330
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 [[Special:SpecialPages]] 时,将生成:
{{Special:SpecialPages}}
上面嵌入的是一指向该特殊页面的链接而非其内容本身。
<span id="Valid_and_invalid_special_pages"></span>
== 有效的和无效的特殊页面 ==
<span id="Valid_special_pages"></span>
=== 有效的特殊页面 ===
维基函数上存有多个特殊页面,其列表可在 [[Special:SpecialPages]] 找到。
<span id="Invalid_special_pages"></span>
=== 无效的特殊页面 ===
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
请求一个无效的特殊页面会显示“无此特殊页面”的消息。例如, [[Special:Special]] 是一个无效的特殊页面,点击它不会导致该页面被编辑。该系统消息位于媒体维基命名空间,[[MediaWiki:Nospecialpagetext]] 处。它就像这样:
{{int:Nospecialpagetext}}
在系统消息的底部,有一个按钮将你导向 [[Wikifunctions:Main Page]]。
<div lang="en" dir="ltr" class="mw-content-ltr">
== Linking problems ==
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
8tkak1f7til1c37fpe266hixeejo3z6
282332
282330
2026-06-11T13:57:08Z
七八年再来一次
10776
Created page with "== 链接问题 =="
282332
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 [[Special:SpecialPages]] 时,将生成:
{{Special:SpecialPages}}
上面嵌入的是一指向该特殊页面的链接而非其内容本身。
<span id="Valid_and_invalid_special_pages"></span>
== 有效的和无效的特殊页面 ==
<span id="Valid_special_pages"></span>
=== 有效的特殊页面 ===
维基函数上存有多个特殊页面,其列表可在 [[Special:SpecialPages]] 找到。
<span id="Invalid_special_pages"></span>
=== 无效的特殊页面 ===
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
请求一个无效的特殊页面会显示“无此特殊页面”的消息。例如, [[Special:Special]] 是一个无效的特殊页面,点击它不会导致该页面被编辑。该系统消息位于媒体维基命名空间,[[MediaWiki:Nospecialpagetext]] 处。它就像这样:
{{int:Nospecialpagetext}}
在系统消息的底部,有一个按钮将你导向 [[Wikifunctions:Main Page]]。
<span id="Linking_problems"></span>
== 链接问题 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
If a link to a non-existent special page (example: [[Special:RedLink]]) is added, it would be displayed as a red link. However, there is a problem, that being [[Special:BadTitle]] being displayed as a red link even though it is a valid special page.
</div>
[[Category:Help]]
27f75thv09au0fg9dczu2y5hps3dbut
282334
282332
2026-06-11T13:57:43Z
七八年再来一次
10776
Created page with "如果添加了一个指向不存在的特殊页面的链接(如:$1),该链接会显示为红链。然而,存在一个问题,即 $2 虽然是一个有效的特殊页面,却也被显示为红链。"
282334
wikitext
text/x-wiki
{{shortcut|[[WF:SP]]}}
<languages/>
'''特殊页面'''是维基函数上由[[mw:|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 [[Special:SpecialPages]]。
<span id="Editing_a_special_page"></span>
== 编辑一个特殊页面 ==
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
<span id="Example"></span>
=== 例 ===
例如,[[Special:BadTitle]](显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 [[MediaWiki:Badtitletext]] 编辑系统消息进行编辑。
<span id="Transclusion_of_a_special_page"></span>
== 嵌入一特殊页面 ==
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
<span id="Examples"></span>
=== 例 ===
当插入 [[Special:RecentChanges]] 时,会生成下框中所示内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">{{Special:RecentChanges}}</div>
当插入 [[Special:RecentChangesLinked/Z12863]] 时,会生成如下框中所示的内容:
<div style="border: 1px solid var(--border-color-subtle,#c8ccd1); padding:1em; max-height:300px; overflow:auto;">
{{Special:RecentChangesLinked/Z12863}}</div>
<span id="Problems_with_transcluding"></span>
=== 嵌入的问题 ===
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 [[Special:SpecialPages]] 时,将生成:
{{Special:SpecialPages}}
上面嵌入的是一指向该特殊页面的链接而非其内容本身。
<span id="Valid_and_invalid_special_pages"></span>
== 有效的和无效的特殊页面 ==
<span id="Valid_special_pages"></span>
=== 有效的特殊页面 ===
维基函数上存有多个特殊页面,其列表可在 [[Special:SpecialPages]] 找到。
<span id="Invalid_special_pages"></span>
=== 无效的特殊页面 ===
{{shortcut|[[WF:NSSP]]|[[WF:NOSUCHSPECIALPAGE]]}}
请求一个无效的特殊页面会显示“无此特殊页面”的消息。例如, [[Special:Special]] 是一个无效的特殊页面,点击它不会导致该页面被编辑。该系统消息位于媒体维基命名空间,[[MediaWiki:Nospecialpagetext]] 处。它就像这样:
{{int:Nospecialpagetext}}
在系统消息的底部,有一个按钮将你导向 [[Wikifunctions:Main Page]]。
<span id="Linking_problems"></span>
== 链接问题 ==
如果添加了一个指向不存在的特殊页面的链接(如:[[Special:RedLink]]),该链接会显示为红链。然而,存在一个问题,即 [[Special:BadTitle]] 虽然是一个有效的特殊页面,却也被显示为红链。
[[Category:Help]]
afhlymxrxv3kdh3q9tkniszfn4zghxw
Translations:Help:Special pages/1/zh-hans
1198
85492
282283
2026-06-11T13:31:29Z
七八年再来一次
10776
Created page with "'''特殊页面'''是维基函数上由[[$1|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见$2。"
282283
wikitext
text/x-wiki
'''特殊页面'''是维基函数上由[[$1|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见$2。
5jac1elj2nk1vynztccn3na78bz3rb8
282292
282283
2026-06-11T13:38:41Z
七八年再来一次
10776
282292
wikitext
text/x-wiki
'''特殊页面'''是维基函数上由[[$1|媒体维基软件]]出于特殊原因生成的页面。这些页面位于特殊命名空间中,该命名空间中的页面无法直接编辑。本维基中现存特殊页面的总表见 $2。
nckrem4ltvl35v3whjc7w898zhr7n89
Translations:Help:Special pages/2/zh-hans
1198
85493
282285
2026-06-11T13:31:43Z
七八年再来一次
10776
Created page with "== 编辑一个特殊页面 =="
282285
wikitext
text/x-wiki
== 编辑一个特殊页面 ==
8t90kgam0te5uqgn6xm4dzmfag6twzw
Translations:Help:Special pages/3/zh-hans
1198
85494
282287
2026-06-11T13:35:29Z
七八年再来一次
10776
Created page with "特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。"
282287
wikitext
text/x-wiki
特殊页面无法直接编辑,但媒体维基命名空间中的系统消息可由管理员和界面管理员进行编辑。媒体维基命名空间中的页面即为系统消息,对其进行修改也会导致媒体维基界面发生相应变化。
p1tol8euodeww0tylljic7o7uuewegh
Translations:Help:Special pages/4/zh-hans
1198
85495
282288
2026-06-11T13:35:32Z
七八年再来一次
10776
Created page with "=== 例 ==="
282288
wikitext
text/x-wiki
=== 例 ===
4mbw31bufq7p9afpjhdx2wpmmjyluyc
Translations:Help:Special pages/5/zh-hans
1198
85496
282290
2026-06-11T13:38:13Z
七八年再来一次
10776
Created page with "例如,$1(显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 $2 编辑系统消息进行编辑。"
282290
wikitext
text/x-wiki
例如,$1(显示为红链,但实际是一有效特殊页面)可由管理员或界面管理员通过在 $2 编辑系统消息进行编辑。
jaaaq7ju8qhfy5ofsy32al4sch4b8pe
Translations:Help:Special pages/6/zh-hans
1198
85497
282294
2026-06-11T13:40:10Z
七八年再来一次
10776
Created page with "== 特殊页面的嵌入 =="
282294
wikitext
text/x-wiki
== 特殊页面的嵌入 ==
8lfs8pio6s0aws8k8497iaxtgo2mcwu
282296
282294
2026-06-11T13:40:23Z
七八年再来一次
10776
282296
wikitext
text/x-wiki
== 嵌入特殊页面 ==
r612jnbcbkqluqtmieqxaku0z7l1wyn
282298
282296
2026-06-11T13:40:33Z
七八年再来一次
10776
282298
wikitext
text/x-wiki
== 嵌入一特殊页面 ==
kwr4tfz2xzga3w8rt39prr3l427amlu
Translations:Help:Special pages/7/zh-hans
1198
85498
282300
2026-06-11T13:42:24Z
七八年再来一次
10776
Created page with "维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。"
282300
wikitext
text/x-wiki
维基函数上有特殊页面几许,可以通过添加 <code><nowiki>{{Special:PageName}}</nowiki></code> 嵌入,其中“PageName”应替换为特殊页面名。
o36oqtvt8e520lt33pzd875tsynfe7k
Translations:Help:Special pages/8/zh-hans
1198
85499
282302
2026-06-11T13:42:43Z
七八年再来一次
10776
Created page with "=== 例 ==="
282302
wikitext
text/x-wiki
=== 例 ===
4mbw31bufq7p9afpjhdx2wpmmjyluyc
Translations:Help:Special pages/9/zh-hans
1198
85500
282304
2026-06-11T13:45:47Z
七八年再来一次
10776
Created page with "当插入 $1 时,会生成下框中所示内容:"
282304
wikitext
text/x-wiki
当插入 $1 时,会生成下框中所示内容:
h283b7qdwe3xgt6et6ymfaxx29k5a03
Translations:Help:Special pages/10/zh-hans
1198
85501
282306
2026-06-11T13:46:20Z
七八年再来一次
10776
Created page with "当插入 $1 时,会生成如下框中所示的内容:"
282306
wikitext
text/x-wiki
当插入 $1 时,会生成如下框中所示的内容:
edx8po6d9jc3s6tl9ng4h1719mjjahs
Translations:Help:Special pages/11/zh-hans
1198
85502
282308
2026-06-11T13:47:23Z
七八年再来一次
10776
Created page with "=== 嵌入的问题 ==="
282308
wikitext
text/x-wiki
=== 嵌入的问题 ===
t9mqulubo4wt7a4h8wjnoga6frua09t
Translations:Help:Special pages/12/zh-hans
1198
85503
282310
2026-06-11T13:49:38Z
七八年再来一次
10776
Created page with "许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 $1 时,将生成:"
282310
wikitext
text/x-wiki
许多特殊页面的内容在嵌入时无法被读取。这将导致仅显示指向该特殊页面的链接。例如,转录 $1 时,将生成:
iy910meuwpqcpp4vz7jthwgexqkq1yt
Translations:Help:Special pages/13/zh-hans
1198
85504
282312
2026-06-11T13:50:41Z
七八年再来一次
10776
Created page with "上面嵌入的是一指向该特殊页面的链接而非其内容本身。"
282312
wikitext
text/x-wiki
上面嵌入的是一指向该特殊页面的链接而非其内容本身。
sp6xlcqovjdutnu36r2vjlfs3o00kr5
Translations:Help:Special pages/14/zh-hans
1198
85505
282313
2026-06-11T13:50:42Z
七八年再来一次
10776
Created page with "== 有效的和无效的特殊页面 =="
282313
wikitext
text/x-wiki
== 有效的和无效的特殊页面 ==
paeh8tl3ntvbr4ycq14cw1avxzojxi6
Translations:Help:Special pages/15/zh-hans
1198
85506
282315
2026-06-11T13:50:55Z
七八年再来一次
10776
Created page with "=== 有效的特殊页面 ==="
282315
wikitext
text/x-wiki
=== 有效的特殊页面 ===
gpw3olw08ff71m0iwp8jc16cyus5okv
Translations:Help:Special pages/16/zh-hans
1198
85507
282317
2026-06-11T13:51:25Z
七八年再来一次
10776
Created page with "Wikifunctions 上存有多个特殊页面,其列表可在 $1 找到。"
282317
wikitext
text/x-wiki
Wikifunctions 上存有多个特殊页面,其列表可在 $1 找到。
n883znuiifk3hopmqmwe1r26f8cxcxh
282319
282317
2026-06-11T13:51:43Z
七八年再来一次
10776
282319
wikitext
text/x-wiki
维基函数上存有多个特殊页面,其列表可在 $1 找到。
ci8zacpybjdnvlhgv4e1g29en8wwkqt
Translations:Help:Special pages/17/zh-hans
1198
85508
282321
2026-06-11T13:51:48Z
七八年再来一次
10776
Created page with "=== 不可用的特殊页面 ==="
282321
wikitext
text/x-wiki
=== 不可用的特殊页面 ===
skh0mxjkq70nooohaquwbqgg464c2pe
282323
282321
2026-06-11T13:52:21Z
七八年再来一次
10776
282323
wikitext
text/x-wiki
=== 无效的特殊页面 ===
9l66tu7hu5gxuhn5ulq89orbqa2kjx6
Translations:Help:Special pages/18/zh-hans
1198
85509
282325
2026-06-11T13:54:03Z
七八年再来一次
10776
Created page with "请求一个无效的特殊页面会显示“无此特殊页面”的消息。例如, $1 是一个无效的特殊页面,点击它不会导致该页面被编辑。该系统消息位于 MediaWiki 命名空间,$2 处。它就像这样:"
282325
wikitext
text/x-wiki
请求一个无效的特殊页面会显示“无此特殊页面”的消息。例如, $1 是一个无效的特殊页面,点击它不会导致该页面被编辑。该系统消息位于 MediaWiki 命名空间,$2 处。它就像这样:
3waqrndezdrjnlum5aavwpmh7iezg1z
282329
282325
2026-06-11T13:56:08Z
七八年再来一次
10776
282329
wikitext
text/x-wiki
请求一个无效的特殊页面会显示“无此特殊页面”的消息。例如, $1 是一个无效的特殊页面,点击它不会导致该页面被编辑。该系统消息位于媒体维基命名空间,$2 处。它就像这样:
etibfqc63hd50q9tw2ju0mdxco72czy
Translations:Help:Special pages/19/zh-hans
1198
85510
282327
2026-06-11T13:55:08Z
七八年再来一次
10776
Created page with "在系统消息的底部,有一个按钮将你导向 $1。"
282327
wikitext
text/x-wiki
在系统消息的底部,有一个按钮将你导向 $1。
iaw1meyiiwjqu108ie1vnkrgqvqr71t
Translations:Help:Special pages/20/zh-hans
1198
85511
282331
2026-06-11T13:57:04Z
七八年再来一次
10776
Created page with "== 链接问题 =="
282331
wikitext
text/x-wiki
== 链接问题 ==
scc7fo0xkp9zu44ivvyi7gj76q52wkf
Translations:Help:Special pages/21/zh-hans
1198
85512
282333
2026-06-11T13:57:39Z
七八年再来一次
10776
Created page with "如果添加了一个指向不存在的特殊页面的链接(如:$1),该链接会显示为红链。然而,存在一个问题,即 $2 虽然是一个有效的特殊页面,却也被显示为红链。"
282333
wikitext
text/x-wiki
如果添加了一个指向不存在的特殊页面的链接(如:$1),该链接会显示为红链。然而,存在一个问题,即 $2 虽然是一个有效的特殊页面,却也被显示为红链。
9szu57drv7vpxaou2b3z5dep37mml93
Z36280
0
85513
282335
2026-06-11T14:36:35Z
GrounderUK
50
[[Z35910]]➕[[Z20]]
282335
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36280"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z35910",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z801",
"Z801K1": {
"Z1K1": "Z7",
"Z7K1": "Z35910",
"Z35910K1": {
"Z1K1": "Z7",
"Z7K1": "Z15142",
"Z15142K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z28231",
"Z28231K1": "Z801"
}
]
]
},
"Z35910K2": {
"Z1K1": "Z7",
"Z7K1": "Z15142",
"Z15142K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
"K1": [
"Z6",
"Wikifunctions",
"Abstract Wikipedia"
],
"K2": "N"
}
]
}
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z889",
"Z889K2": [
"Z99",
{
"Z1K1": "Z99",
"Z99K1": {
"Z1K1": "Z7",
"Z7K1": "Z801",
"Z801K1": "Wikifunctions"
}
},
{
"Z1K1": "Z99",
"Z99K1": {
"Z1K1": "Z7",
"Z7K1": "Z801",
"Z801K1": "Abstract Wikipedia"
}
}
],
"Z889K3": "Z29166"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "separate quoted calls for each string"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
sent5l403z6br8zvnkliddib8c6hy6e
Z36281
0
85514
282336
2026-06-11T14:48:28Z
GrounderUK
50
[[Z35910]]➕[[Z20]]
282336
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36281"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z35910",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z801",
"Z801K1": {
"Z1K1": "Z7",
"Z7K1": "Z35910",
"Z35910K1": {
"Z1K1": "Z7",
"Z7K1": "Z15142",
"Z15142K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z28231",
"Z28231K1": "Z801"
}
]
]
},
"Z35910K2": {
"Z1K1": "Z7",
"Z7K1": "Z15142",
"Z15142K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
"K1": [
"Z1",
"Wikifunctions",
{
"Z1K1": "Z40",
"Z40K1": "Z42"
}
],
"K2": "not 'N'"
}
]
}
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z889",
"Z889K2": [
"Z99",
{
"Z1K1": "Z99",
"Z99K1": {
"Z1K1": "Z7",
"Z7K1": "Z801",
"Z801K1": [
"Z1",
"Wikifunctions",
{
"Z1K1": "Z40",
"Z40K1": "Z42"
}
]
}
}
],
"Z889K3": "Z29166"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "single quoted call echoes whole list"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
j0dq2mzv7ee6o9orpzcr9i5polcrlgt
Wikifunctions talk:Type proposals/Semantic unit
5
85515
282344
2026-06-11T17:35:22Z
Mahir256
38
Created page with "== Other possible types and objects == The following are lists of other entities defined in Ninai for the handling of Constructors. They were first assembled with the outputs of various <code>git grep</code> commands on the [https://gitlab.com/mahir256/ninai/ Ninai repository], and notes are provided below each about the nature of that declaration. Equivalents of many of these will be necessary, but levels of requirement will be marked as the notes below are filled in...."
282344
wikitext
text/x-wiki
== Other possible types and objects ==
The following are lists of other entities defined in Ninai for the handling of Constructors. They were first assembled with the outputs of various <code>git grep</code> commands on the [https://gitlab.com/mahir256/ninai/ Ninai repository], and notes are provided below each about the nature of that declaration.
Equivalents of many of these will be necessary, but levels of requirement will be marked as the notes below are filled in.
=== Classes ===
With those
* ninai/base/argumentfilters.py: class ArgumentFilterOptions(NamedTuple):
** ...
* ninai/base/constructor.py: class Constructor(NamedTuple):
** The "semantic unit" type is intended to be equivalent to this class.
* ninai/base/constructormainrenderer.py: class ConstructorMainRenderer(NamedTuple):
** ...
* ninai/base/constructorrenderer.py: class ConstructorRenderer(NamedTuple):
** ...
* ninai/base/constructorzipper.py: class ArgumentLevel(NamedTuple):
** ...
* ninai/base/constructorzipper.py: class ConstructorZipper(NamedTuple):
** ...
* ninai/base/context.py: class ContextEntry(NamedTuple):
** ...
* ninai/base/context.py: class Context(NamedTuple):
** ...
* ninai/base/coreargumentprocessor.py: class CoreArgumentProcessor(NamedTuple):
** ...
* ninai/base/coreargumentsrenderer.py: class CoreArgumentsRenderer(NamedTuple):
** ...
* ninai/base/framing.py: class MethodKey(NamedTuple):
** ...
* ninai/base/framing.py: class FramingKey(NamedTuple):
** ...
* ninai/base/framing.py: class FramingDict(NamedTuple):
** ...
* ninai/base/framing.py: class Framing(NamedTuple):
** ...
* ninai/base/interfaces.py: class CandidatePathNode(TypedDict): # due to XMLRPC serialization, must remain a TypedDict
** ...
* ninai/base/interfaces.py: class CatenaYieldingIterator(Protocol):
** ...
* ninai/base/interfaces.py: class SenseFindingFallback(CatenaYieldingIterator, Protocol):
** ...
* ninai/base/interfaces.py: class ArgumentFilterBasis(Protocol):
** ...
* ninai/base/interfaces.py: class ArgumentFilter(Protocol):
** ...
* ninai/base/interfaces.py: class ArgPreHook(Protocol):
** ...
* ninai/base/interfaces.py: class ArgPostHook(Protocol):
** ...
* ninai/base/interfaces.py: class PreHook(Protocol):
** ...
* ninai/base/interfaces.py: class PostHook(Protocol):
** ...
* ninai/base/interfaces.py: class Renderer(Protocol):
** ...
* ninai/base/interfaces.py: class SyntacticRoleFunction(Protocol):
** ...
* ninai/base/interfaces.py: class SenseRefinement(Protocol):
** ...
* ninai/base/interfaces.py: class Constructorify(Protocol):
** ...
* ninai/base/interfaces.py: class Transcribe(Protocol):
** ...
* ninai/base/interfaces.py: class BinominalCompoundCalque(Protocol):
** ...
* ninai/base/interfaces.py: class DerivationalCalqueFunction(Protocol):
** ...
* ninai/base/interfaces.py: class InitialCatenaProcessor(Protocol):
** ...
* ninai/base/interfaces.py: class ThematicInflectionAddition(Protocol):
** ...
* ninai/base/interfaces.py: class InflectionFunction(Protocol):
** ...
* ninai/base/interfaces.py: class ScopeOutputProcessor(Protocol):
** ...
* ninai/base/interfaces.py: class ThematicRelationlessProcessor(Protocol):
** ...
* ninai/base/interfaces.py: class NinaiError(Exception):
** ...
* ninai/base/interfaces.py: class RenderingPhase(IntEnum):
** ...
* ninai/base/interfaces.py: class CoreArgumentProcessingPhase(IntEnum):
** ...
* ninai/base/interfaces.py: class PreHookOperator(NamedTuple):
** ...
* ninai/base/interfaces.py: class MainRendererOperator(NamedTuple):
** ...
* ninai/base/interfaces.py: class PostHookOperator(NamedTuple):
** ...
* ninai/base/pausedrenderersupply.py: class PausedRendererSupply(NamedTuple):
** ...
* ninai/base/rendererarguments.py: class RendererArguments(NamedTuple):
** ...
* ninai/base/scopeargumentsrenderer.py: class ScopeArgumentsRenderer(NamedTuple):
** ...
* ninai/constructors/contexts/refcontext.py: class RefContextRenderer(NamedTuple):
** ...
* ninai/graph/__init__.py: class CatenaFromItemIdIterator:
** ...
* ninai/graph/__init__.py: class FallbackRunner:
** ...
* ninai/graph/calque.py: class VerboNominalSyntagmaCalque:
** ...
* ninai/graph/calque.py: class DerivationCalque:
** ...
* ninai/graph/calque.py: class EndocentricCompoundCalque:
** ...
* ninai/graph/calque.py: class CalqueIterator:
** ...
* ninai/graph/client.py: class CandidateProcessor:
** ...
* ninai/graph/client.py: class SenseFindingIterator:
** ...
* ninai/graph/cognate.py: class CognateIterator:
** ...
* ninai/graph/fallbacks.py: class CatenaZipperListIterator:
** ...
* ninai/graph/server.py: class GraphServer:
** ...
* ninai/graph/server.py: class ServerThread(threading.Thread):
** ...
* ninai/graph/server.py: class GraphServerRepl(cmd.Cmd):
** ...
* ninai/graph/transcribe.py: class TranscribeIterator:
** ...
* ninai/renderers/mul.py: class FinalPunctuationFunction(Protocol):
** ...
=== Type aliases ===
(May be initially incomplete, since not all type aliases may have been marked with the "TypeAlias" type annotation.
* ninai/base/constructorrenderer.py:RenderingPhaseEncapsulator: "TypeAlias" = Union[ConstructorMainRenderer, CoreArgumentsRenderer, ScopeArgumentsRenderer]
** ...
* ninai/base/interfaces.py:ChildIdentifiersMapping: "TypeAlias" = Dict[str, Tuple[Tuple[str, ...], str]]
** ...
* ninai/base/interfaces.py:CoreArguments: "TypeAlias" = Dict[str, "Constructor"]
** ...
* ninai/base/interfaces.py:ScopeArguments: "TypeAlias" = List["Constructor"]
** ...
* ninai/base/interfaces.py:ThematicRelationSpec: "TypeAlias" = Dict[str, Statement]
** ...
* ninai/base/interfaces.py:NonConstructorTypeArguments: "TypeAlias" = Union[
** ...
* ninai/base/interfaces.py:ConstructorArgument: "TypeAlias" = Union["Constructor", NonConstructorTypeArguments]
** ...
* ninai/base/interfaces.py:ConstructorArguments: "TypeAlias" = Sequence[ConstructorArgument]
** ...
* ninai/graph/server.py:EntityGraph: TypeAlias = "nx.MultiDiGraph[str]"
** ...
=== Other objects ===
Some rough equivalents for the types named in the annotations below:
* Dict = [[Z883]]
* Set = (no equivalent, maybe [[Z883]] with [[Z1]] keys and [[Z41]] as the only value?)
* List = [[Z881]]
* Language = [[Z60]]
(May be initially incomplete, since this is basically a list of entities not falling into any of the above types.)
* ninai/base/constructorinterfaces.py:__constructor_argument_filters__: Dict[str, "ArgumentFilter"] = {}
** ...
* ninai/base/constructorinterfaces.py:__constructor_core_arguments__: Dict[str, List[str]] = {}
** ...
* ninai/base/constructorinterfaces.py:__constructor_docstrings__: Dict[str, str] = {}
** ...
* ninai/base/constructorinterfaces.py:__constructor_type_hierarchy__: Dict[str, List[str]] = {}
** ...
* ninai/base/constructorinterfaces.py:__config_insulators__: Set[str] = set()
** ...
* ninai/base/constructorinterfaces.py:__config_setters__: Set[str] = set()
** ...
* ninai/base/constructorinterfaces.py:__unfiltered_framing_constructors__: Set[str] = set()
** ...
* ninai/graph/__init__.py:__fallback_chains__: DefaultDict[Language, DefaultDict[str, List[str]]] = defaultdict(lambda: defaultdict(list))
** ...
* ninai/graph/__init__.py:__fallback_chain_types__: Dict[str, Type[i.SenseFindingFallback]] = {...}
** ...
* ninai/graph/client.py:__language_range__: Dict[Language, Tuple[tfsli.Qid, ...]] = {}
** ...
* ninai/renderers/__mappings__.py:__arg_pre_hooks__: DefaultDict[str, DefaultDict[str, Dict["Language", "ArgPreHook"]]] = defaultdict(lambda: defaultdict(dict))
** ...
* ninai/renderers/__mappings__.py:__arg_post_hooks__: DefaultDict[str, DefaultDict[str, Dict["Language", "ArgPostHook"]]] = defaultdict(lambda: defaultdict(dict))
** ...
* ninai/renderers/__mappings__.py:__pre_hooks__: DefaultDict[str, Dict["Language", "PreHook"]] = defaultdict(dict)
** ...
* ninai/renderers/__mappings__.py:__post_hooks__: DefaultDict[str, Dict["Language", "PostHook"]] = defaultdict(dict)
** ...
* ninai/renderers/__mappings__.py:__renderers__: DefaultDict[str, Dict["Language", "Renderer"]] = defaultdict(dict)
** ...
* ninai/renderers/__mappings__.py:__syntactic_role_functions__: DefaultDict[str, Dict["Language", "SyntacticRoleFunction"]] = defaultdict(dict)
** ...
* ninai/renderers/__mappings__.py:__sense_refines__: Dict["Language", "SenseRefinement"] = {}
** ...
* ninai/renderers/__mappings__.py:__initial_catena_processors__: Dict["Language", "InitialCatenaProcessor"] = {}
** ...
* ninai/renderers/__mappings__.py:__thematic_inflection_additions__: Dict["Language", "ThematicInflectionAddition"] = {}
** ...
* ninai/renderers/__mappings__.py:__inflection_functions__: Dict["Language", "InflectionFunction"] = {}
** ...
* ninai/renderers/__mappings__.py:__scope_output_processors__: Dict["Language", "ScopeOutputProcessor"] = {}
** ...
* ninai/renderers/__mappings__.py:__thematic_relationless_processors__: Dict["Language", "ThematicRelationlessProcessor"] = {}
** ...
* ninai/renderers/__mappings__.py:__constructorifies__: Dict["Language", "Constructorify"] = {}
** ...
* ninai/renderers/__mappings__.py:__transcribes__: Dict["Language", "Transcribe"] = {}
** ...
* ninai/renderers/__mappings__.py:__binominal_calques__: Dict["Language", "BinominalCompoundCalque"] = {}
** ...
* ninai/renderers/__mappings__.py:__derivation_calques__: Dict["Language", "DerivationalCalqueFunction"] = {}
** ...
* ninai/renderers/mul.py:__full_stop_overrides__: Dict[Language, FinalPunctuationFunction] = {}
** ...
7vrlog49uevehpmysk54ag0a97hfubv
282346
282344
2026-06-11T17:39:40Z
Mahir256
38
282346
wikitext
text/x-wiki
== Other possible types and objects ==
The following are lists of other entities defined in Ninai for the handling of Constructors. They were first assembled with the outputs of various <code>git grep</code> commands on the [https://gitlab.com/mahir256/ninai/ Ninai repository], and notes are provided below each about the nature of that declaration.
Equivalents of many of these will be necessary, but levels of requirement will be marked as the notes below are filled in.
=== Classes ===
* ninai/base/argumentfilters.py: class ArgumentFilterOptions(NamedTuple):
** ...
* ninai/base/constructor.py: class Constructor(NamedTuple):
** The "semantic unit" type is intended to be equivalent to this class.
* ninai/base/constructormainrenderer.py: class ConstructorMainRenderer(NamedTuple):
** ...
* ninai/base/constructorrenderer.py: class ConstructorRenderer(NamedTuple):
** ...
* ninai/base/constructorzipper.py: class ArgumentLevel(NamedTuple):
** ...
* ninai/base/constructorzipper.py: class ConstructorZipper(NamedTuple):
** ...
* ninai/base/context.py: class ContextEntry(NamedTuple):
** ...
* ninai/base/context.py: class Context(NamedTuple):
** ...
* ninai/base/coreargumentprocessor.py: class CoreArgumentProcessor(NamedTuple):
** ...
* ninai/base/coreargumentsrenderer.py: class CoreArgumentsRenderer(NamedTuple):
** ...
* ninai/base/framing.py: class MethodKey(NamedTuple):
** ...
* ninai/base/framing.py: class FramingKey(NamedTuple):
** ...
* ninai/base/framing.py: class FramingDict(NamedTuple):
** ...
* ninai/base/framing.py: class Framing(NamedTuple):
** ...
* ninai/base/interfaces.py: class CandidatePathNode(TypedDict): # due to XMLRPC serialization, must remain a TypedDict
** ...
* ninai/base/interfaces.py: class CatenaYieldingIterator(Protocol):
** ...
* ninai/base/interfaces.py: class SenseFindingFallback(CatenaYieldingIterator, Protocol):
** ...
* ninai/base/interfaces.py: class ArgumentFilterBasis(Protocol):
** ...
* ninai/base/interfaces.py: class ArgumentFilter(Protocol):
** ...
* ninai/base/interfaces.py: class ArgPreHook(Protocol):
** ...
* ninai/base/interfaces.py: class ArgPostHook(Protocol):
** ...
* ninai/base/interfaces.py: class PreHook(Protocol):
** ...
* ninai/base/interfaces.py: class PostHook(Protocol):
** ...
* ninai/base/interfaces.py: class Renderer(Protocol):
** ...
* ninai/base/interfaces.py: class SyntacticRoleFunction(Protocol):
** ...
* ninai/base/interfaces.py: class SenseRefinement(Protocol):
** ...
* ninai/base/interfaces.py: class Constructorify(Protocol):
** ...
* ninai/base/interfaces.py: class Transcribe(Protocol):
** ...
* ninai/base/interfaces.py: class BinominalCompoundCalque(Protocol):
** ...
* ninai/base/interfaces.py: class DerivationalCalqueFunction(Protocol):
** ...
* ninai/base/interfaces.py: class InitialCatenaProcessor(Protocol):
** ...
* ninai/base/interfaces.py: class ThematicInflectionAddition(Protocol):
** ...
* ninai/base/interfaces.py: class InflectionFunction(Protocol):
** ...
* ninai/base/interfaces.py: class ScopeOutputProcessor(Protocol):
** ...
* ninai/base/interfaces.py: class ThematicRelationlessProcessor(Protocol):
** ...
* ninai/base/interfaces.py: class NinaiError(Exception):
** ...
* ninai/base/interfaces.py: class RenderingPhase(IntEnum):
** ...
* ninai/base/interfaces.py: class CoreArgumentProcessingPhase(IntEnum):
** ...
* ninai/base/interfaces.py: class PreHookOperator(NamedTuple):
** ...
* ninai/base/interfaces.py: class MainRendererOperator(NamedTuple):
** ...
* ninai/base/interfaces.py: class PostHookOperator(NamedTuple):
** ...
* ninai/base/pausedrenderersupply.py: class PausedRendererSupply(NamedTuple):
** ...
* ninai/base/rendererarguments.py: class RendererArguments(NamedTuple):
** ...
* ninai/base/scopeargumentsrenderer.py: class ScopeArgumentsRenderer(NamedTuple):
** ...
* ninai/constructors/contexts/refcontext.py: class RefContextRenderer(NamedTuple):
** ...
* ninai/graph/__init__.py: class CatenaFromItemIdIterator:
** ...
* ninai/graph/__init__.py: class FallbackRunner:
** ...
* ninai/graph/calque.py: class VerboNominalSyntagmaCalque:
** ...
* ninai/graph/calque.py: class DerivationCalque:
** ...
* ninai/graph/calque.py: class EndocentricCompoundCalque:
** ...
* ninai/graph/calque.py: class CalqueIterator:
** ...
* ninai/graph/client.py: class CandidateProcessor:
** ...
* ninai/graph/client.py: class SenseFindingIterator:
** ...
* ninai/graph/cognate.py: class CognateIterator:
** ...
* ninai/graph/fallbacks.py: class CatenaZipperListIterator:
** ...
* ninai/graph/server.py: class GraphServer:
** ...
* ninai/graph/server.py: class ServerThread(threading.Thread):
** ...
* ninai/graph/server.py: class GraphServerRepl(cmd.Cmd):
** ...
* ninai/graph/transcribe.py: class TranscribeIterator:
** ...
* ninai/renderers/mul.py: class FinalPunctuationFunction(Protocol):
** ...
=== Type aliases ===
(May be initially incomplete, since not all type aliases may have been marked with the "TypeAlias" type annotation.
* ninai/base/constructorrenderer.py:RenderingPhaseEncapsulator: "TypeAlias" = Union[ConstructorMainRenderer, CoreArgumentsRenderer, ScopeArgumentsRenderer]
** ...
* ninai/base/interfaces.py:ChildIdentifiersMapping: "TypeAlias" = Dict[str, Tuple[Tuple[str, ...], str]]
** ...
* ninai/base/interfaces.py:CoreArguments: "TypeAlias" = Dict[str, "Constructor"]
** ...
* ninai/base/interfaces.py:ScopeArguments: "TypeAlias" = List["Constructor"]
** ...
* ninai/base/interfaces.py:ThematicRelationSpec: "TypeAlias" = Dict[str, Statement]
** ...
* ninai/base/interfaces.py:NonConstructorTypeArguments: "TypeAlias" = Union[
** ...
* ninai/base/interfaces.py:ConstructorArgument: "TypeAlias" = Union["Constructor", NonConstructorTypeArguments]
** ...
* ninai/base/interfaces.py:ConstructorArguments: "TypeAlias" = Sequence[ConstructorArgument]
** ...
* ninai/graph/server.py:EntityGraph: TypeAlias = "nx.MultiDiGraph[str]"
** ...
=== Other objects ===
Some rough equivalents for the types named in the annotations below:
* Dict = [[Z883]]
* Set = (no equivalent, maybe [[Z883]] with [[Z1]] keys and [[Z41]] as the only value?)
* List = [[Z881]]
* Language = [[Z60]]
(May be initially incomplete, since this is basically a list of entities not falling into any of the above types.)
* ninai/base/constructorinterfaces.py:__constructor_argument_filters__: Dict[str, "ArgumentFilter"] = {}
** ...
* ninai/base/constructorinterfaces.py:__constructor_core_arguments__: Dict[str, List[str]] = {}
** ...
* ninai/base/constructorinterfaces.py:__constructor_docstrings__: Dict[str, str] = {}
** ...
* ninai/base/constructorinterfaces.py:__constructor_type_hierarchy__: Dict[str, List[str]] = {}
** ...
* ninai/base/constructorinterfaces.py:__config_insulators__: Set[str] = set()
** ...
* ninai/base/constructorinterfaces.py:__config_setters__: Set[str] = set()
** ...
* ninai/base/constructorinterfaces.py:__unfiltered_framing_constructors__: Set[str] = set()
** ...
* ninai/graph/__init__.py:__fallback_chains__: DefaultDict[Language, DefaultDict[str, List[str]]] = defaultdict(lambda: defaultdict(list))
** ...
* ninai/graph/__init__.py:__fallback_chain_types__: Dict[str, Type[i.SenseFindingFallback]] = {...}
** ...
* ninai/graph/client.py:__language_range__: Dict[Language, Tuple[tfsli.Qid, ...]] = {}
** ...
* ninai/renderers/__mappings__.py:__arg_pre_hooks__: DefaultDict[str, DefaultDict[str, Dict["Language", "ArgPreHook"]]] = defaultdict(lambda: defaultdict(dict))
** ...
* ninai/renderers/__mappings__.py:__arg_post_hooks__: DefaultDict[str, DefaultDict[str, Dict["Language", "ArgPostHook"]]] = defaultdict(lambda: defaultdict(dict))
** ...
* ninai/renderers/__mappings__.py:__pre_hooks__: DefaultDict[str, Dict["Language", "PreHook"]] = defaultdict(dict)
** ...
* ninai/renderers/__mappings__.py:__post_hooks__: DefaultDict[str, Dict["Language", "PostHook"]] = defaultdict(dict)
** ...
* ninai/renderers/__mappings__.py:__renderers__: DefaultDict[str, Dict["Language", "Renderer"]] = defaultdict(dict)
** ...
* ninai/renderers/__mappings__.py:__syntactic_role_functions__: DefaultDict[str, Dict["Language", "SyntacticRoleFunction"]] = defaultdict(dict)
** ...
* ninai/renderers/__mappings__.py:__sense_refines__: Dict["Language", "SenseRefinement"] = {}
** ...
* ninai/renderers/__mappings__.py:__initial_catena_processors__: Dict["Language", "InitialCatenaProcessor"] = {}
** ...
* ninai/renderers/__mappings__.py:__thematic_inflection_additions__: Dict["Language", "ThematicInflectionAddition"] = {}
** ...
* ninai/renderers/__mappings__.py:__inflection_functions__: Dict["Language", "InflectionFunction"] = {}
** ...
* ninai/renderers/__mappings__.py:__scope_output_processors__: Dict["Language", "ScopeOutputProcessor"] = {}
** ...
* ninai/renderers/__mappings__.py:__thematic_relationless_processors__: Dict["Language", "ThematicRelationlessProcessor"] = {}
** ...
* ninai/renderers/__mappings__.py:__constructorifies__: Dict["Language", "Constructorify"] = {}
** ...
* ninai/renderers/__mappings__.py:__transcribes__: Dict["Language", "Transcribe"] = {}
** ...
* ninai/renderers/__mappings__.py:__binominal_calques__: Dict["Language", "BinominalCompoundCalque"] = {}
** ...
* ninai/renderers/__mappings__.py:__derivation_calques__: Dict["Language", "DerivationalCalqueFunction"] = {}
** ...
* ninai/renderers/mul.py:__full_stop_overrides__: Dict[Language, FinalPunctuationFunction] = {}
** ...
tn8uiv24ya274dpwzqiuovks8qlss79
Wikifunctions talk:Type proposals/Syntactic unit
5
85516
282347
2026-06-11T17:43:28Z
Mahir256
38
Created page with "== Other possible types and objects == The following are lists of other entities defined in Ninai for the handling of Constructors. They were first assembled with the outputs of various <code>git grep</code> commands on the [https://gitlab.com/mahir256/ninai/ Ninai repository], and notes are provided below each about the nature of that declaration. Equivalents of many of these will be necessary, but levels of requirement will be marked as the notes below are filled in...."
282347
wikitext
text/x-wiki
== Other possible types and objects ==
The following are lists of other entities defined in Ninai for the handling of Constructors. They were first assembled with the outputs of various <code>git grep</code> commands on the [https://gitlab.com/mahir256/ninai/ Ninai repository], and notes are provided below each about the nature of that declaration.
Equivalents of many of these will be necessary, but levels of requirement will be marked as the notes below are filled in.
=== Classes ===
* udiron/base/catena.py: class Catena(NamedTuple):
** The "syntactic unit" type is intended to be equivalent to this class.
* udiron/base/catenazipper.py: class CatenaZipper(NamedTuple):
** ...
* udiron/base/dependententry.py: class DependentEntry(NamedTuple):
** ...
* udiron/base/dependentlist.py: class DependentList(NamedTuple):
** ...
* udiron/base/functionconfig.py: class StrKey(NamedTuple):
** ...
* udiron/base/functionconfig.py: class StringSet(NamedTuple):
** ...
* udiron/base/functionconfig.py: class ItemList(NamedTuple):
** ...
* udiron/base/functionconfig.py: class StringList(NamedTuple):
** ...
* udiron/base/functionconfig.py: class EntityKey(NamedTuple):
** ...
* udiron/base/functionconfig.py: class FunctionConfig(NamedTuple):
** ...
* udiron/base/functionconfig.py: class FCKeys:
** ...
* udiron/base/functionconfigchain.py: class FunctionConfigChain(NamedTuple):
** ...
* udiron/base/interfaces.py: class UdironError(Exception):
** ...
* udiron/base/interfaces.py: class SelectForms(Protocol):
** ...
* udiron/base/interfaces.py: class DevelopForm(Protocol):
** ...
* udiron/base/interfaces.py: class CollectForms(Protocol):
** ...
* udiron/base/interfaces.py: class SurfaceJoin(Protocol):
** ...
* udiron/base/interfaces.py: class SurfaceTransform(Protocol):
** ...
* udiron/base/interfaces.py: class SurfaceTransformHook(Protocol):
** ...
* udiron/base/interfaces.py: class CollectFormsHooks(Protocol):
** ...
* udiron/base/interfaces.py: class CatenaDict(TypedDict):
** ...
* udiron/base/interfaces.py: class FunctionConfigDict(TypedDict):
** ...
* udiron/base/interfaces.py: class DependentEntryDict(TypedDict):
** ...
* udiron/base/interfaces.py: class DependentListDict(TypedDict):
** ...
* udiron/base/outputentry.py: class OutputEntryComponent(NamedTuple):
** ...
* udiron/base/outputentry.py: class OutputEntry(NamedTuple):
** ...
=== Type aliases ===
* udiron/base/functionconfigchain.py:FCCEntry: TypeAlias = Tuple[FunctionConfig, str]
** ...
* udiron/base/interfaces.py:OutputEntryListIndexed: "TypeAlias" = List[Tuple["OutputEntry", float]]
** ...
* udiron/base/interfaces.py:OutputEntryList: "TypeAlias" = List["OutputEntry"]
** ...
* udiron/base/interfaces.py:InflectionSet: "TypeAlias" = FrozenSet[tfsli.Qid]
** ...
* udiron/base/interfaces.py:CatenaZipperPopOutput: "TypeAlias" = Tuple["DependentEntry", "CatenaZipper"]
** ...
* udiron/base/interfaces.py:DependentListDetachOutput: "TypeAlias" = Tuple["DependentEntry", "DependentList"]
** ...
* udiron/base/interfaces.py:CoreArgumentMapping: "TypeAlias" = Dict[str, "CatenaZipper"]
** ...
* udiron/base/interfaces.py:ScopeArgumentMapping: "TypeAlias" = Dict[str, List["CatenaZipper"]]
** ...
* udiron/base/interfaces.py:SelectFormsOutput: "TypeAlias" = Tuple[InflectionSet, "FunctionConfig"]
** ...
* udiron/base/interfaces.py:SelectFormsMapping: "TypeAlias" = MutableMapping[Language, SelectForms]
** ...
* udiron/base/interfaces.py:DevelopFormMapping: "TypeAlias" = MutableMapping[Language, DevelopForm]
** ...
* udiron/base/interfaces.py:CollectFormsOutput: "TypeAlias" = Tuple[OutputEntryListIndexed, int]
** ...
* udiron/base/interfaces.py:CollectFormsMapping: "TypeAlias" = MutableMapping[Language, CollectForms]
** ...
* udiron/base/interfaces.py:SurfaceJoinMapping: "TypeAlias" = MutableMapping[Language, SurfaceJoin]
** ...
* udiron/base/interfaces.py:SurfaceTransformMapping: "TypeAlias" = MutableMapping[Language, SurfaceTransform]
** ...
* udiron/base/interfaces.py:CollectFormsHooksMapping: "TypeAlias" = MutableMapping[Language, CollectFormsHooks]
** ...
* udiron/base/interfaces.py:ScopeArgumentMappingDict: "TypeAlias" = Dict[str, List[CatenaDict]]
** ...
=== Other objects ===
* udiron/langs/__init__.py:__selectform__: i.SelectFormsMapping = {}
** ...
* udiron/langs/__init__.py:__developform__: i.DevelopFormMapping = {}
** ...
* udiron/langs/__init__.py:__collectformshooks__: i.CollectFormsHooksMapping = {}
** ...
* udiron/langs/__init__.py:__buildform__: i.CollectFormsMapping = {}
** ...
* udiron/langs/__init__.py:__surfacejoin__: i.SurfaceJoinMapping = {}
** ...
* udiron/langs/__init__.py:__surfacetransform__: i.SurfaceTransformMapping = {}
** ...
ryh6w4jyew4odbu40yt9ctols2gztgm
282348
282347
2026-06-11T17:43:54Z
Mahir256
38
282348
wikitext
text/x-wiki
== Other possible types and objects ==
The following are lists of other entities defined in Udiron for the handling of Catenae. They were first assembled with the outputs of various <code>git grep</code> commands on the [https://gitlab.com/mahir256/udiron/ Udiron repository], and notes are provided below each about the nature of that declaration.
Equivalents of many of these will be necessary, but levels of requirement will be marked as the notes below are filled in.
=== Classes ===
* udiron/base/catena.py: class Catena(NamedTuple):
** The "syntactic unit" type is intended to be equivalent to this class.
* udiron/base/catenazipper.py: class CatenaZipper(NamedTuple):
** ...
* udiron/base/dependententry.py: class DependentEntry(NamedTuple):
** ...
* udiron/base/dependentlist.py: class DependentList(NamedTuple):
** ...
* udiron/base/functionconfig.py: class StrKey(NamedTuple):
** ...
* udiron/base/functionconfig.py: class StringSet(NamedTuple):
** ...
* udiron/base/functionconfig.py: class ItemList(NamedTuple):
** ...
* udiron/base/functionconfig.py: class StringList(NamedTuple):
** ...
* udiron/base/functionconfig.py: class EntityKey(NamedTuple):
** ...
* udiron/base/functionconfig.py: class FunctionConfig(NamedTuple):
** ...
* udiron/base/functionconfig.py: class FCKeys:
** ...
* udiron/base/functionconfigchain.py: class FunctionConfigChain(NamedTuple):
** ...
* udiron/base/interfaces.py: class UdironError(Exception):
** ...
* udiron/base/interfaces.py: class SelectForms(Protocol):
** ...
* udiron/base/interfaces.py: class DevelopForm(Protocol):
** ...
* udiron/base/interfaces.py: class CollectForms(Protocol):
** ...
* udiron/base/interfaces.py: class SurfaceJoin(Protocol):
** ...
* udiron/base/interfaces.py: class SurfaceTransform(Protocol):
** ...
* udiron/base/interfaces.py: class SurfaceTransformHook(Protocol):
** ...
* udiron/base/interfaces.py: class CollectFormsHooks(Protocol):
** ...
* udiron/base/interfaces.py: class CatenaDict(TypedDict):
** ...
* udiron/base/interfaces.py: class FunctionConfigDict(TypedDict):
** ...
* udiron/base/interfaces.py: class DependentEntryDict(TypedDict):
** ...
* udiron/base/interfaces.py: class DependentListDict(TypedDict):
** ...
* udiron/base/outputentry.py: class OutputEntryComponent(NamedTuple):
** ...
* udiron/base/outputentry.py: class OutputEntry(NamedTuple):
** ...
=== Type aliases ===
* udiron/base/functionconfigchain.py:FCCEntry: TypeAlias = Tuple[FunctionConfig, str]
** ...
* udiron/base/interfaces.py:OutputEntryListIndexed: "TypeAlias" = List[Tuple["OutputEntry", float]]
** ...
* udiron/base/interfaces.py:OutputEntryList: "TypeAlias" = List["OutputEntry"]
** ...
* udiron/base/interfaces.py:InflectionSet: "TypeAlias" = FrozenSet[tfsli.Qid]
** ...
* udiron/base/interfaces.py:CatenaZipperPopOutput: "TypeAlias" = Tuple["DependentEntry", "CatenaZipper"]
** ...
* udiron/base/interfaces.py:DependentListDetachOutput: "TypeAlias" = Tuple["DependentEntry", "DependentList"]
** ...
* udiron/base/interfaces.py:CoreArgumentMapping: "TypeAlias" = Dict[str, "CatenaZipper"]
** ...
* udiron/base/interfaces.py:ScopeArgumentMapping: "TypeAlias" = Dict[str, List["CatenaZipper"]]
** ...
* udiron/base/interfaces.py:SelectFormsOutput: "TypeAlias" = Tuple[InflectionSet, "FunctionConfig"]
** ...
* udiron/base/interfaces.py:SelectFormsMapping: "TypeAlias" = MutableMapping[Language, SelectForms]
** ...
* udiron/base/interfaces.py:DevelopFormMapping: "TypeAlias" = MutableMapping[Language, DevelopForm]
** ...
* udiron/base/interfaces.py:CollectFormsOutput: "TypeAlias" = Tuple[OutputEntryListIndexed, int]
** ...
* udiron/base/interfaces.py:CollectFormsMapping: "TypeAlias" = MutableMapping[Language, CollectForms]
** ...
* udiron/base/interfaces.py:SurfaceJoinMapping: "TypeAlias" = MutableMapping[Language, SurfaceJoin]
** ...
* udiron/base/interfaces.py:SurfaceTransformMapping: "TypeAlias" = MutableMapping[Language, SurfaceTransform]
** ...
* udiron/base/interfaces.py:CollectFormsHooksMapping: "TypeAlias" = MutableMapping[Language, CollectFormsHooks]
** ...
* udiron/base/interfaces.py:ScopeArgumentMappingDict: "TypeAlias" = Dict[str, List[CatenaDict]]
** ...
=== Other objects ===
* udiron/langs/__init__.py:__selectform__: i.SelectFormsMapping = {}
** ...
* udiron/langs/__init__.py:__developform__: i.DevelopFormMapping = {}
** ...
* udiron/langs/__init__.py:__collectformshooks__: i.CollectFormsHooksMapping = {}
** ...
* udiron/langs/__init__.py:__buildform__: i.CollectFormsMapping = {}
** ...
* udiron/langs/__init__.py:__surfacejoin__: i.SurfaceJoinMapping = {}
** ...
* udiron/langs/__init__.py:__surfacetransform__: i.SurfaceTransformMapping = {}
** ...
e1wvwjhob5t1hlyjy6j6a89775l1j5f
Z36282
0
85517
282361
2026-06-11T19:30:03Z
Jsamwrites
938
282361
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36282"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36282K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36282K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36282"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for sports event"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
3i3sp6vcpv7fdax31hiqw7rs2w2nt5d
282363
282361
2026-06-11T19:34:05Z
Jsamwrites
938
Added Z36283 to the approved list of implementations
282363
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36282"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36282K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36282K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36283"
],
"Z8K5": "Z36282"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for sports event"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
4486u1e32qdj8jvm15b5kpe7g1h1g27
Z36283
0
85518
282362
2026-06-11T19:33:54Z
Jsamwrites
938
282362
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36283"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36282",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z7",
"Z7K1": "Z33325",
"Z33325K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z18",
"Z18K1": "Z36282K1"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36282K2"
}
}
}
},
"Z33328K2": {
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33322",
"Z33322K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q937228"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36282K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33322",
"Z33322K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q11028"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36282K2"
}
}
}
}
]
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q6256"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36282K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z7",
"Z7K1": "Z21449",
"Z21449K1": {
"Z1K1": "Z6092",
"Z6092K1": "P17"
},
"Z21449K2": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36282K1"
}
}
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36282K2"
}
}
}
}
]
},
{
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q515"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36282K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z7",
"Z7K1": "Z21449",
"Z21449K1": {
"Z1K1": "Z6092",
"Z6092K1": "P131"
},
"Z21449K2": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36282K1"
}
}
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36282K2"
}
}
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for sports event, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
mplcq5cwrj0kbnajnb8nuf0s370soqi
Z36284
0
85519
282365
2026-06-11T20:30:03Z
GrounderUK
50
[[Z13436]]➕[[Z14]]: [[Z35910]]
282365
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36284"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z13436",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z873",
"Z873K1": "Z899",
"Z873K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z35910",
"Z35910K1": {
"Z1K1": "Z7",
"Z7K1": "Z15142",
"Z15142K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z28231",
"Z28231K1": {
"Z1K1": "Z18",
"Z18K1": "Z13436K1"
}
}
]
]
},
"Z35910K2": {
"Z1K1": "Z7",
"Z7K1": "Z15142",
"Z15142K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
"K1": {
"Z1K1": "Z18",
"Z18K1": "Z13436K2"
},
"K2": ""
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
"K1": {
"Z1K1": "Z18",
"Z18K1": "Z13436K3"
},
"K2": "N"
}
]
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
9vu7n9746f4w5yldfu1hpvzd9sve59v
Z36285
0
85520
282366
2026-06-11T20:38:55Z
Jsamwrites
938
282366
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36285"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36285K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36285K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36285"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for choir"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
gsiwqddatn7fz9buz109hafdzjt0i9h
282368
282366
2026-06-11T20:41:05Z
Jsamwrites
938
Added Z36286 to the approved list of implementations
282368
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36285"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36285K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36285K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36286"
],
"Z8K5": "Z36285"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for choir"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
s1s3gfyy4i0quclyk1jsl4w6nrkq8yc
Z36286
0
85521
282367
2026-06-11T20:40:56Z
Jsamwrites
938
282367
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36286"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36285",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z7",
"Z7K1": "Z33325",
"Z33325K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z18",
"Z18K1": "Z36285K1"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36285K2"
}
}
}
},
"Z33328K2": {
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33322",
"Z33322K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q937228"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36285K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33322",
"Z33322K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q11028"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36285K2"
}
}
}
}
]
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q6256"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36285K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z7",
"Z7K1": "Z21449",
"Z21449K1": {
"Z1K1": "Z6092",
"Z6092K1": "P17"
},
"Z21449K2": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36285K1"
}
}
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36285K2"
}
}
}
}
]
},
{
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q3406134"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36285K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z28767",
"Z28767K1": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36285K1"
}
},
"Z28767K2": {
"Z1K1": "Z6092",
"Z6092K1": "P571"
},
"Z28767K3": {
"Z1K1": "Z18",
"Z18K1": "Z36285K2"
}
}
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for choir, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
hb04iiiq3q5rok2hsxhxkf9f0jbkct8
Z36287
0
85522
282369
2026-06-11T20:43:48Z
GrounderUK
50
[[Z13464]]➕[[Z14]]: [[Z35910]]
282369
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36287"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z13464",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z873",
"Z873K1": "Z899",
"Z873K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z35910",
"Z35910K1": {
"Z1K1": "Z7",
"Z7K1": "Z15142",
"Z15142K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z28231",
"Z28231K1": {
"Z1K1": "Z18",
"Z18K1": "Z13464K1"
}
}
]
]
},
"Z35910K2": {
"Z1K1": "Z7",
"Z7K1": "Z15142",
"Z15142K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
"K1": {
"Z1K1": "Z18",
"Z18K1": "Z13464K2"
},
"K2": "N"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
"K1": {
"Z1K1": "Z18",
"Z18K1": "Z13464K3"
},
"K2": ""
}
]
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply 2-ary, list first, Composition: map unquote"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ilw6u3mpsc56j0igft0tvgfpljiiscj
Z36288
0
85523
282371
2026-06-11T20:55:31Z
Jsamwrites
938
282371
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36288"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36288K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36288K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36288"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for community center"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ptokp0jd4ee7tk96btuc5nyxeh1t3zo
282373
282371
2026-06-11T20:57:28Z
Jsamwrites
938
Added Z36289 to the approved list of implementations
282373
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36288"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36288K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36288K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36289"
],
"Z8K5": "Z36288"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for community center"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
3mt14ff76bfbuk3xpxlxlownzjcsshh
Z36289
0
85524
282372
2026-06-11T20:57:18Z
Jsamwrites
938
282372
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36289"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36288",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z7",
"Z7K1": "Z33325",
"Z33325K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z18",
"Z18K1": "Z36288K1"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36288K2"
}
}
}
},
"Z33328K2": {
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33322",
"Z33322K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q937228"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36288K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33322",
"Z33322K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q11028"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36288K2"
}
}
}
}
]
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q6256"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36288K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z7",
"Z7K1": "Z21449",
"Z21449K1": {
"Z1K1": "Z6092",
"Z6092K1": "P17"
},
"Z21449K2": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36288K1"
}
}
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36288K2"
}
}
}
}
]
},
{
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q3406134"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36288K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z28767",
"Z28767K1": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36288K1"
}
},
"Z28767K2": {
"Z1K1": "Z6092",
"Z6092K1": "P571"
},
"Z28767K3": {
"Z1K1": "Z18",
"Z18K1": "Z36288K2"
}
}
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for community center, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ps6gl1rk7bcyf4kimn3bxie7dg2ek6p
Z36290
0
85525
282374
2026-06-11T21:05:56Z
Jsamwrites
938
282374
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36290"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36290K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36290K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36290"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for film award"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ew9gu8vif63sv2iwep7wwxuub34pe9c
282376
282374
2026-06-11T21:08:00Z
Jsamwrites
938
Added Z36291 to the approved list of implementations
282376
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36290"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36290K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36290K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36291"
],
"Z8K5": "Z36290"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for film award"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
payfaugrbkkcwsd3lje5d69jhmt2u88
Z36291
0
85526
282375
2026-06-11T21:07:49Z
Jsamwrites
938
282375
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36291"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36290",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z7",
"Z7K1": "Z33325",
"Z33325K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z18",
"Z18K1": "Z36290K1"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36290K2"
}
}
}
},
"Z33328K2": {
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33322",
"Z33322K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q937228"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36290K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33322",
"Z33322K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q11028"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36290K2"
}
}
}
}
]
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q6256"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36290K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z7",
"Z7K1": "Z21449",
"Z21449K1": {
"Z1K1": "Z6092",
"Z6092K1": "P17"
},
"Z21449K2": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36290K1"
}
}
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36290K2"
}
}
}
}
]
},
{
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q3406134"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36290K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z28767",
"Z28767K1": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36290K1"
}
},
"Z28767K2": {
"Z1K1": "Z6092",
"Z6092K1": "P571"
},
"Z28767K3": {
"Z1K1": "Z18",
"Z18K1": "Z36290K2"
}
}
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for film award, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
qebizlwqb8a7pft1z11vtvdv5pnxgvh
Z36292
0
85527
282377
2026-06-11T21:09:14Z
GrounderUK
50
[[Z14779]]➕[[Z14]]: [[Z35910]]
282377
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36292"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z14779",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z873",
"Z873K1": "Z899",
"Z873K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z35910",
"Z35910K1": {
"Z1K1": "Z7",
"Z7K1": "Z15142",
"Z15142K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z28231",
"Z28231K1": {
"Z1K1": "Z18",
"Z18K1": "Z14779K1"
}
}
]
]
},
"Z35910K2": {
"Z1K1": "Z7",
"Z7K1": "Z15142",
"Z15142K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
"K1": {
"Z1K1": "Z18",
"Z18K1": "Z14779K2"
},
"K2": "N"
},
{
"Z1K1": {
"Z1K1": "Z7",
"Z7K1": "Z882",
"Z882K1": "Z1",
"Z882K2": "Z6"
},
"K1": {
"Z1K1": "Z18",
"Z18K1": "Z14779K3"
},
"K2": "N"
}
]
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "apply 2-ary pairwise, Composition: map unquote"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ipsyztoes0agncypk07quac1t56sgrj
Z36293
0
85528
282378
2026-06-11T21:14:32Z
JsN21
87721
made the page
282378
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36293"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z28579",
"Z17K2": "Z36293K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Base"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z16683",
"Z17K2": "Z36293K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Addition"
}
]
}
}
],
"Z8K2": "Z28579",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36293"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Yellow"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adds yellow to an RGBA color"
}
]
}
}
sve4mg5n8lqtmhwqeh9g5clmxh6gyga
Z36294
0
85529
282379
2026-06-11T21:28:25Z
JsN21
87721
made the page
282379
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36294"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36293",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36293",
"Z36293K1": {
"Z1K1": "Z28579",
"Z28579K1": {
"Z1K1": "Z19677",
"Z19677K1": "Z16661",
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "0"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z28579K2": {
"Z1K1": "Z19677",
"Z19677K1": "Z16660",
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "254"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "255"
}
},
"Z28579K3": {
"Z1K1": "Z19677",
"Z19677K1": "Z16660",
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "254"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "255"
}
},
"Z28579K4": {
"Z1K1": "Z19677",
"Z19677K1": "Z16661",
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "0"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
}
},
"Z36293K2": {
"Z1K1": "Z16683",
"Z16683K1": "Z16660",
"Z16683K2": {
"Z1K1": "Z13518",
"Z13518K1": "2"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z28580",
"Z28580K2": {
"Z1K1": "Z28579",
"Z28579K1": {
"Z1K1": "Z19677",
"Z19677K1": "Z16661",
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "0"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z28579K2": {
"Z1K1": "Z19677",
"Z19677K1": "Z16660",
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z28579K3": {
"Z1K1": "Z19677",
"Z19677K1": "Z16660",
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z28579K4": {
"Z1K1": "Z19677",
"Z19677K1": "Z16661",
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "0"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Clamp Protection"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
dz75lb0nbudm70w25xmh68ndjrgsp5g
Z36295
0
85530
282383
2026-06-11T21:34:39Z
JsN21
87721
a
282383
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36295"
},
"Z2K2": {
"Z1K1": "Z28579",
"Z28579K1": {
"Z1K1": "Z19677",
"Z19677K1": "Z16661",
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "0"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z28579K2": {
"Z1K1": "Z19677",
"Z19677K1": "Z16660",
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "255"
}
},
"Z28579K3": {
"Z1K1": "Z19677",
"Z19677K1": "Z16660",
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "255"
}
},
"Z28579K4": {
"Z1K1": "Z19677",
"Z19677K1": "Z16660",
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Yellow Color"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
8ahxbvwzbmkfrvx06368bgsyaltlp2o
Z36296
0
85531
282384
2026-06-11T21:35:51Z
Jsamwrites
938
282384
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36296"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36296K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36296K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36296"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for church building"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
6oozzzeoon8kd5qc543ttluig4vezeh
282386
282384
2026-06-11T21:37:41Z
Jsamwrites
938
Added Z36297 to the approved list of implementations
282386
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36296"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36296K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36296K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36297"
],
"Z8K5": "Z36296"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for church building"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
6xf0jtc3rh36737cpckg46anamboak5
Z36297
0
85532
282385
2026-06-11T21:37:32Z
Jsamwrites
938
282385
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36297"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36296",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z33328",
"Z33328K1": {
"Z1K1": "Z7",
"Z7K1": "Z33325",
"Z33325K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z18",
"Z18K1": "Z36296K1"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36296K2"
}
}
}
},
"Z33328K2": {
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33322",
"Z33322K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q937228"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36296K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33322",
"Z33322K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q11028"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36296K2"
}
}
}
}
]
},
"Z33328K3": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q6256"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36296K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z7",
"Z7K1": "Z21449",
"Z21449K1": {
"Z1K1": "Z6092",
"Z6092K1": "P17"
},
"Z21449K2": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36296K1"
}
}
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36296K2"
}
}
}
}
]
},
{
"Z1K1": "Z7",
"Z7K1": "Z33319",
"Z33319K1": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q3406134"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36296K2"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z33315",
"Z33315K1": {
"Z1K1": "Z7",
"Z7K1": "Z28767",
"Z28767K1": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36296K1"
}
},
"Z28767K2": {
"Z1K1": "Z6092",
"Z6092K1": "P571"
},
"Z28767K3": {
"Z1K1": "Z18",
"Z18K1": "Z36296K2"
}
}
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "infobox for church building, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
iamb08rg7fn240sgvuq01tjjdm1j31g
Z36298
0
85533
282398
2026-06-11T23:01:30Z
99of9
1622
282398
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36298"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z28016",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z34039",
"Z34039K1": {
"Z1K1": "Z7",
"Z7K1": "Z14310",
"Z14310K1": "Z28020",
"Z14310K2": {
"Z1K1": "Z18",
"Z18K1": "Z28016K4"
}
},
"Z34039K2": {
"Z1K1": "Z18",
"Z18K1": "Z28016K1"
},
"Z34039K3": {
"Z1K1": "Z18",
"Z18K1": "Z28016K2"
},
"Z34039K4": {
"Z1K1": "Z18",
"Z18K1": "Z28016K3"
},
"Z34039K5": {
"Z1K1": "Z18",
"Z18K1": "Z28016K4"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "defining role sentence (mono), apply3/4"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
h4yjqsoft0yhs3wwe5m0k71385n4fuu
Z36299
0
85534
282405
2026-06-11T23:55:41Z
GrounderUK
50
➕[[Z8]]: [[Z881]] ([[Z1]]) ↤ [[Z881]] ([[Z99]])
282405
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36299"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z99"
},
"Z17K2": "Z36299K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of quote objects"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36299"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "unquote listed quotes"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"resolve quoted calls"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "given a list of objects wrapped as quotes, returns the objects (with quoted function calls being evaluated)"
}
]
}
}
o2o5wncktmhdspx5nq8n6hn1l17ilvf
282407
282405
2026-06-11T23:57:31Z
GrounderUK
50
Added Z36300 to the approved list of implementations
282407
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36299"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z99"
},
"Z17K2": "Z36299K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of quote objects"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36300"
],
"Z8K5": "Z36299"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "unquote listed quotes"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"resolve quoted calls"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "given a list of objects wrapped as quotes, returns the objects (with quoted function calls being evaluated)"
}
]
}
}
o4pjwazjpz88e4dfoiper60ut9di3qs
282410
282407
2026-06-12T00:06:33Z
GrounderUK
50
Added Z36301 to the approved list of test cases
282410
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36299"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z99"
},
"Z17K2": "Z36299K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of quote objects"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z8K3": [
"Z20",
"Z36301"
],
"Z8K4": [
"Z14",
"Z36300"
],
"Z8K5": "Z36299"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "unquote listed quotes"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"resolve quoted calls"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "given a list of objects wrapped as quotes, returns the objects (with quoted function calls being evaluated)"
}
]
}
}
m3xxma2sc4wcjtlreb2t5qzhz8c4fvu
282425
282410
2026-06-12T00:50:35Z
GrounderUK
50
Added Z36302 to the approved list of implementations
282425
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36299"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z99"
},
"Z17K2": "Z36299K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of quote objects"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z8K3": [
"Z20",
"Z36301"
],
"Z8K4": [
"Z14",
"Z36300",
"Z36302"
],
"Z8K5": "Z36299"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "unquote listed quotes"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"resolve quoted calls"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "given a list of objects wrapped as quotes, returns the objects (with quoted function calls being evaluated)"
}
]
}
}
5ycb74qhj3n5pones57ulbz6jbufzbp
Z36300
0
85535
282406
2026-06-11T23:57:09Z
GrounderUK
50
282406
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36300"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36299",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z873",
"Z873K1": "Z899",
"Z873K2": {
"Z1K1": "Z18",
"Z18K1": "Z36299K1"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
16s0ishu7bpb8r6d9sm4rjmd2u2cx38
282411
282406
2026-06-12T00:07:22Z
GrounderUK
50
[[Z1002]]
282411
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36300"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36299",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z873",
"Z873K1": "Z899",
"Z873K2": {
"Z1K1": "Z18",
"Z18K1": "Z36299K1"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "unquote listed quotes, Composition: map"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
gir5ihz90akek0lhtjw7ju8wln7jv7b
Z36301
0
85536
282409
2026-06-12T00:06:02Z
GrounderUK
50
[[Z36299]]➕[[Z20]]
282409
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36301"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36299",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36299",
"Z36299K1": {
"Z1K1": "Z7",
"Z7K1": "Z873",
"Z873K1": "Z16575",
"Z873K2": [
"Z13518",
{
"Z1K1": "Z13518",
"Z13518K1": "1"
},
{
"Z1K1": "Z13518",
"Z13518K1": "2"
},
{
"Z1K1": "Z13518",
"Z13518K1": "3"
},
{
"Z1K1": "Z13518",
"Z13518K1": "4"
},
{
"Z1K1": "Z13518",
"Z13518K1": "5"
},
{
"Z1K1": "Z13518",
"Z13518K1": "6"
},
{
"Z1K1": "Z13518",
"Z13518K1": "7"
},
{
"Z1K1": "Z13518",
"Z13518K1": "8"
},
{
"Z1K1": "Z13518",
"Z13518K1": "9"
},
{
"Z1K1": "Z13518",
"Z13518K1": "10"
},
{
"Z1K1": "Z13518",
"Z13518K1": "11"
},
{
"Z1K1": "Z13518",
"Z13518K1": "12"
},
{
"Z1K1": "Z13518",
"Z13518K1": "13"
},
{
"Z1K1": "Z13518",
"Z13518K1": "14"
},
{
"Z1K1": "Z13518",
"Z13518K1": "15"
},
{
"Z1K1": "Z13518",
"Z13518K1": "16"
},
{
"Z1K1": "Z13518",
"Z13518K1": "17"
},
{
"Z1K1": "Z13518",
"Z13518K1": "18"
},
{
"Z1K1": "Z13518",
"Z13518K1": "19"
},
{
"Z1K1": "Z13518",
"Z13518K1": "20"
},
{
"Z1K1": "Z13518",
"Z13518K1": "21"
},
{
"Z1K1": "Z13518",
"Z13518K1": "22"
},
{
"Z1K1": "Z13518",
"Z13518K1": "23"
},
{
"Z1K1": "Z13518",
"Z13518K1": "24"
},
{
"Z1K1": "Z13518",
"Z13518K1": "25"
},
{
"Z1K1": "Z13518",
"Z13518K1": "26"
},
{
"Z1K1": "Z13518",
"Z13518K1": "27"
},
{
"Z1K1": "Z13518",
"Z13518K1": "28"
},
{
"Z1K1": "Z13518",
"Z13518K1": "29"
},
{
"Z1K1": "Z13518",
"Z13518K1": "30"
},
{
"Z1K1": "Z13518",
"Z13518K1": "31"
},
{
"Z1K1": "Z13518",
"Z13518K1": "32"
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z889",
"Z889K2": [
"Z13518",
{
"Z1K1": "Z13518",
"Z13518K1": "1"
},
{
"Z1K1": "Z13518",
"Z13518K1": "2"
},
{
"Z1K1": "Z13518",
"Z13518K1": "3"
},
{
"Z1K1": "Z13518",
"Z13518K1": "4"
},
{
"Z1K1": "Z13518",
"Z13518K1": "5"
},
{
"Z1K1": "Z13518",
"Z13518K1": "6"
},
{
"Z1K1": "Z13518",
"Z13518K1": "7"
},
{
"Z1K1": "Z13518",
"Z13518K1": "8"
},
{
"Z1K1": "Z13518",
"Z13518K1": "9"
},
{
"Z1K1": "Z13518",
"Z13518K1": "10"
},
{
"Z1K1": "Z13518",
"Z13518K1": "11"
},
{
"Z1K1": "Z13518",
"Z13518K1": "12"
},
{
"Z1K1": "Z13518",
"Z13518K1": "13"
},
{
"Z1K1": "Z13518",
"Z13518K1": "14"
},
{
"Z1K1": "Z13518",
"Z13518K1": "15"
},
{
"Z1K1": "Z13518",
"Z13518K1": "16"
},
{
"Z1K1": "Z13518",
"Z13518K1": "17"
},
{
"Z1K1": "Z13518",
"Z13518K1": "18"
},
{
"Z1K1": "Z13518",
"Z13518K1": "19"
},
{
"Z1K1": "Z13518",
"Z13518K1": "20"
},
{
"Z1K1": "Z13518",
"Z13518K1": "21"
},
{
"Z1K1": "Z13518",
"Z13518K1": "22"
},
{
"Z1K1": "Z13518",
"Z13518K1": "23"
},
{
"Z1K1": "Z13518",
"Z13518K1": "24"
},
{
"Z1K1": "Z13518",
"Z13518K1": "25"
},
{
"Z1K1": "Z13518",
"Z13518K1": "26"
},
{
"Z1K1": "Z13518",
"Z13518K1": "27"
},
{
"Z1K1": "Z13518",
"Z13518K1": "28"
},
{
"Z1K1": "Z13518",
"Z13518K1": "29"
},
{
"Z1K1": "Z13518",
"Z13518K1": "30"
},
{
"Z1K1": "Z13518",
"Z13518K1": "31"
},
{
"Z1K1": "Z13518",
"Z13518K1": "32"
}
],
"Z889K3": "Z13522"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "32 quoted Natural numbers unquoted"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
65lqb33k39ewwemuavoh1albs83zzez
Z36302
0
85537
282424
2026-06-12T00:49:39Z
GrounderUK
50
[[Z36299]]➕[[Z14]]
282424
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36302"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36299",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z813",
"Z813K1": {
"Z1K1": "Z18",
"Z18K1": "Z36299K1"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z36299K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z810",
"Z810K1": {
"Z1K1": "Z7",
"Z7K1": "Z899",
"Z899K1": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z18",
"Z18K1": "Z36299K1"
}
}
},
"Z810K2": {
"Z1K1": "Z7",
"Z7K1": "Z36299",
"Z36299K1": {
"Z1K1": "Z7",
"Z7K1": "Z812",
"Z812K1": {
"Z1K1": "Z18",
"Z18K1": "Z36299K1"
}
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "unquote listed quotes, Composition: recursive"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
rcswniowt6d7syt8ikq3b27wyxi18wb
User talk:七八年再来一次
3
85538
282428
2026-06-12T00:55:54Z
99of9
1622
welcome
282428
wikitext
text/x-wiki
{{welcome}} --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 00:55, 12 June 2026 (UTC)
dr9uprj96izbn96wkoijtvr5bvbhopp
Translations:Template:Technical documentation navbox/1/zh-hans
1198
85539
282433
2026-06-12T01:15:40Z
七八年再来一次
10776
Created page with "维基函数技术文档"
282433
wikitext
text/x-wiki
维基函数技术文档
29vtgm2ctbrlxxmxz3db2d5nfk32pxi
Template:Technical documentation navbox/zh-hans
10
85540
282434
2026-06-12T01:15:43Z
七八年再来一次
10776
Created page with "维基函数技术文档"
282434
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! <span lang="en" dir="ltr" class="mw-content-ltr">General overviews</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Function model|Function model]]</span>
}}
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">User-facing features</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Support for Wikidata content|Support for Wikidata content]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Reserved ZIDs|Reserved ZIDs]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Type|Type]]</span>
}}
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Back-end specifics</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Execution targets|Execution targets]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Representing identity|Representing identity]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM, Rust, and Speculation]]</span>
}}
|}
<!--
--><noinclude>
{{documentation|content=
<span lang="en" dir="ltr" class="mw-content-ltr">This template allows to navigate through the technical documentation of Wikifunctions.</span>
}}
</noinclude>
9ux6anztoe1t0ma1wzl9sdqjr9wtwsg
282441
282434
2026-06-12T01:21:17Z
七八年再来一次
10776
Created page with "模板:技术文档导航栏"
282441
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! 概述
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Function model|Function model]]</span>
}}
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">User-facing features</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Support for Wikidata content|Support for Wikidata content]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Reserved ZIDs|Reserved ZIDs]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Type|Type]]</span>
}}
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Back-end specifics</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Execution targets|Execution targets]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Representing identity|Representing identity]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM, Rust, and Speculation]]</span>
}}
|}
<!--
--><noinclude>
{{documentation|content=
<span lang="en" dir="ltr" class="mw-content-ltr">This template allows to navigate through the technical documentation of Wikifunctions.</span>
}}
</noinclude>
i3x6v3xp540hi9x1b53l3dviwraaz6f
282443
282441
2026-06-12T01:21:33Z
七八年再来一次
10776
Created page with "[[$1|函数模型]]"
282443
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! 概述
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Function model|函数模型]]
}}
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">User-facing features</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Support for Wikidata content|Support for Wikidata content]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Reserved ZIDs|Reserved ZIDs]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Type|Type]]</span>
}}
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Back-end specifics</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Execution targets|Execution targets]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Representing identity|Representing identity]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM, Rust, and Speculation]]</span>
}}
|}
<!--
--><noinclude>
{{documentation|content=
<span lang="en" dir="ltr" class="mw-content-ltr">This template allows to navigate through the technical documentation of Wikifunctions.</span>
}}
</noinclude>
aurw2y85cx8x0zzok1g1lz23yzczpwz
282446
282443
2026-06-12T01:21:56Z
七八年再来一次
10776
Created page with "面向用户的功能"
282446
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! 概述
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Function model|函数模型]]
}}
|-
! 面向用户的功能
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Support for Wikidata content|Support for Wikidata content]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Reserved ZIDs|Reserved ZIDs]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Type|Type]]</span>
}}
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Back-end specifics</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Execution targets|Execution targets]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Representing identity|Representing identity]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM, Rust, and Speculation]]</span>
}}
|}
<!--
--><noinclude>
{{documentation|content=
<span lang="en" dir="ltr" class="mw-content-ltr">This template allows to navigate through the technical documentation of Wikifunctions.</span>
}}
</noinclude>
9nr1v45ykfdpmkpoceedjf1dasj927a
282448
282446
2026-06-12T01:22:11Z
七八年再来一次
10776
Created page with "[[$1|对维基数据内容的支持]]"
282448
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! 概述
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Function model|函数模型]]
}}
|-
! 面向用户的功能
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Support for Wikidata content|对维基数据内容的支持]]
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Reserved ZIDs|Reserved ZIDs]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Type|Type]]</span>
}}
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Back-end specifics</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Execution targets|Execution targets]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Representing identity|Representing identity]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM, Rust, and Speculation]]</span>
}}
|}
<!--
--><noinclude>
{{documentation|content=
<span lang="en" dir="ltr" class="mw-content-ltr">This template allows to navigate through the technical documentation of Wikifunctions.</span>
}}
</noinclude>
gja6u5k1xaihwi8ddz7p0zwe2wgfd3l
282450
282448
2026-06-12T01:23:29Z
七八年再来一次
10776
Created page with "[[$1|保留的 Z 编号]]"
282450
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! 概述
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Function model|函数模型]]
}}
|-
! 面向用户的功能
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Support for Wikidata content|对维基数据内容的支持]]
* [[Special:MyLanguage/Wikifunctions:Reserved ZIDs|保留的 Z 编号]]
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Type|Type]]</span>
}}
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Back-end specifics</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Execution targets|Execution targets]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Representing identity|Representing identity]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM, Rust, and Speculation]]</span>
}}
|}
<!--
--><noinclude>
{{documentation|content=
<span lang="en" dir="ltr" class="mw-content-ltr">This template allows to navigate through the technical documentation of Wikifunctions.</span>
}}
</noinclude>
0sqztzna9ehv35zlglsauldqh7fr6x7
282452
282450
2026-06-12T01:23:45Z
七八年再来一次
10776
Created page with "[[$1|类]]"
282452
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! 概述
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Function model|函数模型]]
}}
|-
! 面向用户的功能
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Support for Wikidata content|对维基数据内容的支持]]
* [[Special:MyLanguage/Wikifunctions:Reserved ZIDs|保留的 Z 编号]]
* [[Special:MyLanguage/Wikifunctions:Type|类]]
}}
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Back-end specifics</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Execution targets|Execution targets]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Representing identity|Representing identity]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM, Rust, and Speculation]]</span>
}}
|}
<!--
--><noinclude>
{{documentation|content=
<span lang="en" dir="ltr" class="mw-content-ltr">This template allows to navigate through the technical documentation of Wikifunctions.</span>
}}
</noinclude>
akrcetj8f918o3uelaaasnhi49n3gy5
282454
282452
2026-06-12T01:24:13Z
七八年再来一次
10776
Created page with "后端细节"
282454
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! 概述
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Function model|函数模型]]
}}
|-
! 面向用户的功能
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Support for Wikidata content|对维基数据内容的支持]]
* [[Special:MyLanguage/Wikifunctions:Reserved ZIDs|保留的 Z 编号]]
* [[Special:MyLanguage/Wikifunctions:Type|类]]
}}
|-
! 后端细节
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Execution targets|Execution targets]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Representing identity|Representing identity]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM, Rust, and Speculation]]</span>
}}
|}
<!--
--><noinclude>
{{documentation|content=
<span lang="en" dir="ltr" class="mw-content-ltr">This template allows to navigate through the technical documentation of Wikifunctions.</span>
}}
</noinclude>
arhbdrzmn4ze942uvzjaoctqa857cxo
282456
282454
2026-06-12T01:24:18Z
七八年再来一次
10776
Created page with "[[$1|演绎靶标]]"
282456
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! 概述
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Function model|函数模型]]
}}
|-
! 面向用户的功能
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Support for Wikidata content|对维基数据内容的支持]]
* [[Special:MyLanguage/Wikifunctions:Reserved ZIDs|保留的 Z 编号]]
* [[Special:MyLanguage/Wikifunctions:Type|类]]
}}
|-
! 后端细节
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Execution targets|演绎靶标]]
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Representing identity|Representing identity]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM, Rust, and Speculation]]</span>
}}
|}
<!--
--><noinclude>
{{documentation|content=
<span lang="en" dir="ltr" class="mw-content-ltr">This template allows to navigate through the technical documentation of Wikifunctions.</span>
}}
</noinclude>
6mo1q68nqke5aohmnzmik84b5bi3utv
282458
282456
2026-06-12T01:24:47Z
七八年再来一次
10776
Created page with "[[$1|标志标识]]"
282458
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! 概述
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Function model|函数模型]]
}}
|-
! 面向用户的功能
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Support for Wikidata content|对维基数据内容的支持]]
* [[Special:MyLanguage/Wikifunctions:Reserved ZIDs|保留的 Z 编号]]
* [[Special:MyLanguage/Wikifunctions:Type|类]]
}}
|-
! 后端细节
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Execution targets|演绎靶标]]
* [[Special:MyLanguage/Wikifunctions:Representing identity|标志标识]]
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM, Rust, and Speculation]]</span>
}}
|}
<!--
--><noinclude>
{{documentation|content=
<span lang="en" dir="ltr" class="mw-content-ltr">This template allows to navigate through the technical documentation of Wikifunctions.</span>
}}
</noinclude>
3uteo5u8thxa5k042h4ykmuo3k03m5a
282460
282458
2026-06-12T01:26:14Z
七八年再来一次
10776
Created page with "[[$1|WASM,Rust,以及猜测]]"
282460
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! 概述
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Function model|函数模型]]
}}
|-
! 面向用户的功能
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Support for Wikidata content|对维基数据内容的支持]]
* [[Special:MyLanguage/Wikifunctions:Reserved ZIDs|保留的 Z 编号]]
* [[Special:MyLanguage/Wikifunctions:Type|类]]
}}
|-
! 后端细节
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Execution targets|演绎靶标]]
* [[Special:MyLanguage/Wikifunctions:Representing identity|标志标识]]
* [[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM,Rust,以及猜测]]
}}
|}
<!--
--><noinclude>
{{documentation|content=
<span lang="en" dir="ltr" class="mw-content-ltr">This template allows to navigate through the technical documentation of Wikifunctions.</span>
}}
</noinclude>
q3kgaoso42gf943lubrc0f30v2uh5ke
282462
282460
2026-06-12T01:27:00Z
七八年再来一次
10776
Created page with "此模板允许在维基函数的技术文档间导航。"
282462
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! 概述
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Function model|函数模型]]
}}
|-
! 面向用户的功能
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Support for Wikidata content|对维基数据内容的支持]]
* [[Special:MyLanguage/Wikifunctions:Reserved ZIDs|保留的 Z 编号]]
* [[Special:MyLanguage/Wikifunctions:Type|类]]
}}
|-
! 后端细节
|-
| {{Flatlist|
* [[Special:MyLanguage/Wikifunctions:Execution targets|演绎靶标]]
* [[Special:MyLanguage/Wikifunctions:Representing identity|标志标识]]
* [[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM,Rust,以及猜测]]
}}
|}
<!--
--><noinclude>
{{documentation|content=
此模板允许在维基函数的技术文档间导航。
}}
</noinclude>
8mi9ycok41ah3m3dh5bg0x097jtca7n
Translations:Template:Technical documentation navbox/sandbox/1/zh-hans
1198
85541
282436
2026-06-12T01:15:48Z
七八年再来一次
10776
Created page with "维基函数技术文档"
282436
wikitext
text/x-wiki
维基函数技术文档
29vtgm2ctbrlxxmxz3db2d5nfk32pxi
Template:Technical documentation navbox/sandbox/zh-hans
10
85542
282437
2026-06-12T01:15:52Z
七八年再来一次
10776
Created page with "维基函数技术文档"
282437
wikitext
text/x-wiki
<noinclude>
<languages/>
</noinclude><!--
-->{| class="wikitable" style="float:right; max-width: 30em;"
|+ 维基函数技术文档
! <span lang="en" dir="ltr" class="mw-content-ltr">General overviews</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Function model|Function model]]</span>
}}
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">User-facing features</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Support for Wikidata content|Support for Wikidata content]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Reserved ZIDs|Reserved ZIDs]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Type|Type]]</span>
}}
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Back-end specifics</span>
|-
| {{Flatlist|
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Execution targets|Execution targets]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Representing identity|Representing identity]]</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:WASM, Rust, and possibilities related thereto|WASM, Rust, and Speculation]]</span>
}}
|}
<!--
--><noinclude>
{{documentation|content=
<span lang="en" dir="ltr" class="mw-content-ltr">This template allows to navigate through the technical documentation of Wikifunctions.</span>
}}
</noinclude>
9ux6anztoe1t0ma1wzl9sdqjr9wtwsg
Translations:Template:Technical documentation navbox/Page display title/zh-hans
1198
85543
282439
2026-06-12T01:20:52Z
七八年再来一次
10776
Created page with "模板:技术文档导航栏"
282439
wikitext
text/x-wiki
模板:技术文档导航栏
pyrcrosbgj7nvcdgza92sicehqxeunt
Translations:Template:Technical documentation navbox/2/zh-hans
1198
85544
282440
2026-06-12T01:21:15Z
七八年再来一次
10776
Created page with "概述"
282440
wikitext
text/x-wiki
概述
2h3o71syuh7t9rw6c503fde6tharpv9
Translations:Template:Technical documentation navbox/3/zh-hans
1198
85545
282442
2026-06-12T01:21:29Z
七八年再来一次
10776
Created page with "[[$1|函数模型]]"
282442
wikitext
text/x-wiki
[[$1|函数模型]]
qlixad7v1zb02kn3sdtkpufufiwo1a9
Translations:Template:Technical documentation navbox/4/zh-hans
1198
85546
282445
2026-06-12T01:21:52Z
七八年再来一次
10776
Created page with "面向用户的功能"
282445
wikitext
text/x-wiki
面向用户的功能
73woevk1enjvdcpxy5at6g850qf4ms3
Translations:Template:Technical documentation navbox/5/zh-hans
1198
85547
282447
2026-06-12T01:22:08Z
七八年再来一次
10776
Created page with "[[$1|对维基数据内容的支持]]"
282447
wikitext
text/x-wiki
[[$1|对维基数据内容的支持]]
2pmqrckub13ai7i17pswnqdua03h8f1
Translations:Template:Technical documentation navbox/6/zh-hans
1198
85548
282449
2026-06-12T01:23:25Z
七八年再来一次
10776
Created page with "[[$1|保留的 Z 编号]]"
282449
wikitext
text/x-wiki
[[$1|保留的 Z 编号]]
h9sg4ts7v7mvhiq7craibwr70y2ieai
Translations:Template:Technical documentation navbox/7/zh-hans
1198
85549
282451
2026-06-12T01:23:42Z
七八年再来一次
10776
Created page with "[[$1|类]]"
282451
wikitext
text/x-wiki
[[$1|类]]
nqktfr8nwhil5nefdjy5bb0if3m91xl
Translations:Template:Technical documentation navbox/8/zh-hans
1198
85550
282453
2026-06-12T01:24:09Z
七八年再来一次
10776
Created page with "后端细节"
282453
wikitext
text/x-wiki
后端细节
n760hp4fv6mslznuju414ea94m5k9ex
Translations:Template:Technical documentation navbox/9/zh-hans
1198
85551
282455
2026-06-12T01:24:13Z
七八年再来一次
10776
Created page with "[[$1|演绎靶标]]"
282455
wikitext
text/x-wiki
[[$1|演绎靶标]]
al3ezn9bvbnagcen1xm6p469tko9fee
Translations:Template:Technical documentation navbox/10/zh-hans
1198
85552
282457
2026-06-12T01:24:44Z
七八年再来一次
10776
Created page with "[[$1|标志标识]]"
282457
wikitext
text/x-wiki
[[$1|标志标识]]
1d933huuov9z1vijaxy0reg4uppglj1
Translations:Template:Technical documentation navbox/11/zh-hans
1198
85553
282459
2026-06-12T01:26:10Z
七八年再来一次
10776
Created page with "[[$1|WASM,Rust,以及猜测]]"
282459
wikitext
text/x-wiki
[[$1|WASM,Rust,以及猜测]]
944t1e2ojk8mwd4ycj8x3soskewrppa
Translations:Template:Technical documentation navbox/12/zh-hans
1198
85554
282461
2026-06-12T01:26:56Z
七八年再来一次
10776
Created page with "此模板允许在维基函数的技术文档间导航。"
282461
wikitext
text/x-wiki
此模板允许在维基函数的技术文档间导航。
253gi849f4fwbfep8myjo8h5vcexo97
Translations:Template:Welcome/text/2/zh-hans
1198
85555
282463
2026-06-12T01:42:41Z
七八年再来一次
10776
Created page with "维基函数欢迎您,{{{user}}}!"
282463
wikitext
text/x-wiki
维基函数欢迎您,{{{user}}}!
gku68dyvecssqtxua348ej12d4psgem
Template:Welcome/text/zh-hans
10
85556
282464
2026-06-12T01:42:45Z
七八年再来一次
10776
Created page with "维基函数欢迎您,{{{user}}}!"
282464
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
<span lang="en" dir="ltr" class="mw-content-ltr">Wikifunctions is an open repository of code functions that anyone can use and contribute to!</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Do you need some help getting started? Here are some pages you can familiarize yourself with:</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Introduction|Introduction]] – An introduction to the project.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Community portal|Community portal]] – The portal for community members.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Help:Contents|Contents]] – The main help page for editing and using the site.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary|Glossary]] – Definitions of frequently used terms.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:FAQ|FAQ]] – Frequently asked questions.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Project chat|Project chat]] – Discussions about the project.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Please remember to sign your messages on talk pages by typing four tildes (<nowiki>~~~~</nowiki>); this will automatically insert your username and the date.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">If you have any questions, don't hesitate to ask on [[Wikifunctions:Project chat|Project chat]]. Once again, welcome, and I hope you quickly feel comfortable here, and become an active contributor to Wikifunctions.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Best regards!</span> {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
6z4mc3v44tswlq2xsdjuzv4emb99hpt
282466
282464
2026-06-12T01:44:07Z
七八年再来一次
10776
Created page with "维基函数是一个任何人均可使用并为之贡献的公开代码仓库!"
282466
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
<span lang="en" dir="ltr" class="mw-content-ltr">Do you need some help getting started? Here are some pages you can familiarize yourself with:</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Introduction|Introduction]] – An introduction to the project.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Community portal|Community portal]] – The portal for community members.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Help:Contents|Contents]] – The main help page for editing and using the site.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary|Glossary]] – Definitions of frequently used terms.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:FAQ|FAQ]] – Frequently asked questions.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Project chat|Project chat]] – Discussions about the project.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Please remember to sign your messages on talk pages by typing four tildes (<nowiki>~~~~</nowiki>); this will automatically insert your username and the date.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">If you have any questions, don't hesitate to ask on [[Wikifunctions:Project chat|Project chat]]. Once again, welcome, and I hope you quickly feel comfortable here, and become an active contributor to Wikifunctions.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Best regards!</span> {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
l61accvj9sbtwfcaobnw1zhtiswxxpz
282468
282466
2026-06-12T01:46:34Z
七八年再来一次
10776
Created page with "需要一些协助来入门?以下一些页面您可先行参考:"
282468
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Introduction|Introduction]] – An introduction to the project.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Community portal|Community portal]] – The portal for community members.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Help:Contents|Contents]] – The main help page for editing and using the site.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary|Glossary]] – Definitions of frequently used terms.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:FAQ|FAQ]] – Frequently asked questions.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Project chat|Project chat]] – Discussions about the project.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Please remember to sign your messages on talk pages by typing four tildes (<nowiki>~~~~</nowiki>); this will automatically insert your username and the date.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">If you have any questions, don't hesitate to ask on [[Wikifunctions:Project chat|Project chat]]. Once again, welcome, and I hope you quickly feel comfortable here, and become an active contributor to Wikifunctions.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Best regards!</span> {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
m4xfii1djqk4xo2za886tm3qjgi3d1z
282470
282468
2026-06-12T01:47:11Z
七八年再来一次
10776
Created page with "[[$1|简介]]——项目的一个简要介绍。"
282470
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Community portal|Community portal]] – The portal for community members.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Help:Contents|Contents]] – The main help page for editing and using the site.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary|Glossary]] – Definitions of frequently used terms.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:FAQ|FAQ]] – Frequently asked questions.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Project chat|Project chat]] – Discussions about the project.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Please remember to sign your messages on talk pages by typing four tildes (<nowiki>~~~~</nowiki>); this will automatically insert your username and the date.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">If you have any questions, don't hesitate to ask on [[Wikifunctions:Project chat|Project chat]]. Once again, welcome, and I hope you quickly feel comfortable here, and become an active contributor to Wikifunctions.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Best regards!</span> {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
mvfkabx1zfbgabmgvbgdnv000tltsok
282472
282470
2026-06-12T01:47:46Z
七八年再来一次
10776
Created page with "[[$1|社区门户]]——面向社区成员的入口。"
282472
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Help:Contents|Contents]] – The main help page for editing and using the site.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary|Glossary]] – Definitions of frequently used terms.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:FAQ|FAQ]] – Frequently asked questions.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Project chat|Project chat]] – Discussions about the project.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Please remember to sign your messages on talk pages by typing four tildes (<nowiki>~~~~</nowiki>); this will automatically insert your username and the date.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">If you have any questions, don't hesitate to ask on [[Wikifunctions:Project chat|Project chat]]. Once again, welcome, and I hope you quickly feel comfortable here, and become an active contributor to Wikifunctions.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Best regards!</span> {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
rg4jj004uzmepnm6l4oivzcj1fmdv6f
282474
282472
2026-06-12T01:48:26Z
七八年再来一次
10776
Created page with "[[$1|目录]]——编辑和使用本网站的主要帮助页面。"
282474
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:Glossary|Glossary]] – Definitions of frequently used terms.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:FAQ|FAQ]] – Frequently asked questions.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Project chat|Project chat]] – Discussions about the project.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Please remember to sign your messages on talk pages by typing four tildes (<nowiki>~~~~</nowiki>); this will automatically insert your username and the date.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">If you have any questions, don't hesitate to ask on [[Wikifunctions:Project chat|Project chat]]. Once again, welcome, and I hope you quickly feel comfortable here, and become an active contributor to Wikifunctions.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Best regards!</span> {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
2jxpj82gzkv7vyofe3u6d8nn0lwrada
282476
282474
2026-06-12T01:48:48Z
七八年再来一次
10776
Created page with "[[$1|术语表]]——常用术语的定义。"
282476
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Special:MyLanguage/Wikifunctions:FAQ|FAQ]] – Frequently asked questions.</span>
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Project chat|Project chat]] – Discussions about the project.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Please remember to sign your messages on talk pages by typing four tildes (<nowiki>~~~~</nowiki>); this will automatically insert your username and the date.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">If you have any questions, don't hesitate to ask on [[Wikifunctions:Project chat|Project chat]]. Once again, welcome, and I hope you quickly feel comfortable here, and become an active contributor to Wikifunctions.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Best regards!</span> {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
fbkrno1a3wyaggvefylxeor4racdjfo
282478
282476
2026-06-12T01:49:05Z
七八年再来一次
10776
Created page with "[[$1|常见问题]]——常见问题解答。"
282478
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* [[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* <span lang="en" dir="ltr" class="mw-content-ltr">[[Wikifunctions:Project chat|Project chat]] – Discussions about the project.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Please remember to sign your messages on talk pages by typing four tildes (<nowiki>~~~~</nowiki>); this will automatically insert your username and the date.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">If you have any questions, don't hesitate to ask on [[Wikifunctions:Project chat|Project chat]]. Once again, welcome, and I hope you quickly feel comfortable here, and become an active contributor to Wikifunctions.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Best regards!</span> {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
i2r97jzov1gx8wca3gvfil51fer5npm
282480
282478
2026-06-12T01:49:29Z
七八年再来一次
10776
Created page with "[[$1|互助客栈]]——关于该项目的讨论。"
282480
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* [[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* [[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
<span lang="en" dir="ltr" class="mw-content-ltr">Please remember to sign your messages on talk pages by typing four tildes (<nowiki>~~~~</nowiki>); this will automatically insert your username and the date.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">If you have any questions, don't hesitate to ask on [[Wikifunctions:Project chat|Project chat]]. Once again, welcome, and I hope you quickly feel comfortable here, and become an active contributor to Wikifunctions.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Best regards!</span> {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
2mq3pm0j2fquq2xdn4ue32i43rt5y8m
282482
282480
2026-06-12T01:50:18Z
七八年再来一次
10776
Created page with "请记得在讨论页上签名时键入四浪线($tildes);这会自动插入您的用户名和日期。"
282482
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* [[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* [[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
<span lang="en" dir="ltr" class="mw-content-ltr">If you have any questions, don't hesitate to ask on [[Wikifunctions:Project chat|Project chat]]. Once again, welcome, and I hope you quickly feel comfortable here, and become an active contributor to Wikifunctions.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">Best regards!</span> {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
qmpnu7xbf10z9q2wj4gedl0k63wygf1
282484
282482
2026-06-12T01:51:56Z
七八年再来一次
10776
Created page with "如果您有任何疑问,请在[[$1|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。"
282484
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* [[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* [[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
<span lang="en" dir="ltr" class="mw-content-ltr">Best regards!</span> {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
353ayj20yu6tx6jbqs9l97872w2b5ev
282486
282484
2026-06-12T01:54:01Z
七八年再来一次
10776
Created page with " 此致 敬礼!"
282486
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* [[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* [[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
tpaaveca53ae8gk028em3vlqpd0vslp
282489
282486
2026-06-12T01:59:41Z
七八年再来一次
10776
282489
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* [[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* [[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
<br>敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
nym865t5xmr3f7cijzxgt1n540xqwxl
282491
282489
2026-06-12T02:00:29Z
七八年再来一次
10776
282491
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* [[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* [[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
szkat7zgtq7b0tttjopqr7k76qg9umu
282493
282491
2026-06-12T02:02:10Z
七八年再来一次
10776
282493
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
:维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* [[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* [[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
iymifnum2bsf6c5v1q16wftlx9hsv6e
282496
282493
2026-06-12T02:02:34Z
七八年再来一次
10776
282496
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
:维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
:需要一些协助来入门?以下一些页面您可先行参考:
* :[[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* [[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* [[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
izy7vjxzto541dqhxlu1j7iaqw0iqqw
282499
282496
2026-06-12T02:02:38Z
七八年再来一次
10776
282499
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
:维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
:需要一些协助来入门?以下一些页面您可先行参考:
* :[[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* :[[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* :[[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* [[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* [[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
22p9vzn1vc9q2vdyaa0fju8da23xm62
282501
282499
2026-06-12T02:02:44Z
七八年再来一次
10776
282501
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
:维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
:需要一些协助来入门?以下一些页面您可先行参考:
* :[[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* :[[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* :[[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* :[[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* [[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* [[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
85w5vnxgd26op4b31mmem78ohc9mkly
282503
282501
2026-06-12T02:02:46Z
七八年再来一次
10776
282503
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
:维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
:需要一些协助来入门?以下一些页面您可先行参考:
* :[[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* :[[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* :[[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* :[[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* :[[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* [[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
bjmgy8w6ay0bsb8et5quq9bzpmkzydo
282505
282503
2026-06-12T02:02:49Z
七八年再来一次
10776
282505
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
:维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
:需要一些协助来入门?以下一些页面您可先行参考:
* :[[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* :[[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* :[[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* :[[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* :[[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* :[[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
ku4g2z0cvym7na54u7pou95fzojsslk
282507
282505
2026-06-12T02:02:55Z
七八年再来一次
10776
282507
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
:维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
:需要一些协助来入门?以下一些页面您可先行参考:
* :[[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* :[[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* :[[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* :[[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* :[[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* :[[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
:如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
mqoqz49w8zmz3qkslk9q8svd7f9be32
282509
282507
2026-06-12T02:03:01Z
七八年再来一次
10776
282509
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
:维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
:需要一些协助来入门?以下一些页面您可先行参考:
* :[[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* :[[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* :[[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* :[[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* :[[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* :[[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
:请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
:如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
65rh6fo17cqodwk6xssc93ndu9590kr
282513
282509
2026-06-12T02:08:49Z
七八年再来一次
10776
282513
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
:维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
:需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* :[[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* :[[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* :[[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
:请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
:如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
7sabp7dj8xasbzeq44o65awn1e96lgg
282515
282513
2026-06-12T02:08:52Z
七八年再来一次
10776
282515
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
:维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
:需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* :[[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* :[[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
:请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
:如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
7hkq05sz7sgikmrmr7i9ge21d0t35h5
282518
282515
2026-06-12T02:08:56Z
七八年再来一次
10776
282518
wikitext
text/x-wiki
<languages /><br />
<onlyinclude><div class="welcome mw-content-{{#dir:zh-hans}}" lang="zh-hans" dir="{{#dir:zh-hans}}">
<templatestyles src="Welcome/styles.css" />
[[File:Wikifunctions-logo.svg|{{dir|zh-hans|left|right}}|180px|link=|alt=]]
<strong>维基函数欢迎您,{{{user}}}!</strong>
:维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
:需要一些协助来入门?以下一些页面您可先行参考:
* [[Special:MyLanguage/Wikifunctions:Introduction|简介]]——项目的一个简要介绍。
* [[Wikifunctions:Community portal|社区门户]]——面向社区成员的入口。
* [[Special:MyLanguage/Help:Contents|目录]]——编辑和使用本网站的主要帮助页面。
* [[Special:MyLanguage/Wikifunctions:Glossary|术语表]]——常用术语的定义。
* [[Special:MyLanguage/Wikifunctions:FAQ|常见问题]]——常见问题解答。
* [[Wikifunctions:Project chat|互助客栈]]——关于该项目的讨论。
:请记得在讨论页上签名时键入四浪线(<nowiki>~~~~</nowiki>);这会自动插入您的用户名和日期。
:如果您有任何疑问,请在[[Wikifunctions:Project chat|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
:此致
敬礼! {{{1|}}}
</div></onlyinclude>
<noinclude>{{#ifeq:{{PAGENAME}}|Welcome/text|
[[Category:Welcome templates]]
[[Category:Subtemplates]]
}}
</noinclude>
65l4pp6oeop886j737hsge7ru6oohbv
Translations:Template:Welcome/text/3/zh-hans
1198
85557
282465
2026-06-12T01:44:03Z
七八年再来一次
10776
Created page with "维基函数是一个任何人均可使用并为之贡献的公开代码仓库!"
282465
wikitext
text/x-wiki
维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
5b0jecx207nupxdosod9rtn309zjp1x
282492
282465
2026-06-12T02:02:08Z
七八年再来一次
10776
282492
wikitext
text/x-wiki
:维基函数是一个任何人均可使用并为之贡献的公开代码仓库!
efkda6au9gegwjyyyh38ome9a55nc5f
Translations:Template:Welcome/text/4/zh-hans
1198
85558
282467
2026-06-12T01:46:30Z
七八年再来一次
10776
Created page with "需要一些协助来入门?以下一些页面您可先行参考:"
282467
wikitext
text/x-wiki
需要一些协助来入门?以下一些页面您可先行参考:
2p0mo8llem0f6wsddaapkgeyq86swbh
282494
282467
2026-06-12T02:02:30Z
七八年再来一次
10776
282494
wikitext
text/x-wiki
:需要一些协助来入门?以下一些页面您可先行参考:
t1si7wbww77wkkle233hgnb6lrx0kuf
Translations:Template:Welcome/text/5/zh-hans
1198
85559
282469
2026-06-12T01:47:07Z
七八年再来一次
10776
Created page with "[[$1|简介]]——项目的一个简要介绍。"
282469
wikitext
text/x-wiki
[[$1|简介]]——项目的一个简要介绍。
sxj9fd1h2cif0x9js7ocya5brdeely6
282495
282469
2026-06-12T02:02:32Z
七八年再来一次
10776
282495
wikitext
text/x-wiki
:[[$1|简介]]——项目的一个简要介绍。
lcu8uyqam4u8v4lwglgmx33ka43p4uh
282510
282495
2026-06-12T02:08:46Z
七八年再来一次
10776
282510
wikitext
text/x-wiki
[[$1|简介]]——项目的一个简要介绍。
sxj9fd1h2cif0x9js7ocya5brdeely6
Translations:Template:Welcome/text/6/zh-hans
1198
85560
282471
2026-06-12T01:47:42Z
七八年再来一次
10776
Created page with "[[$1|社区门户]]——面向社区成员的入口。"
282471
wikitext
text/x-wiki
[[$1|社区门户]]——面向社区成员的入口。
09d2j9zxncuuciich2591pt2bi597z3
282497
282471
2026-06-12T02:02:34Z
七八年再来一次
10776
282497
wikitext
text/x-wiki
:[[$1|社区门户]]——面向社区成员的入口。
n4fufkjpwv2ag47zdnoejwnv1naatau
282511
282497
2026-06-12T02:08:47Z
七八年再来一次
10776
282511
wikitext
text/x-wiki
[[$1|社区门户]]——面向社区成员的入口。
09d2j9zxncuuciich2591pt2bi597z3
Translations:Template:Welcome/text/7/zh-hans
1198
85561
282473
2026-06-12T01:48:22Z
七八年再来一次
10776
Created page with "[[$1|目录]]——编辑和使用本网站的主要帮助页面。"
282473
wikitext
text/x-wiki
[[$1|目录]]——编辑和使用本网站的主要帮助页面。
38a9vhv1lz2sh2tonff9t8l5dzd8d31
282498
282473
2026-06-12T02:02:37Z
七八年再来一次
10776
282498
wikitext
text/x-wiki
:[[$1|目录]]——编辑和使用本网站的主要帮助页面。
8pwebz30bab89ljzpcf16yc05wueq2v
282512
282498
2026-06-12T02:08:49Z
七八年再来一次
10776
282512
wikitext
text/x-wiki
[[$1|目录]]——编辑和使用本网站的主要帮助页面。
38a9vhv1lz2sh2tonff9t8l5dzd8d31
Translations:Template:Welcome/text/8/zh-hans
1198
85562
282475
2026-06-12T01:48:44Z
七八年再来一次
10776
Created page with "[[$1|术语表]]——常用术语的定义。"
282475
wikitext
text/x-wiki
[[$1|术语表]]——常用术语的定义。
7woyufljq9zmpg3q17srlfq9wmbl0xk
282500
282475
2026-06-12T02:02:40Z
七八年再来一次
10776
282500
wikitext
text/x-wiki
:[[$1|术语表]]——常用术语的定义。
oqa934dxk7k9rtj5w07llr0vnihn90u
282514
282500
2026-06-12T02:08:51Z
七八年再来一次
10776
282514
wikitext
text/x-wiki
[[$1|术语表]]——常用术语的定义。
7woyufljq9zmpg3q17srlfq9wmbl0xk
Translations:Template:Welcome/text/9/zh-hans
1198
85563
282477
2026-06-12T01:49:01Z
七八年再来一次
10776
Created page with "[[$1|常见问题]]——常见问题解答。"
282477
wikitext
text/x-wiki
[[$1|常见问题]]——常见问题解答。
as3qp7cpusooeuutdnzsi7c6rg8c1sm
282502
282477
2026-06-12T02:02:44Z
七八年再来一次
10776
282502
wikitext
text/x-wiki
:[[$1|常见问题]]——常见问题解答。
2hltkwpejr1hvqssaprc1261wdvbm7u
282516
282502
2026-06-12T02:08:53Z
七八年再来一次
10776
282516
wikitext
text/x-wiki
[[$1|常见问题]]——常见问题解答。
as3qp7cpusooeuutdnzsi7c6rg8c1sm
Translations:Template:Welcome/text/10/zh-hans
1198
85564
282479
2026-06-12T01:49:25Z
七八年再来一次
10776
Created page with "[[$1|互助客栈]]——关于该项目的讨论。"
282479
wikitext
text/x-wiki
[[$1|互助客栈]]——关于该项目的讨论。
ney3fbuyovggsb42dkwggno9ta9ib4s
282504
282479
2026-06-12T02:02:49Z
七八年再来一次
10776
282504
wikitext
text/x-wiki
:[[$1|互助客栈]]——关于该项目的讨论。
thcz5od3wlktxgn91nbpggkpacdo3m9
282517
282504
2026-06-12T02:08:55Z
七八年再来一次
10776
282517
wikitext
text/x-wiki
[[$1|互助客栈]]——关于该项目的讨论。
ney3fbuyovggsb42dkwggno9ta9ib4s
Translations:Template:Welcome/text/11/zh-hans
1198
85565
282481
2026-06-12T01:50:14Z
七八年再来一次
10776
Created page with "请记得在讨论页上签名时键入四浪线($tildes);这会自动插入您的用户名和日期。"
282481
wikitext
text/x-wiki
请记得在讨论页上签名时键入四浪线($tildes);这会自动插入您的用户名和日期。
gim90d8p8ny6z4g0ozex9e1drmuvjwv
282508
282481
2026-06-12T02:03:00Z
七八年再来一次
10776
282508
wikitext
text/x-wiki
:请记得在讨论页上签名时键入四浪线($tildes);这会自动插入您的用户名和日期。
bjbwhdfolz9vpy4forr0g73amp8wltc
Translations:Template:Welcome/text/12/zh-hans
1198
85566
282483
2026-06-12T01:51:52Z
七八年再来一次
10776
Created page with "如果您有任何疑问,请在[[$1|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。"
282483
wikitext
text/x-wiki
如果您有任何疑问,请在[[$1|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
664qzpl9csnxm2h04oi3zsoszfgmnax
282506
282483
2026-06-12T02:02:55Z
七八年再来一次
10776
282506
wikitext
text/x-wiki
:如果您有任何疑问,请在[[$1|互助客栈]]上随时提问。再一次地,欢迎您,并希望您能尽快适应这里,然后成为维基函数的一名活跃贡献者。
69ixj3pq5su06lc02tvcn9dlfwkdhr4
Translations:Template:Welcome/text/13/zh-hans
1198
85567
282485
2026-06-12T01:53:57Z
七八年再来一次
10776
Created page with " 此致 敬礼!"
282485
wikitext
text/x-wiki
此致
敬礼!
9b7aqzfi84nqf4d7r3oq88un3cgv3c1
282488
282485
2026-06-12T01:59:40Z
七八年再来一次
10776
282488
wikitext
text/x-wiki
:此致
<br>敬礼!
pq9xmzwilrdnmw1hohef01pfzo7avwt
282490
282488
2026-06-12T02:00:28Z
七八年再来一次
10776
282490
wikitext
text/x-wiki
:此致
敬礼!
b6dcsh87wyhexzycs6murbbn87zwhsp
Translations:Template:Welcome/text/13/qqq
1198
85568
282487
2026-06-12T01:54:31Z
七八年再来一次
10776
Created page with "这里或许可用此致敬礼"
282487
wikitext
text/x-wiki
这里或许可用此致敬礼
nyp36cau1emt4j99cwltf7ristqz99k
Talk:Z27627
1
85569
282520
2026-06-12T02:59:33Z
99of9
1622
/* switch adjectival to a QID */ new section
282520
wikitext
text/x-wiki
== switch adjectival to a QID ==
Since lexemes are language specific, I think the headline function should be specified with QIDs not LIDs. Does anyone object to changing this? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:59, 12 June 2026 (UTC)
7n8iy4xglijjhxlbck6un1dp5rygsh4
282573
282520
2026-06-12T11:54:00Z
Jdforrester (WMF)
4
/* switch adjectival to a QID */ Reply
282573
wikitext
text/x-wiki
== switch adjectival to a QID ==
Since lexemes are language specific, I think the headline function should be specified with QIDs not LIDs. Does anyone object to changing this? --[[User:99of9|99of9]] ([[User talk:99of9|talk]]) 02:59, 12 June 2026 (UTC)
:Happy for this change to happen! If I recall correctly, it wasn't possible last year, but that's the right change to make. [[User:Jdforrester (WMF)|Jdforrester (WMF)]] ([[User talk:Jdforrester (WMF)|talk]]) 11:54, 12 June 2026 (UTC)
19g0wuig5prwl4t85mblhyizuhuenf4
Z36303
0
85570
282528
2026-06-12T03:09:25Z
99of9
1622
282528
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36303"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z36303K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial text"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36303"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "convert string, monolingual, or html to html"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
78q2mp5l5kx2wppd6l4h2tptkbmx18w
282530
282528
2026-06-12T03:11:49Z
99of9
1622
Added Z36304 to the approved list of implementations
282530
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36303"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z36303K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial text"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36304"
],
"Z8K5": "Z36303"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "convert string, monolingual, or html to html"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
9psishc7fjamiq10baag0ps176vx5ep
282532
282530
2026-06-12T03:12:35Z
99of9
1622
Added Z36305 to the approved list of test cases
282532
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36303"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z36303K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial text"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36305"
],
"Z8K4": [
"Z14",
"Z36304"
],
"Z8K5": "Z36303"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "convert string, monolingual, or html to html"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
3dfzgx854bksh7r59oreba8hvn0cxme
282534
282532
2026-06-12T03:15:39Z
99of9
1622
Added Z36306 to the approved list of test cases
282534
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36303"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z36303K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial text"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36305",
"Z36306"
],
"Z8K4": [
"Z14",
"Z36304"
],
"Z8K5": "Z36303"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "convert string, monolingual, or html to html"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
a7z5t05kte0ixsxzy379rehovgnh02f
282536
282534
2026-06-12T03:16:40Z
99of9
1622
Added Z36307 to the approved list of test cases
282536
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36303"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z36303K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial text"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36305",
"Z36306",
"Z36307"
],
"Z8K4": [
"Z14",
"Z36304"
],
"Z8K5": "Z36303"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "convert string, monolingual, or html to html"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
m2xw5mtdo1daqwrg7oiv2zle2ty3193
282537
282536
2026-06-12T03:17:27Z
99of9
1622
Removed Z36304 from the approved list of implementations
282537
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36303"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z36303K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial text"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36305",
"Z36306",
"Z36307"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36303"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "convert string, monolingual, or html to html"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
d3otn1ujpcfpih3tr5ekz24si5je1ai
282539
282537
2026-06-12T05:18:30Z
99of9
1622
Added Z36308 to the approved list of implementations
282539
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36303"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z36303K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial text"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36305",
"Z36306",
"Z36307"
],
"Z8K4": [
"Z14",
"Z36308"
],
"Z8K5": "Z36303"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "convert string, monolingual, or html to html"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
0p5ycd1aseboisg900ot53j9zo66khl
282541
282539
2026-06-12T05:48:38Z
99of9
1622
282541
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36303"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z1",
"Z17K2": "Z36303K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial text"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36305",
"Z36306",
"Z36307"
],
"Z8K4": [
"Z14",
"Z36308"
],
"Z8K5": "Z36303"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "convert string, monolingual, or html to html"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "include \u003Cspan lang=\"\"\u003E for monolingual texts"
}
]
}
}
nv4j4bjaest0vviey6o6c1hlq3ilqp6
Z36304
0
85571
282529
2026-06-12T03:11:36Z
99of9
1622
282529
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36304"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36303",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z22193",
"Z22193K1": {
"Z1K1": "Z7",
"Z7K1": "Z16829",
"Z16829K1": {
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
}
},
"Z22193K2": [
"Z1",
"Z89",
"Z11",
"Z6"
],
"Z22193K3": [
"Z1",
{
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
},
{
"Z1K1": "Z7",
"Z7K1": "Z33457",
"Z33457K1": {
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "convert string, mono, html to html, compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
m3yrqjhb7fmck29nq436m21mc2bp2zf
282542
282529
2026-06-12T05:49:07Z
99of9
1622
282542
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36304"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36303",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z22193",
"Z22193K1": {
"Z1K1": "Z7",
"Z7K1": "Z16829",
"Z16829K1": {
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
}
},
"Z22193K2": [
"Z1",
"Z89",
"Z11",
"Z6"
],
"Z22193K3": [
"Z1",
{
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
},
{
"Z1K1": "Z7",
"Z7K1": "Z33457",
"Z33457K1": {
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "# convert string, mono, html to html, compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
442uaftlwicy2gtmhio2mws700bw67w
Z36305
0
85572
282531
2026-06-12T03:12:23Z
99of9
1622
282531
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36305"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36303",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36303",
"Z36303K1": "Hello, world."
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "Hello, world."
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\"Hello, world.\" (String)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
9bxl9u29m1qu0abv88xde7xgb8mqshg
Z36306
0
85573
282533
2026-06-12T03:15:25Z
99of9
1622
282533
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36306"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36303",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36303",
"Z36303K1": {
"Z1K1": "Z11",
"Z11K1": "Z1113",
"Z11K2": "G'day mate."
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Cspan lang=\"en-au\"\u003EG'day mate.\u003C/span\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[en-au] \"G'day mate.\" (monolingual) w \u003Cspan lang\u003E"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
s0peokjge515okrwjy778l3wq6yopq5
Z36307
0
85574
282535
2026-06-12T03:16:28Z
99of9
1622
282535
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36307"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36303",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36303",
"Z36303K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Cspan lang=\"en-au\"\u003EG'day mate.\u003C/span\u003E"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Cspan lang=\"en-au\"\u003EG'day mate.\u003C/span\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "HTML unchanged"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
qamcjnnej9jybvouyf9lmpbaz8na4jp
Z36308
0
85575
282538
2026-06-12T05:18:17Z
99of9
1622
282538
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36308"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36303",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z19352",
"Z19352K1": {
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
},
"Z19352K2": "Z89"
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z19352",
"Z19352K1": {
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
},
"Z19352K2": "Z6"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z33457",
"Z33457K1": {
"Z1K1": "Z18",
"Z18K1": "Z36303K1"
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "convert string/mono/html to html, compose ifs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
trqvn8arovpxr31ssxj7vkv2ggugo31
Z36309
0
85576
282544
2026-06-12T06:25:48Z
99of9
1622
282544
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36309"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z32428",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z32428",
"Z32428K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q7055322"
},
"Z32428K2": "Z1147"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q7055322\"\u003EQ7055322\u003C/a\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "use QID when falling back past mul"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
0yi4kalsiyf86wazh430hjdlqlricw4
Z36310
0
85577
282554
2026-06-12T08:23:02Z
Hakimi97
198
282554
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36310"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36310K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "subject"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36310K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "role"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36310K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "dependency"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36310K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36310"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Malay non-defining role sentence"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Sentence of the type [X] ialah [Y] bagi [Z]. e.g. \"Pretoria merupakan ibu negara bagi Afrika Selatan.\""
}
]
}
}
ls8dpqb70ozyw5tn3y2qxu8dbvmob5z
282555
282554
2026-06-12T08:24:25Z
Hakimi97
198
282555
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36310"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36310K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "subject"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36310K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "role"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36310K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "dependency"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36310K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36310"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Malay non-defining role sentence"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"ms X is a Y of Z"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Sentence of the type [X] ialah [Y] bagi [Z]. e.g. \"Pretoria merupakan ibu negara bagi Afrika Selatan.\""
}
]
}
}
hu7mylu2it368dcvq89f29cn78bjbq4
282565
282555
2026-06-12T08:52:28Z
99of9
1622
Added Z36312, Z36313 and Z36314 to the approved list of test cases
282565
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36310"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36310K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "subject"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36310K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "role"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36310K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "dependency"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36310K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z36312",
"Z36313",
"Z36314"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36310"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Malay non-defining role sentence"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"ms X is a Y of Z"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Sentence of the type [X] ialah [Y] bagi [Z]. e.g. \"Pretoria merupakan ibu negara bagi Afrika Selatan.\""
}
]
}
}
cy6ye9zwh6eqndqfxxd2f9y3wj79x88
282566
282565
2026-06-12T08:52:42Z
99of9
1622
Added Z36311 to the approved list of implementations
282566
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36310"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36310K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "subject"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36310K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "role"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36310K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "dependency"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36310K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z36312",
"Z36313",
"Z36314"
],
"Z8K4": [
"Z14",
"Z36311"
],
"Z8K5": "Z36310"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Malay non-defining role sentence"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"ms X is a Y of Z"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Sentence of the type [X] ialah [Y] bagi [Z]. e.g. \"Pretoria merupakan ibu negara bagi Afrika Selatan.\""
}
]
}
}
kja6yspmuiu0nt7m97qf03ogcl5k74b
Z36311
0
85578
282556
2026-06-12T08:28:27Z
Hakimi97
198
282556
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36311"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36310",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z26107",
"Z26107K1": {
"Z1K1": "Z18",
"Z18K1": "Z36310K4"
},
"Z26107K2": {
"Z1K1": "Z7",
"Z7K1": "Z12899",
"Z12899K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z23753",
"Z23753K1": {
"Z1K1": "Z18",
"Z18K1": "Z36310K1"
},
"Z23753K2": {
"Z1K1": "Z18",
"Z18K1": "Z36310K4"
}
}
},
"merupakan",
{
"Z1K1": "Z7",
"Z7K1": "Z23753",
"Z23753K1": {
"Z1K1": "Z18",
"Z18K1": "Z36310K2"
},
"Z23753K2": {
"Z1K1": "Z18",
"Z18K1": "Z36310K4"
}
},
"bagi",
{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"Z10000K1": {
"Z1K1": "Z7",
"Z7K1": "Z23753",
"Z23753K1": {
"Z1K1": "Z18",
"Z18K1": "Z36310K3"
},
"Z23753K2": {
"Z1K1": "Z18",
"Z18K1": "Z36310K4"
}
},
"Z10000K2": "."
}
],
"Z12899K2": " "
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
j9eea2knss8iockgmr6626aqa7atl8q
282557
282556
2026-06-12T08:29:12Z
Hakimi97
198
282557
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36311"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36310",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z26107",
"Z26107K1": {
"Z1K1": "Z18",
"Z18K1": "Z36310K4"
},
"Z26107K2": {
"Z1K1": "Z7",
"Z7K1": "Z12899",
"Z12899K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z10771",
"Z10771K1": {
"Z1K1": "Z7",
"Z7K1": "Z23753",
"Z23753K1": {
"Z1K1": "Z18",
"Z18K1": "Z36310K1"
},
"Z23753K2": {
"Z1K1": "Z18",
"Z18K1": "Z36310K4"
}
}
},
"merupakan",
{
"Z1K1": "Z7",
"Z7K1": "Z23753",
"Z23753K1": {
"Z1K1": "Z18",
"Z18K1": "Z36310K2"
},
"Z23753K2": {
"Z1K1": "Z18",
"Z18K1": "Z36310K4"
}
},
"bagi",
{
"Z1K1": "Z7",
"Z7K1": "Z10000",
"Z10000K1": {
"Z1K1": "Z7",
"Z7K1": "Z23753",
"Z23753K1": {
"Z1K1": "Z18",
"Z18K1": "Z36310K3"
},
"Z23753K2": {
"Z1K1": "Z18",
"Z18K1": "Z36310K4"
}
},
"Z10000K2": "."
}
],
"Z12899K2": " "
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Malay non-defining role sentence, better comp."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
qldm336fci3lv6hnjnnhnoaklobei9u
Z36312
0
85579
282558
2026-06-12T08:31:05Z
Hakimi97
198
282558
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36312"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36310",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36310",
"Z36310K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q3926"
},
"Z36310K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q5119"
},
"Z36310K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q258"
},
"Z36310K4": "Z1531"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": "Z1531",
"Z11K2": "Pretoria merupakan ibu negara bagi Afrika Selatan."
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Pretoria merupakan ibu negara bagi Afrika Selatan."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
mwb0y4eenm4eajgx53p0tuz5tajvxhk
Z36313
0
85580
282559
2026-06-12T08:33:47Z
Hakimi97
198
282559
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36313"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36310",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36310",
"Z36310K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q26972265"
},
"Z36310K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q68947"
},
"Z36310K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q18498"
},
"Z36310K4": "Z1531"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": "Z1531",
"Z11K2": "Canis lupus familiaris merupakan subspesies bagi serigala."
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "C. l. familiaris merupakan subspesies..."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "C. l. familiaris merupakan subspesies bagi Canis lupus."
}
]
}
}
3b5l51mw17ioohpmldyfkzo8jusn0h3
282560
282559
2026-06-12T08:35:21Z
Hakimi97
198
282560
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36313"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36310",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36310",
"Z36310K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q26972265"
},
"Z36310K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q68947"
},
"Z36310K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q18498"
},
"Z36310K4": "Z1531"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": "Z1531",
"Z11K2": "Canis lupus familiaris merupakan subspesies bagi serigala."
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "C. l. familiaris merupakan subspesies..."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "C. l. familiaris merupakan subspesies bagi serigala."
}
]
}
}
k39m7sj3o5w0yhji1i5xvpjfqajfy07
282561
282560
2026-06-12T08:36:08Z
Hakimi97
198
282561
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36313"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36310",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36310",
"Z36310K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q26972265"
},
"Z36310K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q68947"
},
"Z36310K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q144"
},
"Z36310K4": "Z1531"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": "Z1531",
"Z11K2": "Canis lupus familiaris merupakan subspesies bagi serigala."
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "C. l. familiaris merupakan subspesies..."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "C. l. familiaris merupakan subspesies bagi serigala."
}
]
}
}
0lmuuhql7wkyt6whlo8bxmi7fj60i0k
282562
282561
2026-06-12T08:36:38Z
Hakimi97
198
282562
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36313"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36310",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36310",
"Z36310K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q26972265"
},
"Z36310K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q68947"
},
"Z36310K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q18498"
},
"Z36310K4": "Z1531"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": "Z1531",
"Z11K2": "Canis lupus familiaris merupakan subspesies bagi serigala."
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "C. l. familiaris merupakan subspesies..."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "C. l. familiaris merupakan subspesies bagi serigala."
}
]
}
}
k39m7sj3o5w0yhji1i5xvpjfqajfy07
Z36314
0
85581
282563
2026-06-12T08:38:17Z
Hakimi97
198
282563
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36314"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36310",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36310",
"Z36310K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q2"
},
"Z36310K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q634"
},
"Z36310K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q544"
},
"Z36310K4": "Z1531"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": "Z1531",
"Z11K2": "Bumi merupakan planet bagi Sistem Suria."
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Bumi merupakan planet bagi Sistem Suria."
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
pxj2h9u9g81v0voilqed89y3lkfwcmx
User:PK2
2
85582
282568
2026-06-12T10:08:28Z
PK2
4108
Created page with "{| class="wikitable" style="font-size:85%" |- | [[User:PK2/sandbox|This]] is where my sandbox pages are |}"
282568
wikitext
text/x-wiki
{| class="wikitable" style="font-size:85%"
|-
| [[User:PK2/sandbox|This]] is where my sandbox pages are
|}
9wt607wgc2wb0mac9focrpiz2umkl7h
User:PK2/sandbox
2
85583
282569
2026-06-12T10:09:33Z
PK2
4108
Created page with "{| class="wikitable" style="font-size:85%" |+ Pages I have in my sandbox |- | |}"
282569
wikitext
text/x-wiki
{| class="wikitable" style="font-size:85%"
|+ Pages I have in my sandbox
|-
|
|}
o9dxqhjq112ue2h0zlpmhexf26s7edm