Wikifunctions
wikifunctionswiki
https://www.wikifunctions.org/wiki/Wikifunctions:Main_Page
MediaWiki 1.47.0-wmf.7
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
Wikifunctions:Project chat
4
1184
285694
285305
2026-06-22T17:22:34Z
Hogü-456
617
/* Wikifunctions & Abstract Wikipedia Newsletter #253 is out: The or not the, this is (the?) question */ Reply
285694
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/
}}
== [[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)
::I don’t think there is a general problem with returning nested lists. There is a problem with not taking into account the declared type for a nested list, which is an issue only for types with custom conversion. There is an equivalent issue on the input side, applicable to all “generic types” that are nested, including typed lists: [[:phab:T417266]]. [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 11:39, 16 June 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)
:1. Yes.
:2. It depends on the language, but it is no bad thing if the subject of the sentence recapitulates the article title, ideally shorn of disambiguators. The difficulty is that item labels and article titles are simply text, so there is no guarantee that they can be parsed sufficiently well in any given language.
:3a. Conceptually, this is true, but we must assume that it won’t happen. That means we have to construct the lexeme for any given language, and this will be discussed at the [[Wikifunctions:NLG SIG#Upcoming meeting]] on Tuesday. In the special case where the item’s linguistic form is consistently some kind of modified head noun, it may be appropriate to capture this as a qualified {{Q|P279}} relationship (the Eiffel Tower is classed as a monument but named as a tower, for example).
:3b. It’s complicated, yes, but I believe all this needs to be considered as part of the above mentioned lexeme-construction process.
:4. Yes, this is a stubborn problem, being partly context and partly custom. In English, the general rule is that names resist determiners. That implies the need to distinguish names from other proper nouns. “Mercury” is a name but “sun” and “moon” are ordinary nouns made proper by the definite article (although, exceptionally, this may be elided for “the Earth”, presumably influenced by the Sun’s other planets having names). More generally, as has been noted, the rules vary by language, so the distinction must be made at that level. The general rule for a particular language would typically apply according to the item’s class (country, language, construction…) but per-language exceptions are a case for lexicographic properties (because they are details exposed by Wikifunctions but required more generally, like the fact that, even when abbreviated, “the USA” and “the UK” require the definite article, whereas most countries have names that resist it). [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:46, 14 June 2026 (UTC)
::See also [[Wikifunctions:Status updates/2026-06-19#The or not the, this is (the?) question]]. [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) [[User:HenkvD|HenkvD]] ([[User talk:HenkvD|talk]]) 11:38, 19 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)
:[https://translatewiki.net/w/i.php?title=Special%3ATranslate&showMessage=wikimedia-legal-safety-contacts&group=ext-wikimediamessages&language=qqq&filter=&optional=1&action=translate example text] at translatewiki.net [[User:Arlo Barnes|Arlo Barnes]] ([[User talk:Arlo Barnes|talk]]) 19:32, 19 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)
:Just out of curiousity: what software would you like to use it with? [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 23:19, 12 June 2026 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #252 is out: Improved loading and display of Test results ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-06-12|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we present you an improvement in loading and display of Test results, we talk about our next events, 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 Denny will lead a discussion on the [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-05-15#News in Types: way forward for natural language generation types|new NLG types]] in the next '''Natural Language Generation Special Interest Group meeting''', that will be held on '''[https://zonestamp.toolforge.org/1781625600 June 16, at 16:00 UTC]''' ([https://meet.google.com/xzn-kqer-mah link to the meeting]).
Enjoy the reading! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 15:29, 12 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 -->
== June 2026 Wikimedia Café meetups regarding the English Wikipedia Editor Reflections project ==
<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: 10px; padding-right: 10px; padding-left: 10px; padding-bottom: 10px;">[[File:Wikimedia Café logo in plain SVG format.svg|60px|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 June. Both sessions will focus on the [https://en.wikipedia.org/wiki/Wikipedia:Editor_reflections English Wikipedia Editor Reflections project]. The featured guest in the Café will be [https://en.wikipedia.org/wiki/User:Clovermoss User:Clovermoss]. Participants may attend either or both sessions.
#'''27 June 2026 15:00 UTC''' ([https://zonestamp.toolforge.org/1782572400 timestamp converter]), at a time friendly to the Americas, Africa, and Europe
#'''28 June 2026 03:00 UTC''' ([https://zonestamp.toolforge.org/1782615600 timestamp converter]), at a time friendly to Asia and the Pacific
Please see the Café page for more information, including [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> 03:55, 15 June 2026 (UTC)
== I did something stupid, can I undo it? ==
Hello, I created a function (Z36415)
I thought it would be in my user namespace because I put a prefix in the name. However, putting prefixes in the name didn't work for functions and I created it globally. Is there any way to rename it or remove it?.
[[User:A random Wikipedian in the billions|A random Wikipedian in the billions]] ([[User talk:A random Wikipedian in the billions|talk]]) 12:08, 15 June 2026 (UTC)
:[[WF:RFD]] please. {{Z|10119}} is available if you need to do testing. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 12:10, 15 June 2026 (UTC)
::Thanks! [[User:A random Wikipedian in the billions|A random Wikipedian in the billions]] ([[User talk:A random Wikipedian in the billions|talk]]) 12:17, 15 June 2026 (UTC)
== Wikifunctions & Abstract Wikipedia Newsletter #253 is out: The or not the, this is (the?) question ==
There is [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-06-19|a new update]] for Abstract Wikipedia and Wikifunctions. Please, come and read it!
In this issue, we present you a delicate question regarding grammatical framework, we talk about our next events and about the results of our latest online meetings, we discuss news about 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]]) 12:34, 19 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=30701693 -->
:<blockquote>We also have two Functions, {{Z|Z32645}} and {{Z|Z32935}}, which both aim to answer whether an Item needs a definite article or not [...] but neither of these seem to be integrated into the ways that Functions are actually used on Abstract Wikipedia, as can be seen ''e.g.'' on [[abstract:Q243|the article for the Eiffel Tower]].</blockquote> One of the connected Implementations uses it for the subject and location, and the other uses it for the location only. There was no heuristic in [[Z32645]] for buildings, so I added [[Z36580|a new Implementation]] with an extra branch, but even my optimised [[Z36556|subclass checks for buildings]] are timing out. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 05:03, 20 June 2026 (UTC)
::I am not familiar with english rules for it. In German I am not able to explain a rule working every time about how to decide if an article is needed before a noun or not. So I think it is a case where it is better to look at such cases and then let a user with knwoledge in the language decide what is the correct function for a specific language. From my point of view it can be helpful to modify the functions to make a user based modification afterwards easier. This can be maybe done through optional arguments what give the possibility to modify specific forms if necessary without the necessity to fill it out every time a function is used. From my point of view the question raised in the newsletter shows how important the check of the output through an language speaker with an advanced level of understanding is. Languages can include complicated rules or exemptions what are necessary to pay attention and hard to implement in code without deep knwoledge of an language. At the moment I prefer language specific large functions generating whole sections of articles. As it seems to me difficult to implement the edge cases of every language in the language specific fragment functions. [[User:Hogü-456|Hogü-456]] ([[User talk:Hogü-456|talk]]) 20:11, 21 June 2026 (UTC)
:::Did you mean to reply to me? Letting those <q>with [knowledge] in the language decide what is the correct function for a specific language</q> is exactly what the current prototypes do. The functions I linked to are English-specific.<br>The multilingual function can't take a "use definite article" parameter for obvious reasons, and if you want the language-specific functions to take extra parameters like that, the multilingual function would then need to derive the correct values to be able to call them. Might as well keep that logic within the language-specific functions. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 20:34, 21 June 2026 (UTC)
::::If I reply here with the modern discussion form I have not seen when I wrote the message how to change it to not reply to you when I want to add the section below your reply. What I wrote have been general thoughts about the topic. I think it should be possible to write functions with optional arguments. The modification of the article is language specific and so such a thing would modify the language specific function. What you wrote about calling them from the multilingual function is important. I hope it will be possible to find a solution for it without the need of adding all function arguments. [[User:Hogü-456|Hogü-456]] ([[User talk:Hogü-456|talk]]) 17:22, 22 June 2026 (UTC)
6a1s7vj9tchqrat2aqse7g3a7xzkqit
Z12317
0
18876
285821
120989
2026-06-23T02:48:08Z
99of9
1622
285821
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z12317"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z12316",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z12316( Z12316K1, Z12316K2, Z12316K3, Z12316K4 ) {\n\treturn Z12316K3.replace(RegExp(Z12316K1, Z12316K4), Z12316K2);\n}"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Javascript Regular expression substitute"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1014",
"Z11K2": "Ihe ngbanwe Javascript oge niile"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "regulären Ausdruck mit Flags ersetzen in JavaScript"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
o8c2eowisjmnmbr11ynvm2umu6o9gjs
Z19261
0
41195
285713
138831
2026-06-22T18:03:13Z
Ameisenigel
44
de
285713
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19261"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z19260",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z19254",
"Z19254K1": {
"Z1K1": "Z7",
"Z7K1": "Z803",
"Z803K1": {
"Z1K1": "Z39",
"Z39K1": "Z6004K3"
},
"Z803K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z19243",
"Z19243K1": {
"Z1K1": "Z18",
"Z18K1": "Z19260K1"
},
"Z19243K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
]
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "plural form of lexeme, composition"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Plural von Lexem als einsp. Text, Komposition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
q1apgjvpgcoqpbed74wdchfrpoyfyam
Z19262
0
41196
285716
133334
2026-06-22T18:03:40Z
Ameisenigel
44
de
285716
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19262"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19260",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19260",
"Z19260K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L1122"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "dogs"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "plural of L-en \"dog\" is \"dogs\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Plural von dog ist dogs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
0k6oandy550dsjzr4fgh9yk2l25vlec
Z19263
0
41197
285717
133336
2026-06-22T18:04:32Z
Ameisenigel
44
de
285717
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19263"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19260",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19260",
"Z19260K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L230374"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "amigos"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first plural of L-es \"amigo\" is \"amigos\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Plural von amigo ist amigos"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\"amigas\" is also listed, but this function only returns one (the first)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "amigas ist ebenfalls ein Plural, aber nicht der erste"
}
]
}
}
tqrdqs2l4ns0r3qn6ij5h134b1mcr98
Z19264
0
41198
285720
133337
2026-06-22T18:05:28Z
Ameisenigel
44
de
285720
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19264"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19232",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19232",
"Z19232K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L230374"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z13522",
"Z13522K2": {
"Z1K1": "Z13518",
"Z13518K1": "4"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "L-es \"amigo\" has four forms"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "amigo hat vier Formen"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "masculine and feminine each have a singular and plural"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "maskulin und feminin haben jeweils Singular und Plural"
}
]
}
}
gg7t933hppsvr0vlhiz5om8b3jmylkd
Z19265
0
41199
285721
158852
2026-06-22T18:07:06Z
Ameisenigel
44
de
285721
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19265"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z19265K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "lexeme"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "詞位"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "lexème"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Lexem"
}
]
}
}
],
"Z8K2": "Z13518",
"Z8K3": [
"Z20",
"Z19270"
],
"Z8K4": [
"Z14",
"Z19266",
"Z19284"
],
"Z8K5": "Z19265"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Count lexeme senses in lexeme"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "計算詞位中的詞位意義"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "compter les sens du lexème dans un lexème"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zähle Lexembedeutungen in Lexem"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Return the number of lexeme senses in the given lexeme"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "回傳指定詞位中的詞位意義數量"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "renvoie le nombre de sens du lexème dans un lexème donné"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "gibt die Anzahl von Lexembedeutungen des angegebenen Lexems aus"
}
]
}
}
alm4cqn1dwhff7pbulrkumnabdp0pr4
285728
285721
2026-06-22T18:10:07Z
WikiLambda system
3
Updated the implementation list (see [[Help:Wikifunctions/Implementation_ordering_and_choosing|About implementation selection]])
285728
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19265"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z19265K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "lexeme"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "詞位"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "lexème"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Lexem"
}
]
}
}
],
"Z8K2": "Z13518",
"Z8K3": [
"Z20",
"Z19270"
],
"Z8K4": [
"Z14",
"Z19284",
"Z19266"
],
"Z8K5": "Z19265"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Count lexeme senses in lexeme"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "計算詞位中的詞位意義"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "compter les sens du lexème dans un lexème"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zähle Lexembedeutungen in Lexem"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Return the number of lexeme senses in the given lexeme"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "回傳指定詞位中的詞位意義數量"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "renvoie le nombre de sens du lexème dans un lexème donné"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "gibt die Anzahl von Lexembedeutungen des angegebenen Lexems aus"
}
]
}
}
obtu20f8ghwmew2djr7itbmdxtloug0
Z19266
0
41200
285722
158850
2026-06-22T18:07:55Z
Ameisenigel
44
de
285722
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19266"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z19265",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z19265( Z19265K1 ) {\n\tlet count = 0;\n\tconst senses = Z19265K1.Z6005K6;\n for ( const sense of senses ) {\n \tcount = count + 1\n }\n return count;\n}"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Javascript implementation of lexeme senses count"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "詞位意義計數的JavaScript實作"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "compter les sens du lexème dans un lexème, JavaScr"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zähle Lexembedeutungen in Lexem in JavaScript"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Javascript implementation of lexeme senses count in a lexeme"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "計算詞位中詞位意義數量的JavaScript實作"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "JavaScript-Implementierung zur Zählung von Lexembedeutungen eines Lexems"
}
]
}
}
20qqo33dty1kmedy0d7y57s2g0oehdg
Z19267
0
41201
285723
284057
2026-06-22T18:08:38Z
Ameisenigel
44
de
285723
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19267"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6092",
"Z17K2": "Z19267K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "this Wikidata property reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "此維基數據屬性參照"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "primo riferimento"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "একটি বৈশিষ্ট্য উল্লেখ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "erste Wikidata-Eigenschaft-Referenz"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6092",
"Z17K2": "Z19267K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "that Wikidata property reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "另一個維基數據參照"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "secondo riferimento"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "আরেকটি বৈশিষ্ট্য উল্লেখ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zweite Wikidata-Eigenschaft-Referenz"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z19269",
"Z22225"
],
"Z8K4": [
"Z14",
"Z19268",
"Z20049"
],
"Z8K5": "Z19267"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "same Wikidata property reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "相同的維基數據屬性參照"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "stesso Riferimento a proprietà Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "উইকিউপাত্ত বৈশিষ্ট্য উল্লেখ সমতা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "referensi properti Wikidata yang sama"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "gleiche Wikidata-Eigenschaft-Referenz"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"equality of Wikidata property references",
"Wikidata property references equal",
"equal",
"=",
"property equality",
"equal Wikidata property references",
"==PID"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1360",
"Z31K2": [
"Z6",
"==Z6092",
"==Z6092.Z6092K1"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"uguaglianza tra riferimenti a proprietà Wikidata",
"riferimenti a proprietà Wikidata uguali",
"stesso PID",
"PID uguali",
"stessi PID"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"একই উইকিউপাত্ত বৈশিষ্ট্য উল্লেখ",
"সমান উইকিউপাত্ত বৈশিষ্ট্য উল্লেখ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"==PID"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "সত্য প্রদান করবে যদি দুটি উইকিউপাত্ত বৈশিষ্ট্য উল্লেখ একই হয়।"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "kondisi di mana dua atau lebih pernyataan (klaim) di Wikidata didukung oleh sumber rujukan yang sama pada properti tertentu"
}
]
}
}
avyn8asyvfiw0wq3bx5skd1oi140ogw
285724
285723
2026-06-22T18:08:42Z
WikiLambda system
3
Updated the implementation list (see [[Help:Wikifunctions/Implementation_ordering_and_choosing|About implementation selection]])
285724
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19267"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6092",
"Z17K2": "Z19267K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "this Wikidata property reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "此維基數據屬性參照"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "primo riferimento"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "একটি বৈশিষ্ট্য উল্লেখ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "erste Wikidata-Eigenschaft-Referenz"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6092",
"Z17K2": "Z19267K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "that Wikidata property reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "另一個維基數據參照"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "secondo riferimento"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "আরেকটি বৈশিষ্ট্য উল্লেখ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zweite Wikidata-Eigenschaft-Referenz"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z19269",
"Z22225"
],
"Z8K4": [
"Z14",
"Z20049",
"Z19268"
],
"Z8K5": "Z19267"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "same Wikidata property reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "相同的維基數據屬性參照"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "stesso Riferimento a proprietà Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "উইকিউপাত্ত বৈশিষ্ট্য উল্লেখ সমতা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "referensi properti Wikidata yang sama"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "gleiche Wikidata-Eigenschaft-Referenz"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"equality of Wikidata property references",
"Wikidata property references equal",
"equal",
"=",
"property equality",
"equal Wikidata property references",
"==PID"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1360",
"Z31K2": [
"Z6",
"==Z6092",
"==Z6092.Z6092K1"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"uguaglianza tra riferimenti a proprietà Wikidata",
"riferimenti a proprietà Wikidata uguali",
"stesso PID",
"PID uguali",
"stessi PID"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"একই উইকিউপাত্ত বৈশিষ্ট্য উল্লেখ",
"সমান উইকিউপাত্ত বৈশিষ্ট্য উল্লেখ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"==PID"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "সত্য প্রদান করবে যদি দুটি উইকিউপাত্ত বৈশিষ্ট্য উল্লেখ একই হয়।"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "kondisi di mana dua atau lebih pernyataan (klaim) di Wikidata didukung oleh sumber rujukan yang sama pada properti tertentu"
}
]
}
}
tog5w2kq26mejz7uyprm7zbp5z1fchq
285786
285724
2026-06-22T21:27:39Z
WikiLambda system
3
Updated the implementation list (see [[Help:Wikifunctions/Implementation_ordering_and_choosing|About implementation selection]])
285786
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19267"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6092",
"Z17K2": "Z19267K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "this Wikidata property reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "此維基數據屬性參照"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "primo riferimento"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "একটি বৈশিষ্ট্য উল্লেখ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "erste Wikidata-Eigenschaft-Referenz"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6092",
"Z17K2": "Z19267K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "that Wikidata property reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "另一個維基數據參照"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "secondo riferimento"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "আরেকটি বৈশিষ্ট্য উল্লেখ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "zweite Wikidata-Eigenschaft-Referenz"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z19269",
"Z22225"
],
"Z8K4": [
"Z14",
"Z19268",
"Z20049"
],
"Z8K5": "Z19267"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "same Wikidata property reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1672",
"Z11K2": "相同的維基數據屬性參照"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "stesso Riferimento a proprietà Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "উইকিউপাত্ত বৈশিষ্ট্য উল্লেখ সমতা"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "referensi properti Wikidata yang sama"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "gleiche Wikidata-Eigenschaft-Referenz"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"equality of Wikidata property references",
"Wikidata property references equal",
"equal",
"=",
"property equality",
"equal Wikidata property references",
"==PID"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1360",
"Z31K2": [
"Z6",
"==Z6092",
"==Z6092.Z6092K1"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"uguaglianza tra riferimenti a proprietà Wikidata",
"riferimenti a proprietà Wikidata uguali",
"stesso PID",
"PID uguali",
"stessi PID"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"একই উইকিউপাত্ত বৈশিষ্ট্য উল্লেখ",
"সমান উইকিউপাত্ত বৈশিষ্ট্য উল্লেখ"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"==PID"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "সত্য প্রদান করবে যদি দুটি উইকিউপাত্ত বৈশিষ্ট্য উল্লেখ একই হয়।"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "kondisi di mana dua atau lebih pernyataan (klaim) di Wikidata didukung oleh sumber rujukan yang sama pada properti tertentu"
}
]
}
}
avyn8asyvfiw0wq3bx5skd1oi140ogw
Z19268
0
41202
285725
138949
2026-06-22T18:09:13Z
Ameisenigel
44
de
285725
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19268"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z19267",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K1": {
"Z1K1": "Z7",
"Z7K1": "Z803",
"Z803K1": {
"Z1K1": "Z39",
"Z39K1": "Z6092K1"
},
"Z803K2": {
"Z1K1": "Z18",
"Z18K1": "Z19267K1"
}
},
"Z866K2": {
"Z1K1": "Z7",
"Z7K1": "Z20046",
"Z20046K1": {
"Z1K1": "Z18",
"Z18K1": "Z19267K2"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "same Wikidata property reference, composition"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "gleiche Wikidata-Eigenschaft-Referenz, Komposition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"equal Wikidata property reference, composition"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1360",
"Z31K2": [
"Z6",
"==Z6092"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
rf66ye90d251ym8ib1ng0cdghw525ax
Z19269
0
41203
285726
133347
2026-06-22T18:09:38Z
Ameisenigel
44
de
285726
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19269"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19267",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19267",
"Z19267K1": {
"Z1K1": "Z6092",
"Z6092K1": "P31"
},
"Z19267K2": {
"Z1K1": "Z6092",
"Z6092K1": "P31"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "P31 = P31"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "ist ein(e) = ist ein(e)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
65yvm3ibakikf4u0jukxcp0x36bktig
Z19270
0
41204
285727
158853
2026-06-22T18:10:03Z
Ameisenigel
44
de
285727
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z19270"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z19265",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z19265",
"Z19265K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L3943"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z13522",
"Z13522K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Count of senses of L-en university"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "compter le nombre de sens de L3943 (university)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "university hat eine Bedeutung"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "renvoie le nombre de sens (1) du lexème L3943, à savoir university en anglais"
}
]
}
}
6wyeh80epuef0sj6cllbn6ki9q7glwa
Wikifunctions:Catalogue/String operations
4
41922
285743
278456
2026-06-22T18:24:02Z
Denny
81
/* Concatenation and duplication */
285743
wikitext
text/x-wiki
[[File:Wikifunctions-logo-string-operations.svg|200px|right]]
{{see also|WF:Catalogue/Character operations}}
These are functions that deal with {{Z+|Z6}}
==Evaluation==
These functions perform simple tests on a text string to tell you if something else needs to be done, or they already are in an expected format.
===Empty strings===
* {{Z+|Z10008}}
** {{Z+|Z12941}}
* {{Z+|Z24331}}
* {{Z+|Z11082}}
** {{Z+|Z32556}}
===Case and character types===
* {{Z+|Z10083}}
* {{Z+|Z10715}}
** {{Z+|Z28182}}
* {{Z+|Z10336}}
* {{Z+|Z11349}}
* {{Z+|Z10346}}
* {{Z+|Z11383}}
* {{Z+|Z10375}}
* {{Z+|Z10363}}
* {{Z+|Z10897}}
* {{Z+|Z10324}}
* {{Z+|Z25592}}
* {{Z+|Z11678}}
* {{Z+|Z11684}}
* {{Z+|Z12626}}
===Other===
* {{Z+|Z10096}}
* {{Z+|Z19170}}
* {{Z+|Z19191}}
* {{Z+|Z19217}}
* {{Z+|Z13482}}
*{{Z+|Z14083}}
* {{Z+|Z11573}}
==Properties and metrics==
===Length===
* {{Z+|Z11040}}
* {{Z+|Z17036}}
* {{Z+|Z17030}}
===Distance===
* {{Z+|Z11328}}
* {{Z+|Z10393}}
===Get specific characters or substrings===
====Anywhere in the string====
* {{Z+|Z24472}}
** {{Z+|Z14244}}
* {{Z+|Z28630}}
** {{Z+|Z14592}}
====At the start====
* {{Z+|Z31145}}
** {{Z+|Z32065}}
** {{Z+|Z10901}}
* {{Z+|Z15996}}
* {{Z+|Z22344}}
====At the end====
* {{Z+|Z31845}}
** {{Z+|Z11060}}
* {{Z+|Z14460}}
* {{Z+|Z14463}}
==Comparison==
{{Help:Comparison function table/String}}
===Equality===
* {{Z+|Z866}}
* {{Z+|Z10539}}
* {{Z+|Z10379}}
* {{Z+|Z18898}}
===Substrings and characters===
* {{Z+|Z10615}}
* {{Z+|Z10618}}
* {{Z+|Z11693}}
* {{Z+|Z14483}}
* {{Z+|Z13119}}
* {{Z+|Z10973}}
* {{Z+|Z19177}}
===Length===
* {{Z+|Z11690}}
* {{Z+|Z11519}}
==String search==
* {{Z+|Z10070}}
* {{Z+|Z14450}}
* {{Z+|Z31826}}
** {{Z+|Z31268}}
==Transformation==
These perform character replacements and other basic operations.
===Add characters===
====To the start and end====
* {{Z+|Z11145}}
====To the end (suffix)====
* {{Z+|Z27528}}
* {{Z+|Z27529}}
=====If the string doesn't already end with a specific suffix=====
* {{Z+|Z17973}}
======Language-specific suffixes======
* {{Z+|Z18066}}
* {{Z+|Z18050}}
* {{Z+|Z18042}}
* {{Z+|Z18039}}
* {{Z+|Z18036}}
* {{Z+|Z18020}}
* {{Z+|Z18017}}
* {{Z+|Z17952}}
* {{Z+|Z17942}}
* {{Z+|Z17939}}
* {{Z+|Z17749}}
* {{Z+|Z17904}}
* {{Z+|Z17948}}
* {{Z+|Z17791}}
===Replace characters===
====Anywhere in the string====
* {{Z+|Z10075}}
* {{Z+|Z14613}}
* {{Z+|Z29506}}
* {{Z+|Z11492}}
* {{Z+|Z11501}}
====At the end (suffix)====
* {{Z+|Z11178}}
* {{Z+|Z27159}}
=====Language-specific suffixes=====
* {{Z+|Z18092}}
* {{Z+|Z18026}}
* {{Z+|Z17827}}
* {{Z+|Z17915}}
* {{Z+|Z17918}}
* {{Z+|Z27517}}
* {{Z+|Z27522}}
* {{Z+|Z27525}}
* {{Z+|Z27534}}
* {{Z+|Z27535}}
* {{Z+|Z27536}}
* {{Z+|Z27537}}
* {{Z+|Z27546}}
===Delete or discard characters===
====Anywhere in the string====
* {{Z+|Z10052}}
* {{Z+|Z11531}}
* {{Z+|Z14119}}
* {{Z+|Z11193}}
* {{Z+|Z14494}}
* {{Z+|Z10171}}
* {{Z+|Z14515}}
* {{Z+|Z14520}}
=====Duplicates=====
* {{Z+|Z11102}}
** {{Z+|Z19185}}
* {{Z+|Z22507}}
====At the start and end====
* {{Z+|Z26414}}
* {{Z+|Z11151}}
====At the start (prefix)====
* {{Z+|Z14636}}
** {{Z+|Z14456}}
* {{Z+|Z31955}}
** {{Z+|Z31880}}
* {{Z+|Z11410}}
* {{Z+|Z11412}}
* {{Z+|Z11414}}
* {{Z+|Z11416}}
====At the end (suffix)====
* {{Z+|Z11879}}
* {{Z+|Z11170}}
* {{Z+|Z11418}}
* {{Z+|Z11420}}
* {{Z+|Z11422}}
* {{Z+|Z11424}}
====Whitespace====
* {{Z+|Z10079}}
** {{Z+|Z10084}}
** {{Z+|Z10095}}
===Concatenation and duplication===
* {{Z+|Z10000}}
** {{Z+|Z27182}}
** {{Z+|Z21394}}
** {{Z+|Z12899}}
** {{Z+|Z22504}}
** {{Z+|Z22514}}
** {{Z+|Z27385}}
** {{Z+|Z19654}}
** {{Z+|Z36804}}
* {{Z+|Z10753}}
** {{Z+|Z12624}}
** {{Z+|Z10911}}
===Case===
* {{Z+|Z10018}}
* {{Z+|Z10047}}
** {{Z+|Z32953}}
* {{Z+|Z10251}}
* {{Z+|Z10290}}
* {{Z+|Z10816}}
* {{Z+|Z10281}}
===Formatting and presentation===
* {{Z+|Z19612}}
* {{Z+|Z11484}}
* {{Z+|Z11490}}
* {{Z+|Z35494}}
* {{Z+|Z13473}}
* {{Z+|Z14770}}
* {{Z+|Z10108}}
* {{Z+|Z22511}}
* {{Z+|Z31471}}
=== Other ===
* {{Z+|Z22699}}
* {{Z+|Z10012}}
* {{Z+|Z13060}}
* {{Z+|Z22717}}
* {{Z+|Z25614}}
* {{Z+|Z27053}}
* {{Z+|Z32085}}
== Regular expressions ==
* {{Z+|Z25847}}
* {{Z+|Z25829}}
** {{Z+|Z25833}}
** {{Z+|Z25853}}
* {{Z+|Z12316}}
* {{Z+|Z10193}}
** {{Z+|Z29153}}
** {{Z+|Z29890}}
==Encode and decode==
* {{Z+|Z10366}}
* {{Z+|Z10373}}
* {{Z+|Z10761}}
* {{Z+|Z10774}}
* {{Z+|Z10944}}
* {{Z+|Z10956}}
* {{Z+|Z10309}}
* {{Z+|Z10970}}
* {{Z+|Z11003}}
* {{Z+|Z11007}}
* {{Z+|Z14189}}
* {{Z+|Z14195}}
* {{Z+|Z10057}}
* {{Z+|Z10062}} (needed to demonstrate base64 encode/decode examples)
==Cryptography==
===Caesar cipher===
(alphabet needs to be specified when calling these functions)
* {{Z+|Z12812}}
* {{Z+|Z10846}}
* {{Z+|Z10627}} [[:en:ROT13|ROT13 encrypt/decrypt]]
* {{Z+|Z10851}}
* {{Z+|Z17530}}
* {{Z+|Z17526}}
* {{Z+|Z20669}}
* {{Z+|Z23869}}
===Substitution ciphers===
* {{Z+|Z22725}}
* {{Z+|Z22728}}
===Vigenère cipher===
* {{Z+|Z23848}}
* {{Z+|Z23851}}
* {{Z+|Z23953}}
* {{Z+|Z23956}}
===Cryptographic hash functions===
(would be better with types representing a stream of bytes)
* {{Z+|Z10148}} [[wikidata:Q47476577|SHA-1]]
* {{Z+|Z10124}} [[wikidata:Q47465971|SHA-256]]
* {{Z+|Z10132}} [[wikidata:Q47465971|SHA-384]]
* {{Z+|Z10067}} [[wikidata:Q47465971|SHA-512]]
==Wikitext and Mediawiki string operations==
* {{Z+|Z11019}}
* {{Z+|Z11139}}
* {{Z+|Z10919}}
* {{Z+|Z11156}}
* {{Z+|Z17954}}
* {{Z+|Z17956}}
==Comma-separated values (CSV)==
* {{Z+|Z11094}}
==Color operations==
Only includes functions that operate on hex triplets. For other color functions, see [[Wikifunctions:Catalogue/Color functions]].
* {{Z+|Z12997}}
* {{Z+|Z13017}}
* {{Z+|Z17664}}
* {{z+|Z17687}}
* {{Z+|Z17713}}
* {{Z+|Z13023}}
* {{Z+|Z13028}}
* {{Z+|Z18184}}
* {{Z+|Z18189}}
* {{Z+|Z18196}}
* {{Z+|Z18204}}
* {{Z+|Z18208}}
* {{Z+|Z18212}}
* {{Z+|Z18263}}
* {{Z+|Z18268}}
* {{Z+|Z18296}}
* {{Z+|Z18300}}
==HTML fragments==
See [[Wikifunctions:Catalogue/HTML operations]]
[[Category:Lists of functions]]
0lm8yda5uqeyyihg0kzebnj23ormobt
Wikifunctions:Catalogue/Natural language operations/Global language functions
4
41926
285635
285561
2026-06-22T13:25:48Z
Denny
81
/* English */
285635
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
edyy9rmyssg70uqob4qyrkwasalmvnd
285640
285635
2026-06-22T14:00:23Z
Denny
81
/* English */
285640
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
pb0t11rsnl2va7qmbfrwey385ldxmt7
285653
285640
2026-06-22T16:45:34Z
Denny
81
/* Nouns */
285653
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
===== Determiners =====
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
kzai1d6p0fs35mbwum4239od7bsj2qc
285656
285653
2026-06-22T16:48:16Z
Denny
81
/* Determiners */
285656
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
===== Determiners =====
* {{Z+|Z36781}}
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
6ytzv8w61sji3yqgxhfoxb24ud4j29t
285659
285656
2026-06-22T16:50:33Z
Denny
81
/* Determiners */
285659
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
===== Determiners =====
* {{Z+|Z36781}}
* {{Z+|Z36782}}
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
hy2mp4dk316iwqf7ygurpkpa7gmtwkk
285675
285659
2026-06-22T17:01:13Z
Denny
81
/* Determiners */
285675
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
===== Determiners =====
* {{Z+|Z36781}}
* {{Z+|Z36782}}
* {{Z+|Z36783}}
* {{Z+|Z36784}}
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
ctqiuel72sjmjael6jbx5qrf0qzyzuw
285679
285675
2026-06-22T17:11:18Z
Denny
81
/* Determiners */
285679
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
===== Determiners =====
====== Specific determiners ======
* {{Z+|Z36781}}
* {{Z+|Z36782}}
* {{Z+|Z36783}}
* {{Z+|Z36784}}
* {{Z+|Z36791}}
====== Functions ======
* {{Z+|Z36785}}
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
dxrft1akob9avgukdl0su2hg6q9uydx
285705
285679
2026-06-22T17:50:22Z
Denny
81
/* Functions */
285705
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
===== Determiners =====
====== Specific determiners ======
* {{Z+|Z36781}}
* {{Z+|Z36782}}
* {{Z+|Z36783}}
* {{Z+|Z36784}}
* {{Z+|Z36791}}
====== Functions ======
* {{Z+|Z36785}}
* {{Z+|Z36792}}
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
49ncxhcx7kklw8ngdjpwe8ahlmgromq
285706
285705
2026-06-22T17:55:15Z
Denny
81
/* English */
285706
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
===== Determiners =====
====== Specific determiners ======
* {{Z+|Z36781}}
* {{Z+|Z36782}}
* {{Z+|Z36783}}
* {{Z+|Z36784}}
* {{Z+|Z36791}}
====== Functions ======
* {{Z+|Z36785}}
* {{Z+|Z36792}}
===== Merge Functions =====
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
3k6o5nfudfe90jy34rxhsqe5pilqpf1
285708
285706
2026-06-22T17:56:44Z
Denny
81
/* Merge Functions */
285708
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
===== Determiners =====
====== Specific determiners ======
* {{Z+|Z36781}}
* {{Z+|Z36782}}
* {{Z+|Z36783}}
* {{Z+|Z36784}}
* {{Z+|Z36791}}
====== Functions ======
* {{Z+|Z36785}}
* {{Z+|Z36792}}
===== Merge Functions =====
* {{Z+|Z36798}}
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
6540jmon1mawdpzkn5431zieontb51z
285762
285708
2026-06-22T20:39:52Z
Denny
81
/* Syntactic options */
285762
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
* {{Z+|Z36816}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
===== Determiners =====
====== Specific determiners ======
* {{Z+|Z36781}}
* {{Z+|Z36782}}
* {{Z+|Z36783}}
* {{Z+|Z36784}}
* {{Z+|Z36791}}
====== Functions ======
* {{Z+|Z36785}}
* {{Z+|Z36792}}
===== Merge Functions =====
* {{Z+|Z36798}}
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
8dqy6wpobj81vapr0rjinpzb6veyohj
285775
285762
2026-06-22T21:13:20Z
Denny
81
/* Syntactic tables (experimental) */
285775
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* {{Z+|Z36823}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
* {{Z+|Z36816}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
===== Determiners =====
====== Specific determiners ======
* {{Z+|Z36781}}
* {{Z+|Z36782}}
* {{Z+|Z36783}}
* {{Z+|Z36784}}
* {{Z+|Z36791}}
====== Functions ======
* {{Z+|Z36785}}
* {{Z+|Z36792}}
===== Merge Functions =====
* {{Z+|Z36798}}
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
k2h19mnboi49df6r523oy4aczkystr3
285778
285775
2026-06-22T21:15:13Z
Denny
81
/* Syntactic tables (experimental) */
285778
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* {{Z+|Z36823}}
* {{Z+|Z36820}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
* {{Z+|Z36816}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
===== Determiners =====
====== Specific determiners ======
* {{Z+|Z36781}}
* {{Z+|Z36782}}
* {{Z+|Z36783}}
* {{Z+|Z36784}}
* {{Z+|Z36791}}
====== Functions ======
* {{Z+|Z36785}}
* {{Z+|Z36792}}
===== Merge Functions =====
* {{Z+|Z36798}}
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
ch3vou0y7lz8nj235v76g5oscmkl5az
285785
285778
2026-06-22T21:26:03Z
Denny
81
/* Syntactic tables (experimental) */
285785
wikitext
text/x-wiki
See also the [[Wikifunctions:Catalogue/Wikidata operations|Wikidata operations]], particularly for Lexemes, Senses, and Forms.
== Sentence and fragment generation ==
{{main|WF:NLG functions}}
{{see also|WF:Abstract Wikipedia/2025 fragment experiments}}
* {{Z+|Z26039}}
* {{Z+|Z26095}}
* {{Z+|Z26627}}
* {{Z+|Z28797}}
* {{Z+|Z28803}}
* {{Z+|Z29743}}
* {{Z+|Z31405}}
* {{Z+|Z32321}}
* {{Z+|Z32208}}
** {{Z+|Z32204}}
* {{Z+|Z32229}}
* {{Z+|Z32283}}
** {{Z+|Z32308}}
* {{Z+|Z32276}}
* {{Z+|Z32297}}
* {{Z+|Z32326}}
=== Cross-lingual sentence creation ===
* {{Z+|Z22664}}
* {{Z+|Z26955}}
* {{Z+|Z27137}}
* {{Z+|Z27885}}
** {{Z+|Z30159}}
* {{Z+|Z28254}}
=== Helpers ===
;Genders
* {{z+|Z26676}}
* {{z+|Z30539}}
* {{z+|Z28089}}
* {{z+|Z26745}}
* {{z+|Z23067}}
* {{z+|Z26364}}
* {{z+|Z25754}}
* {{z+|Z20616}}
== Numbers ==
* {{Z+|Z16437}}
* {{Z+|Z26829}}
== Natural language ==
{{Help:Type deconstruction table/Natural language}}
* {{Z+|Z860}}
* {{Z+|Z29958}}
** {{Z+|Z29649}}
* {{Z+|Z14326}}
* {{Z+|Z14321}}
** {{Z+|Z29750}}
* {{Z+|Z24097}}
* {{Z+|Z28282}}
* {{Z+|Z33738}}
* {{Z+|Z29654}}
* {{Z+|Z30043}}
== Monolingual text and stringset ==
{{Help:Type deconstruction table/Monolingual text}}
{{Help:Type deconstruction table/Monolingual stringset}}
* {{Z+|Z14392}}
* {{Z+|Z12877}}
** {{Z+|Z33175}}
** {{Z+|Z14334}}
* {{Z+|Z14396}}
** {{Z+|Z21583}}
** {{Z+|Z29749}}
* {{Z+|Z19254}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z26107}}
** {{Z+|Z861}}
* {{Z+|Z34663}}
== Multilingual text and stringset ==
{{Help:Type deconstruction table/Multilingual text}}
{{Help:Type deconstruction table/Multilingual stringset}}
* {{Z+|Z19312}}
* {{Z+|Z19254}}
* {{Z+|Z19272}}
* {{Z+|Z19279}}
* {{Z+|Z23236}}
* {{Z+|Z27893}}
** {{Z+|Z27905}}
== Select a language and language configurator ==
{{Help:Type deconstruction table/Per lang config}}
{{Help:Type deconstruction table/Per lang config branch}}
* {{Z+|Z14310}}
* {{Z+|Z14311}}
* {{Z+|Z14548}}
* {{Z+|Z23156}}
* {{Z+|Z23159}}
* {{Z+|Z23143}}
== Syntactic tables (experimental) ==
Regarding the Type {{Z+|Z36462}}
* {{Z+|Z36608}}
* ''(not working 100%)'' {{Z+|Z36717}}
* {{Z+|Z36613}}
* {{Z+|Z36616}}
* {{Z+|Z36636}}
* {{Z+|Z36639}}
* {{Z+|Z36644}}
* {{Z+|Z36723}}
* ''(not working)'' {{Z+|Z36727}}
* {{Z+|Z36650}}
* {{Z+|Z36652}}
* {{Z+|Z36733}}
* {{Z+|Z36737}}
* {{Z+|Z36743}}
* {{Z+|Z36747}}
* {{Z+|Z36823}}
* {{Z+|Z36820}}
* {{Z+|Z36827}}
* Agree options
=== Syntactic options ===
Regarding the Type {{Z+|Z36463}}
* {{Z+|Z36656}}
* {{Z+|Z36658}}
* {{Z+|Z36660}}
* ''(not working 100%)'' {{Z+|Z36670}}
* {{Z+|Z36662}}
* {{Z+|Z36666}}
* {{Z+|Z36816}}
=== Language-specific ===
These should probably move or be copied on the language specific functions.
==== English ====
===== Nouns =====
* Example noun: {{Z|Z36617}}
* {{Z+|Z36607}}
* {{Z+|Z36754}}
* {{Z+|Z36759}}
* {{Z+|Z36762}}
* {{Z+|Z36766}}
* {{Z+|Z36770}}
===== Determiners =====
====== Specific determiners ======
* {{Z+|Z36781}}
* {{Z+|Z36782}}
* {{Z+|Z36783}}
* {{Z+|Z36784}}
* {{Z+|Z36791}}
====== Functions ======
* {{Z+|Z36785}}
* {{Z+|Z36792}}
===== Merge Functions =====
* {{Z+|Z36798}}
==== German ====
* {{Z|Z36645}}
[[Category:Lists of functions]]
dz9riqa2h1hi3i1h9yqst35bfgdlic2
Wikifunctions:Catalogue/Natural language operations/English
4
41934
285791
263139
2026-06-22T21:42:07Z
Denny
81
/* Articles */
285791
wikitext
text/x-wiki
==Sentence and fragment generation==
===General-purpose===
* {{Z+|Z26088}}
* {{Z+|Z23410}}
* {{Z+|Z21765}}
* {{Z+|Z26570}}
* {{Z+|Z32199}}
* {{Z+|Z32230}}
* {{Z+|Z32244}}
* {{Z+|Z32249}}
===Special use cases===
* {{Z+|Z20597}}
* {{Z+|Z28784}}
==Morphology==
===Nouns and pronouns===
* {{Z+|Z11089}}
* {{Z+|Z11218}}
* {{Z+|Z22490}}
====Possessives====
* {{Z+|Z11302}}
* {{Z+|Z19125}}
===Verbs===
* {{Z+|Z24676}}
* {{Z+|Z24687}}
* {{Z+|Z13177}}
* {{Z+|Z13087}}
===Adjectives and adverbs===
* {{Z+|Z11795}}
* {{Z+|Z12203}}
** {{Z+|Z29851}}
*** {{Z+|Z29852}}
===Articles===
* {{Z+|Z21739}}
** {{Z+|Z32314}}
* {{Z+|Z32935}}
* {{Z+|Z32929}}
===Word derivation===
* {{Z+|Z11390}}
* {{Z+|Z11646}}
* {{Z+|Z13280}}
* {{Z+|Z13262}}
===Other===
* {{Z+|Z13254}}
==Numbers==
* {{Z+|Z13587}}
* {{Z+|Z14526}}
* {{Z+|Z13596}}
* {{Z+|Z14726}}
* {{Z+|Z14531}}
* {{Z+|Z14523}}
==Other==
* {{Z+|Z23827}}
* {{Z+|Z18852}}
* {{Z+|Z18859}}
[[Category:Lists of functions]]
[[Category:English]]
4mej5b7behyf43h19p6vio39b3csexy
Z20707
0
44473
285639
168712
2026-06-22T13:43:45Z
Strobilomyces
193
Example in description
285639
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z20707"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z20707K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "nom"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z20707K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjective"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "adjectif"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z20713",
"Z20717"
],
"Z8K4": [
"Z14",
"Z20726"
],
"Z8K5": "Z20707"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Spanish indef noun phrase"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "phrase nominale indéfinie en espagnol"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Creates an indefinite noun phrase in Spanish using Wikidata Lexemes. Example: un plátano maduro\n"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "créé une phrase nominale indéfinie en espagnol, en utilisant les lexèmes Wikidata"
}
]
}
}
8auijme18uucyhfp3f4edqqs5v8et3a
Wikifunctions:Type proposals/Geometrical point
4
56108
285662
263750
2026-06-22T16:53:11Z
So9q
3791
/* Comments */ Reply
285662
wikitext
text/x-wiki
== Summary ==
A big field of functions currently is absent from Wikifunctions - geometrical functions. We already have number functions and trigonometrical functions, but not geometrical.
This type could be used in such functions as, for example, rotate point relative to another point by given angle; get the angle between three points; get the middle point between two points.
Further object types could be created based on this one: segment, polygon, circle, surface, sphere. Other types to be created after this one: vector, line, curve, plane.
== Structure ==
This object type should consist of two real numbers, maybe three: representing a position along x, y and z axis.
=== Example values ===
Value …
{|class="wikitable" style="margin:.6em 1.6em"
|-
| <syntaxhighlight lang="json" line="line">{
"type": "point",
"value": "x"
{
"type": "float64"
},
"value": "y"
{
"type": "float64"
},
"value": "z"
{
"type": "float64"
},
}</syntaxhighlight>
|}
== Identity ==
Two points are the same if each of their coordinates (x, y, z) are the same
== Display function ==
''How would a value of this type be displayed on Wikifunctions''
<code>Point(12.34, -56.78)</code>
== Comments ==
* {{s}} as proposer. --[[User:Tohaomg|Tohaomg]] ([[User talk:Tohaomg|talk]]) 16:33, 3 May 2025 (UTC)--sign here
* {{s}} integral for many potential future functions. [[User:Diamondarmorstev|Diamondarmorstev]] ([[User talk:Diamondarmorstev|talk]]) 00:59, 30 September 2025 (UTC)
* If the type is limited to 2D, it would be better served by [[WF:Type_proposals/complex128]]. If it's N-dimensional, just use lists like the few vector (matrix) functions that already exist. [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 19:15, 27 November 2025 (UTC)
* {{o}} on the basis of strong preference towards the use of rational numbers [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 14:02, 7 April 2026 (UTC)
*:Would you be willing to propose a new point-type with rational numbers? [[User:So9q|So9q]] ([[User talk:So9q|talk]]) 16:53, 22 June 2026 (UTC)
: {{o}} per YoshiRulz. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 14:11, 7 April 2026 (UTC)
0w24tgym4a2wg5uzlpkcgnlyv0xan71
Z25326
0
58864
285883
285423
2026-06-23T06:50:38Z
99of9
1622
nudge
285883
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25326"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6010",
"Z17K2": "Z25326K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "quantità Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "kuantitas"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z25326K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language to display unit in"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "lingua"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "bahasa yang menampilkan"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z25327",
"Z25328",
"Z25329",
"Z25330",
"Z25331",
"Z25332",
"Z25333",
"Z25654",
"Z25655",
"Z26192",
"Z26800",
"Z28355",
"Z28959",
"Z36686",
"Z36714"
],
"Z8K4": [
"Z14",
"Z36713",
"Z25355"
],
"Z8K5": "Z25326"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "display quantity with digits and unit"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "formatta quantità Wikidata con cifre arabe e unità"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "tampilkan kuantitas dengan digit dan unit"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"stampa quantità Wikidata",
"mostra quantità Wikidata"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"quantity with digits and unit",
"show quantity",
"render quantity",
"display quantity",
"quantity renderer",
"display Wikidata quantity",
"render Wikidata quantity",
"display quantity with units",
"quantity display",
"show quantity with digits and unit",
"display value with digits and units",
"quantity with short unit or fallback",
"quantity to string"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"kuantitas dengan digit dan unit",
"tampilkan kuantitas",
"rekacitra kuantitas",
"perekacitra kuantitas",
"baca kuantitas Wikidata"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Simplest accurate representation where possible. Use English language conventions (for now) and fallback if the units are missing in the selected language"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Rappresentazione accurata più semplice dove possibile. Usa l'Inglese come lingua di fallback (per ora) se le unità mancano nella lingua selezionata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Representasi paling sederhana dan mudah. Menggunakan konvensi bahasa Inggris dan cadangan (untuk sekarang) jika unit hilang pada bahasa yang dipilih."
}
]
}
}
6zuwtbo1w2gqi7tmfpqnv83qvaegduf
285887
285883
2026-06-23T07:15:55Z
99of9
1622
Added Z36859 to the approved list of test cases
285887
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25326"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6010",
"Z17K2": "Z25326K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "quantità Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "kuantitas"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z25326K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language to display unit in"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "lingua"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "bahasa yang menampilkan"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z25327",
"Z25328",
"Z25329",
"Z25330",
"Z25331",
"Z25332",
"Z25333",
"Z25654",
"Z25655",
"Z26192",
"Z26800",
"Z28355",
"Z28959",
"Z36686",
"Z36714",
"Z36859"
],
"Z8K4": [
"Z14",
"Z36713",
"Z25355"
],
"Z8K5": "Z25326"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "display quantity with digits and unit"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "formatta quantità Wikidata con cifre arabe e unità"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "tampilkan kuantitas dengan digit dan unit"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1787",
"Z31K2": [
"Z6",
"stampa quantità Wikidata",
"mostra quantità Wikidata"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"quantity with digits and unit",
"show quantity",
"render quantity",
"display quantity",
"quantity renderer",
"display Wikidata quantity",
"render Wikidata quantity",
"display quantity with units",
"quantity display",
"show quantity with digits and unit",
"display value with digits and units",
"quantity with short unit or fallback",
"quantity to string"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"kuantitas dengan digit dan unit",
"tampilkan kuantitas",
"rekacitra kuantitas",
"perekacitra kuantitas",
"baca kuantitas Wikidata"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Simplest accurate representation where possible. Use English language conventions (for now) and fallback if the units are missing in the selected language"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Rappresentazione accurata più semplice dove possibile. Usa l'Inglese come lingua di fallback (per ora) se le unità mancano nella lingua selezionata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "Representasi paling sederhana dan mudah. Menggunakan konvensi bahasa Inggris dan cadangan (untuk sekarang) jika unit hilang pada bahasa yang dipilih."
}
]
}
}
iahy1n5wamu9lg8cuh6qfi8z5ec8qex
Z25785
0
59821
285843
285350
2026-06-23T05:03:19Z
99of9
1622
nudge
285843
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z25785"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z25785K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "string representing quantity to read"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "input"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "untaian kuantitas yang dibaca"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z25785K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language to read in"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "lingua"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "bahasa yang membaca"
}
]
}
}
],
"Z8K2": "Z6010",
"Z8K3": [
"Z20",
"Z25786",
"Z25787",
"Z25788",
"Z25790",
"Z25791",
"Z26409",
"Z26198",
"Z26197",
"Z27171",
"Z26801",
"Z25922",
"Z25921",
"Z27681",
"Z36688"
],
"Z8K4": [
"Z14",
"Z25866"
],
"Z8K5": "Z25785"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "read Wikidata quantity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "leggi Quantità Wikidata"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1078",
"Z11K2": "baca kuantitas Wikidata"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"read quantity",
"quantity parser",
"parse quantity",
"parse Wikidata quantity",
"Wikidata quantity parser",
"enter quantity",
"read value with unit",
"get quantity from string",
"string to Wikidata quantity",
"string to quantity"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1078",
"Z31K2": [
"Z6",
"baca kuantitas",
"pengurai kuantitas"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "takes a string input and converts it to a Wikidata quantity object."
}
]
}
}
cc8gv9aqd0m02y34fnjun2wxfw9zse7
Z26337
0
61237
285636
211478
2026-06-22T13:25:49Z
Strobilomyces
193
+ en description
285636
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z26337"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z26337K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Entidad"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "entité"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z26337K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Clase"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "classé"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z26339"
],
"Z8K4": [
"Z14",
"Z26338"
],
"Z8K5": "Z26337"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Fragmento de instanciación sin artículo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Spanish article-less instantiating sentence"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "création d'une phrase sans article en espagnol"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Por ejemplo: \"Madrid es una ciudad.\""
},
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Example: Francia es un país."
}
]
}
}
h7k3gr2t9tkff7kiixe8xkfi342o5f3
Z29624
0
68839
285884
277421
2026-06-23T07:00:05Z
99of9
1622
no need to specify languages
285884
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z29624"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z29623",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z23543",
"Z23543K1": {
"Z1K1": "Z7",
"Z7K1": "Z30120",
"Z30120K1": {
"Z1K1": "Z18",
"Z18K1": "Z29623K1"
},
"Z30120K2": [
"Z6030",
"Z6036"
],
"Z30120K3": [
"Z60"
],
"Z30120K4": [
"Z6092",
{
"Z1K1": "Z6092",
"Z6092K1": "P31"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "item (QID) is instance of these [QIDs], compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
fp2gnf2fjq4z7jmyswh21hbjyiqzgpq
Wikifunctions:Catalogue/HTML operations
4
69531
285755
280462
2026-06-22T20:24:35Z
Denny
81
/* Concatenation */
285755
wikitext
text/x-wiki
Functions that are directly related to [[Help:HTML_fragments|HTML fragments]].
==Comparison and evaluation==
{{Help:Comparison function table/HTML fragment}}
* {{Z+|Z877}}
* {{Z+|Z29045}}
* {{Z+|Z29572}}
** {{Z+|Z29576}}
==Conversion==
{{Help:Type deconstruction table/HTML fragment}}
* {{Z+|Z27854}}
* {{Z+|Z27861}}
* {{Z+|Z33470}}
** {{Z+|Z27868}}
** {{Z+|Z19384}}
==Transformation==
===Concatenation===
* {{Z+|Z27849}}
** {{Z+|Z27926}}
** {{Z+|Z35766}}
** {{Z+|Z36810}}
** {{Z+|Z32149}}
*{{Z+|Z32234}}
===Tag wrapping===
* {{Z+|Z27873}}
** {{Z+|Z33470}}
*** {{Z+|Z33457}}
** {{Z+|Z35049}}
* {{Z+|Z30058}}
* {{Z+|Z29582}}
===Text and element styling===
* {{Z+|Z29052}}
* {{Z+|Z28914}}
* {{Z+|Z31729}}
* {{Z+|Z32925}}
===Other===
* {{Z+|Z27932}}
==Page elements==
===Headers and sections===
* {{Z+|Z31465}}
** {{Z+|Z32145}}
===Paragraphs and lists===
*{{Z+|Z32123}}
** {{Z+|Z32163}}
** {{Z+|Z33068}}
* {{Z+|Z32179}}
* {{Z+|Z32180}}
** {{Z+|Z32215}}
===Links and buttons===
* {{Z+|Z30016}}
* {{Z+|Z31697}}
** {{Z+|Z29588}}
* {{Z+|Z28904}}
* {{Z+|Z30954}}
===Images===
* {{Z+|Z36038}}
=== References and citations ===
{{Seealso|Wikifunctions:Catalogue/Wikidata_operations/Item#Citations}}
* {{Z+|Z31906}}
* {{Z+|Z31917}}
* {{Z+|Z31921}}
* {{Z+|Z32053}}
===Tables===
* {{Z+|Z35017}}
* {{Z+|Z27878}}
* {{Z+|Z23293}}
* {{Z+|Z29580}}
==Linguistic applications==
* {{Z+|Z26333}}
* {{Z+|Z29055}}
* {{Z+|Z28602}}
** {{Z+|Z28928}}
* {{Z+|Z29488}}
**{{Z+|Z29557}}
* {{Z+|Z29186}}
==Sentence and fragment generation==
* {{Z+|Z32962}}
[[Category:Lists of functions]]
dvayokus66nihce6ex977ch3dzyek4l
285895
285755
2026-06-23T08:53:30Z
Denny
81
/* Conversion */
285895
wikitext
text/x-wiki
Functions that are directly related to [[Help:HTML_fragments|HTML fragments]].
==Comparison and evaluation==
{{Help:Comparison function table/HTML fragment}}
* {{Z+|Z877}}
* {{Z+|Z29045}}
* {{Z+|Z29572}}
** {{Z+|Z29576}}
==Conversion==
{{Help:Type deconstruction table/HTML fragment}}
* {{Z+|Z27854}}
* {{Z+|Z27861}}
* {{Z+|Z36839}}
* {{Z+|Z33470}}
** {{Z+|Z27868}}
** {{Z+|Z19384}}
==Transformation==
===Concatenation===
* {{Z+|Z27849}}
** {{Z+|Z27926}}
** {{Z+|Z35766}}
** {{Z+|Z36810}}
** {{Z+|Z32149}}
*{{Z+|Z32234}}
===Tag wrapping===
* {{Z+|Z27873}}
** {{Z+|Z33470}}
*** {{Z+|Z33457}}
** {{Z+|Z35049}}
* {{Z+|Z30058}}
* {{Z+|Z29582}}
===Text and element styling===
* {{Z+|Z29052}}
* {{Z+|Z28914}}
* {{Z+|Z31729}}
* {{Z+|Z32925}}
===Other===
* {{Z+|Z27932}}
==Page elements==
===Headers and sections===
* {{Z+|Z31465}}
** {{Z+|Z32145}}
===Paragraphs and lists===
*{{Z+|Z32123}}
** {{Z+|Z32163}}
** {{Z+|Z33068}}
* {{Z+|Z32179}}
* {{Z+|Z32180}}
** {{Z+|Z32215}}
===Links and buttons===
* {{Z+|Z30016}}
* {{Z+|Z31697}}
** {{Z+|Z29588}}
* {{Z+|Z28904}}
* {{Z+|Z30954}}
===Images===
* {{Z+|Z36038}}
=== References and citations ===
{{Seealso|Wikifunctions:Catalogue/Wikidata_operations/Item#Citations}}
* {{Z+|Z31906}}
* {{Z+|Z31917}}
* {{Z+|Z31921}}
* {{Z+|Z32053}}
===Tables===
* {{Z+|Z35017}}
* {{Z+|Z27878}}
* {{Z+|Z23293}}
* {{Z+|Z29580}}
==Linguistic applications==
* {{Z+|Z26333}}
* {{Z+|Z29055}}
* {{Z+|Z28602}}
** {{Z+|Z28928}}
* {{Z+|Z29488}}
**{{Z+|Z29557}}
* {{Z+|Z29186}}
==Sentence and fragment generation==
* {{Z+|Z32962}}
[[Category:Lists of functions]]
sy5j0skk6fwxyz57rcsq7jz0azquy1c
285900
285895
2026-06-23T10:14:47Z
99of9
1622
/* Text and element styling */ tag removal
285900
wikitext
text/x-wiki
Functions that are directly related to [[Help:HTML_fragments|HTML fragments]].
==Comparison and evaluation==
{{Help:Comparison function table/HTML fragment}}
* {{Z+|Z877}}
* {{Z+|Z29045}}
* {{Z+|Z29572}}
** {{Z+|Z29576}}
==Conversion==
{{Help:Type deconstruction table/HTML fragment}}
* {{Z+|Z27854}}
* {{Z+|Z27861}}
* {{Z+|Z36839}}
* {{Z+|Z33470}}
** {{Z+|Z27868}}
** {{Z+|Z19384}}
==Transformation==
===Concatenation===
* {{Z+|Z27849}}
** {{Z+|Z27926}}
** {{Z+|Z35766}}
** {{Z+|Z36810}}
** {{Z+|Z32149}}
*{{Z+|Z32234}}
===Tag wrapping===
* {{Z+|Z27873}}
** {{Z+|Z33470}}
*** {{Z+|Z33457}}
** {{Z+|Z35049}}
* {{Z+|Z30058}}
* {{Z+|Z29582}}
===Tag removal===
* {{Z+|Z36853}}
* {{Z+|Z36831}}
===Text and element styling===
* {{Z+|Z29052}}
* {{Z+|Z28914}}
* {{Z+|Z31729}}
* {{Z+|Z32925}}
===Other===
* {{Z+|Z27932}}
==Page elements==
===Headers and sections===
* {{Z+|Z31465}}
** {{Z+|Z32145}}
===Paragraphs and lists===
*{{Z+|Z32123}}
** {{Z+|Z32163}}
** {{Z+|Z33068}}
* {{Z+|Z32179}}
* {{Z+|Z32180}}
** {{Z+|Z32215}}
===Links and buttons===
* {{Z+|Z30016}}
* {{Z+|Z31697}}
** {{Z+|Z29588}}
* {{Z+|Z28904}}
* {{Z+|Z30954}}
===Images===
* {{Z+|Z36038}}
=== References and citations ===
{{Seealso|Wikifunctions:Catalogue/Wikidata_operations/Item#Citations}}
* {{Z+|Z31906}}
* {{Z+|Z31917}}
* {{Z+|Z31921}}
* {{Z+|Z32053}}
===Tables===
* {{Z+|Z35017}}
* {{Z+|Z27878}}
* {{Z+|Z23293}}
* {{Z+|Z29580}}
==Linguistic applications==
* {{Z+|Z26333}}
* {{Z+|Z29055}}
* {{Z+|Z28602}}
** {{Z+|Z28928}}
* {{Z+|Z29488}}
**{{Z+|Z29557}}
* {{Z+|Z29186}}
==Sentence and fragment generation==
* {{Z+|Z32962}}
[[Category:Lists of functions]]
f447s165hwnhmt1byv5egmx297jlwtn
Z30798
0
71205
285867
278214
2026-06-23T06:13:02Z
99of9
1622
Added Z30800 to the approved list of test cases
285867
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z30798"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z30798K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z30799",
"Z30801",
"Z30802",
"Z30803",
"Z30800"
],
"Z8K4": [
"Z14",
"Z30804"
],
"Z8K5": "Z30798"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English preposition for location (\"in\"/\"on\"/\"at\")"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"in/on/at",
"on/in/at",
"location preposition",
"preposition for item"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
6v3uf4no5gljg7mexvzw75goh7s3prc
285870
285867
2026-06-23T06:17:29Z
99of9
1622
Added Z35661 to the approved list of test cases
285870
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z30798"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z30798K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z30799",
"Z30801",
"Z30802",
"Z30803",
"Z30800",
"Z35661"
],
"Z8K4": [
"Z14",
"Z30804"
],
"Z8K5": "Z30798"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English preposition for location (\"in\"/\"on\"/\"at\")"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"in/on/at",
"on/in/at",
"location preposition",
"preposition for item"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
fwspnibcgzv4bmwk9xnoj7d6jlujag0
Z30804
0
71211
285868
237422
2026-06-23T06:14:52Z
99of9
1622
selective fetch
285868
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z30804"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z30798",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z23120",
"Z23120K1": {
"Z1K1": "Z7",
"Z7K1": "Z22865",
"Z22865K1": {
"Z1K1": "Z7",
"Z7K1": "Z22978",
"Z22978K1": {
"Z1K1": "Z7",
"Z7K1": "Z30120",
"Z30120K1": {
"Z1K1": "Z18",
"Z18K1": "Z30798K1"
},
"Z30120K2": [
"Z6030",
"Z6036"
],
"Z30120K3": [
"Z60"
],
"Z30120K4": [
"Z6092",
{
"Z1K1": "Z6092",
"Z6092K1": "P31"
}
]
},
"Z22978K2": {
"Z1K1": "Z6092",
"Z6092K1": "P31"
}
},
"Z22865K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q634"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q1402592"
}
]
}
},
"Z802K2": "on",
"Z802K3": "in"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "en preposition for location, simple composition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
1jjmtdsyj9mz4tsp7lw7j364za406ch
285869
285868
2026-06-23T06:16:30Z
99of9
1622
since Earth isn't directly a P31 planet
285869
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z30804"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z30798",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z23120",
"Z23120K1": {
"Z1K1": "Z7",
"Z7K1": "Z22865",
"Z22865K1": {
"Z1K1": "Z7",
"Z7K1": "Z22978",
"Z22978K1": {
"Z1K1": "Z7",
"Z7K1": "Z30120",
"Z30120K1": {
"Z1K1": "Z18",
"Z18K1": "Z30798K1"
},
"Z30120K2": [
"Z6030",
"Z6036"
],
"Z30120K3": [
"Z60"
],
"Z30120K4": [
"Z6092",
{
"Z1K1": "Z6092",
"Z6092K1": "P31"
}
]
},
"Z22978K2": {
"Z1K1": "Z6092",
"Z6092K1": "P31"
}
},
"Z22865K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q634"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q1402592"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q3504248"
}
]
}
},
"Z802K2": "on",
"Z802K3": "in"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "en preposition for location, simple composition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
79dkr47ojv266p45u3g8veitw0v15ql
Wikifunctions:Human languages/Z1062
4
79186
285906
261122
2026-06-23T11:07:17Z
Mormegil
150
better map
285906
wikitext
text/x-wiki
[[File:Czech language distribution.jpg|thumb|Czech language distribution map]]
'''Czech''' ([[Z1062]], [[d:Q9056|Q9056]], code <code>cs</code>) is a West Slavic language.
== Grammatical features used ==
* {{Z|Z25501}} (+ {{Z|Z26935}} for masculine gender)
* {{Z|Z26934}}
* ''TBD'' – grammatical tense (past/present/future)
* ''TBD'' – grammatical case (nom/gen/dat/acc/voc/loc/ins)
== Functions ==
{{Main|Wikifunctions:Catalogue/Natural language operations/Czech}}
[[Category:Czech| ]]
t9ctbw5ke0jpm5c3sahon3b3yvofg53
Wikifunctions:Type proposals/Syntactic table
4
79588
285624
284188
2026-06-22T13:05:23Z
Denny
81
/* Comments */ Reply
285624
wikitext
text/x-wiki
: ''Experimentally implemented'': {{Z+|Z36462}} --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 12:49, 17 June 2026 (UTC)
One aim of the NLG system is to have a small number of language-specific functions. It is OK to have many abstract functions, but the specific languages should ideally be less numerous.
For example, consider the following six outputs:
# Brač is an island.
# Brač is a beautiful island.
# Brač is a beautiful [[:en:Island|island]].
# '''Brač''' is an island.
# '''Brač''' is a beautiful island.
# '''Brač''' is a beautiful [[:en:Island|island]].
How many language-specific functions would that need?
If I look at the current best practices, I seem to land on six language-specific functions, one for each output. Even though grammatically there seem to be only two major operations:
* Connect two noun phrases in a predicative sentence: Brač is an island
* Combine an adjective and a noun to form a noun phrase: a beautiful island
Besides that, we would have functions to turn a phrase into a link or to give strong emphasis to a phrase, but do these need to be language-specific? I think not.
We seem to have all the necessary pieces for the outputs already available:
* <code>Indefinite noun phrase with adjective</code>: a beautiful island ([https://www.wikifunctions.org/wiki/Z22664?call=%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%22Q23442%22%7D%2C%22Z22664K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q7242%22%7D%2C%22Z22664K3%22%3A%22Z1002%22%7D function call])
* <code>Article-less instantiating fragment</code>: Brač is an island. ([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%22Q922%22%7D%2C%22Z26039K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q23442%22%7D%2C%22Z26039K3%22%3A%22Z1002%22%7D function call])
* <code>Strong importance</code>: '''Brač''' ([https://www.wikifunctions.org/view/en/Z28914?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28914%22%2C%22Z28914K1%22%3A%22Bra%C4%8D%22%7D function call])
* <code>HTML link to Wikipedia article about Wikidata item</code>: [[:en:Island|island]] ([https://www.wikifunctions.org/view/en/Z29588?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z29588%22%2C%22Z29588K1%22%3A%22Z1002%22%2C%22Z29588K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q23442%22%7D%7D function call])
But it is currently not possible to plug these together to allow for the creation of the outputs above, beyond the first one.
That’s partially because of the involved types:
* <code>indefinite noun phrase with adjective</code> takes two <code>Wikidata item references</code> and a <code>language</code> and returns a <code>string</code>
* <code>article-less instantiating fragment</code> does the same
* <code>Strong importance</code> takes a <code>string</code> and returns an <code>HTML fragment</code>
* <code>HTML link to Wikipedia article about Wikidata item</code> takes a <code>language</code> and a <code>Wikidata item reference</code> and returns an <code>HTML fragment</code>
It seems that what we would want to do is the following (the language parameter has been omitted for legibility):
# <code>instantiating( Brač, island )</code>
# <code>instantiating( Brač, noun with adjective( island, beauty ) )</code>
# <code>instantiating( Brač, noun with adjective( link( island ), beauty ) )</code>
# <code>instantiating( strong( Brač ), island )</code>
# <code>instantiating( strong( Brač ), noun with adjective( island, beauty ) )</code>
# <code>instantiating( strong( Brač ), noun with adjective( link( island ), beauty ) )</code>
If we want to be able to do this, the type of <code>Brač</code> and the return type of <code>strong</code> must be the same, as well as the type of <code>island</code> and the return types of <code>link</code> and <code>noun with adjective</code>.
What could that type be?
In English, as usual, we may get seduced to a certain simplicity: we could probably just use <code>HTML fragment</code> as the type and probably get away with it! All of the operations above seem to work out.
But in French (or Italian or Spanish or many other languages) that wouldn’t work: <code>noun with adjective</code> needs to know the gender of the noun in order to select the right form of the adjective (the adjective and the noun need to agree with each other). HTML fragment does not provide that information.
I don’t think that there currently is a good type for that. I suggest introducing a new type, the <code>syntactic table</code>. This is inspired by [[:en:Grammatical Framework (programming language)|Grammatical Framework]], and in core similar to a [[Wikifunctions:Type proposals/Syntactic type|proposal I made last year]], but I learned a lot from the comments and modified the type accordingly, making it considerably simpler.
<code>Syntactic table</code> has the following four keys:
# <code>Language</code>, i.e. which <code>natural language</code> is this table for
# <code>Part of speech</code>, i.e. which part of speech is this (noun, noun phrase, verb, adjective, etc.) (is this a lightweight enumeration or a <code>Wikidata item reference</code>?)
# <code>Inherent features</code>, <code>list</code> of <code>Wikidata item references</code> representing grammatical features, e.g. <code>masculine</code>, <code>plural</code>, etc.
# <code>Options</code>, a <code>list</code> of <code>pairs</code> of a <code>list</code> of <code>Wikidata item references</code> (representing grammatical features) and a <code>list</code> of <code>HTML fragments</code>
Or, do visualize it, here is a visualization of the syntactic table for the German noun ''“Stadt”'', meaning ''city''.
{| class="wikitable"
|'''''language'''''
| colspan="4" |German
|-
|'''''Part of speech'''''
| colspan="4" |noun
|-
|'''''Inherent feature'''''
| colspan="4" |feminine
|-
|'''''options'''''
|'''nominative'''
|'''genitive'''
|'''dative'''
|'''accusative'''
|-
|'''singular'''
|Stadt
|Stadt
|Stadt
|Stadt
|-
|'''plural'''
|Städte
|Städte
|Städten
|Städte
|}
And here is a partial visualization of the syntactic table for the German adjective ''“schön”'', meaning ''beautiful''.
{| class="wikitable"
|'''''language'''''
| colspan="4" |German
|-
|'''''Part of speech'''''
| colspan="4" |adjective
|-
|'''''Inherent feature'''''
| colspan="4" |—
|-
| rowspan="2" |'''''options'''''
| colspan="3" |'''singular'''
| rowspan="2" |'''plural'''
|-
|'''masculine'''
|'''feminine'''
|'''neuter'''
|-
|'''nominative'''
|schöner
|schöne
|schönes
|schönen
|-
|'''genitive'''
|schönen
|schönen
|schönen
|schönen
|-
|'''dative'''
|schönen
|schönen
|schönen
|schönen
|-
|'''accusative'''
|schönen
|schöne
|schönes
|schönen
|}
Now there would be a number of functions working on <code>syntactic tables</code>: for example, the <code>merge</code> function, which takes two tables and returns a table, representing the merger.
The inherent features of each of the tables are used to filter the options in each other tables. In addition, the options are combined together to create a new map of forms. So the result of the merging the two tables with a simple spaced concatenation would be:
{| class="wikitable"
|'''''language'''''
| colspan="4" |German
|-
|'''''Part of speech'''''
| colspan="4" |core noun phrase
|-
|'''''Inherent feature'''''
| colspan="4" |feminine
|-
|'''''options'''''
|'''nominative'''
|'''genitive'''
|'''dative'''
|'''accusative'''
|-
|'''singular'''
|schöne Stadt
|schönen Stadt
|schönen Stadt
|schöne Stadt
|-
|'''plural'''
|schönen Städte
|schönen Städte
|schönen Städten
|schönen Städte
|}
Another function could be used to bold a part of the text (which is a mostly language-independent operation). So we might have bolded the noun ''‘Stadt’'' before, which would result in the following output:
{| class="wikitable"
|'''''language'''''
| colspan="4" |German
|-
|'''''Part of speech'''''
| colspan="4" |noun
|-
|'''''Inherent feature'''''
| colspan="4" |feminine
|-
|'''''options'''''
|'''nominative'''
|'''genitive'''
|'''dative'''
|'''accusative'''
|-
|'''singular'''
|'''Stadt'''
|'''Stadt'''
|'''Stadt'''
|'''Stadt'''
|-
|'''plural'''
|'''Städte'''
|'''Städte'''
|'''Städten'''
|'''Städte'''
|}
If we merge that with the adjective as before, we get the following result:
{| class="wikitable"
|'''''language'''''
| colspan="4" |German
|-
|'''''Part of speech'''''
| colspan="4" |core noun phrase
|-
|'''''Inherent feature'''''
| colspan="4" |feminine
|-
|'''''options'''''
|'''nominative'''
|'''genitive'''
|'''dative'''
|'''accusative'''
|-
|'''singular'''
|schöne '''Stadt'''
|schönen '''Stadt'''
|schönen '''Stadt'''
|schöne '''Stadt'''
|-
|'''plural'''
|schönen '''Städte'''
|schönen '''Städte'''
|schönen '''Städten'''
|schönen '''Städte'''
|}
And if we merge that with an indefinite article, we get a full noun phrase:
{| class="wikitable"
|'''''language'''''
| colspan="4" |German
|-
|'''''Part of speech'''''
| colspan="4" |noun phrase
|-
|'''''Inherent feature'''''
| colspan="4" |feminine
|-
|'''''options'''''
|'''nominative'''
|'''genitive'''
|'''dative'''
|'''accusative'''
|-
|'''singular'''
|eine schöne '''Stadt'''
|einer schönen '''Stadt'''
|einer schönen '''Stadt'''
|eine schöne '''Stadt'''
|-
|'''plural'''
|schönen '''Städte'''
|schönen '''Städte'''
|schönen '''Städten'''
|schönen '''Städte'''
|}
Note that we are always operating on <code>syntactic tables</code>, both in the input and in the output, allowing us to combine the functions flexibly.
Compared to my [[Wikifunctions:Type proposals/Syntactic type|previous proposal]], we would not be creating hundreds of types, but just a small number (one basically, maybe some supporting types), answering one of the biggest criticisms. Also, the new type will be available immediately for all languages that want to use it.
To summarize, the idea is to have two kind of functions: functions that are usable across all (or at least most) languages (such as <code>link</code> or <code>strong emphasis</code>) and functions that need to be implemented in each language (such as <code>noun with adjective</code>). Both can use the same type, and thus be combined in a way that can reduce the number of functions in the latter group.
== Discusssion ==
=== Cory's thoughts ===
This proposal can get us very far for languages with simple (-ish) morphologies. It will be less effective for morphologically rich language, where a syntactic table might contain thousands of forms, and where it might be more natural to apply these kinds of transformations only to parts of words. For example, while some languages might be okay with
<blockquote>schönen <bold>Städte</bold></blockquote>
others might prefer something like
<blockquote>schönen <bold>Städt</bold>e</blockquote>
(note the "e" standing outside of the bold chunk). This can even happen in English: if we wanted to make the phrasal verb "pick up" bold in a sentence, we'd have to deal with non-consecutive bold tokens, e.g.
<blockquote>Please <bold>pick</bold> it <bold>up</bold>.</blockquote>
More broadly, NLP systems tend to handle this kind of metadata in one of two ways: offset and inset annotation. Inset annotation looks like the above examples: tags that intervene directly in a data structure. Offset annotation might look more like this:
<pre>
{
"text": "Please pick it up.",
"spans": [
{ "tag": "bold", "begin": 7, "end": 11 },
{ "tag": "bold", "begin": 15, "end": 17 }
]
}
</pre>
Decisions like this are not unrelated to how we decide to represent linguistic elements more generally. A general, robust solution would involve treating linguistic units not as literal text strings but as symbolic transformational nodes. In this case, the system wouldn't operate over "Stadt" but over a richer structure containing 1) the syntactic usage of "Stadt," 2) the eventual inflected form of "Stadt," and 3) any additional annotations, such as bold text, that should be applied to the token.
It is also possible for these two paradigms to play nicely together. At the end of the day, our system will need to produce specific surface forms in sequence to create sentences, but how we get to those surface forms can vary. Some languages might use syntactic tables while others might need to function in terms of symbolic morphological transformations (if only to reduce the search space of possible syntactic tables!).
=== Further thoughts by Denny ===
Cory’s point is valid. In some languages, we will easily get to hundreds of forms. That may not be feasible. Questions are whether we can avoid to expand all these forms, or whether, maybe with a smart usage of quoting functions or some other mechanism, we can find a way to scale the system.
== Alternatives ==
* [[WF:Type proposals/Semantic unit]]
* [[WF:Type proposals/Abstract sentence]]
== Comments ==
* <s>{{s}}: this isn't perfect, but it's much much better. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 16:32, 2 April 2026 (UTC)</s> {{neutral}}: I'd like more opporitunity to review the two competing proposals on this topic, which one we go with is important. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 13:59, 10 April 2026 (UTC)
* {{s}} I feel that this is a step that's required for handling different types of phrases. [[User:Jsamwrites|John Samuel]] 17:59, 2 April 2026 (UTC)
* {{s}} I like the idea as I really like spreadsheet functions and tables. As I like Boilerplate templates I hope this proposal can help making it easier to create a function for a specific sentence representing some Wikidata statements.--[[User:Hogü-456|Hogü-456]] ([[User talk:Hogü-456|talk]]) 16:17, 3 April 2026 (UTC)
* {{neutral|Comment}} I'm skeptical that we can attain general prose in non-European languages even with this extra context.<!--
--><br>Looking at your example of <code>noun_with_adjective[de] := (noun, adj) => matrix_product(concat_with_space)(adj, noun)</code>,<!--
--> each of the cells/entries in the table is a single [[Z89]], so it seems this Type is limited to grammars where applying an adjective to a noun is just a prefix and/or suffix.<!--
--> I've [[Talk:Z27137#Japanese|previously remarked]] that [[d:Q2116774|counters in Japanese]] can "migrate" to the verb (unlike in English, German, etc. where counters behave like adjectives).<!--
--> To accommodate this, either the language-specific <code>merge</code> Function would have to parse and split off the counter when embedding the noun phrase into a sentence,<!--
--> or this Type would have to somehow encode a split result with additional tagging on each segment.<!--
--><br>IMO a better model for applying formatting like boldface and hyperlinks would be as <code>Z882(Z11, Z883(Z6091, Z881(Z882(Z13518, Z13518))))</code>,<!--
--> that is, to do all linguistic processing on plaintext, but keep track of which span(s) in the string corresponds to each Item from the outer callsite.<!--
--> Then that outer Function can format and linkify the final string by iterating those ranges as ordered by their start index.<!--
--> [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 17:53, 3 April 2026 (UTC)
* {{o|Weakly oppose}} While I completely support the need to scale NLG functions outside simple fragment generating functions, I'm skeptical on the bottom-up approach that syntactic tables use. As already addressed, starting composing a sentence from the constituent parts is problematic, since in many instances the behaviour of a part of the sentence depends in non trivial ways to the entire structure of the sentence (in ways that are sometimes not neatly encodable in a simple table). I think that usually the best approach for NLG is top-down, which means that a function should try to generate an entire sentence, delegating to other functions the generation of parts of a sentence (providing the necessary grammatical context). When I have time, I'll try to formulate an alternative proposal. This type could still be a useful intetnal tool, but I think using it as the foundation for modular NLG can be very problematic. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 15:14, 5 April 2026 (UTC)
*:I've now formulated the proposal for [[Wikifunctions:Type proposals/Abstract sentence]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 12:22, 7 April 2026 (UTC)
* {{o}} per YoshiRulz and Dv103; I have started proposing types based on my own efforts at language generation at ,[[Wikifunctions:Type proposals/Syntactic unit]] and [[Wikifunctions:Type proposals/Semantic unit]]. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 17:54, 5 April 2026 (UTC)
*:Thanks for the links :) [[User:So9q|So9q]] ([[User talk:So9q|talk]]) 21:00, 5 April 2026 (UTC)
* I’m not opposed to this proposal, but I do question the wisdom of characterizing a type without formalizing it. We already see the inconvenience with {{Z|Z11}}, where we are unable to identify that a function is limited to a particular language. For what are logically more constrained functions, I think the “too many types” is a valid objection, but if types have no part to play in managing the inevitable complexity, what is the alternative?
: I hesitate to leap to solutions, but we should at least explore “generic” types here. In any event, I believe we should make some distinction at the type level, based on the syntactic category (“part of speech” in the proposal). For example, constructions that (logically) require a noun phrase for a particular argument should resist having that argument provided by a function that returns a verb phrase (which would need to be wrapped in a nominalization function). That looks and feels like type-handling, of course, but the real question remains: If syntactic categories are not represented by persistent or generic types, how are the constraints associated with those categories represented and enforced, particularly when constructing compositions, as opposed to evaluating them.
:[[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:16, 17 June 2026 (UTC)
::I think these are great questions. My favorite proposal is still to create specific types for (English / French / Dagbani / ...) (nouns / verb / noun phrase / adjective / ...), in addition to abstract (noun / verb / noun phrase / adjective ...), but there was too much pushback on that one.
::My sense is that we can kick off this one (I did so yesterday) and try it out. We can later still switch to a "many types" solution, most of the functions would be basically the same. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 12:47, 17 June 2026 (UTC)
:::Yes. As I say, I’m not opposed; I just think that we should expect to end up with “many” types, with whichever structures, whether or not we factor out the language. As I understand the proposal, the complex “generic” type of a K4 object would be the same in every instance, so it is purely structural, with no surfacing of the permitted or expected combinations. Is that right? [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 13:58, 17 June 2026 (UTC)
::::that's correct, K4 is purely structural. One could write functions that check that the table for an English noun is all correct, but as a datatype it is not aware of it. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 13:05, 22 June 2026 (UTC)
tiiwx5dfcx8xlkaw4le065x0amj834o
285637
285624
2026-06-22T13:26:20Z
Denny
81
/* Comments */ Reply
285637
wikitext
text/x-wiki
: ''Experimentally implemented'': {{Z+|Z36462}} --[[User:DVrandecic (WMF)|DVrandecic (WMF)]] ([[User talk:DVrandecic (WMF)|talk]]) 12:49, 17 June 2026 (UTC)
One aim of the NLG system is to have a small number of language-specific functions. It is OK to have many abstract functions, but the specific languages should ideally be less numerous.
For example, consider the following six outputs:
# Brač is an island.
# Brač is a beautiful island.
# Brač is a beautiful [[:en:Island|island]].
# '''Brač''' is an island.
# '''Brač''' is a beautiful island.
# '''Brač''' is a beautiful [[:en:Island|island]].
How many language-specific functions would that need?
If I look at the current best practices, I seem to land on six language-specific functions, one for each output. Even though grammatically there seem to be only two major operations:
* Connect two noun phrases in a predicative sentence: Brač is an island
* Combine an adjective and a noun to form a noun phrase: a beautiful island
Besides that, we would have functions to turn a phrase into a link or to give strong emphasis to a phrase, but do these need to be language-specific? I think not.
We seem to have all the necessary pieces for the outputs already available:
* <code>Indefinite noun phrase with adjective</code>: a beautiful island ([https://www.wikifunctions.org/wiki/Z22664?call=%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%22Q23442%22%7D%2C%22Z22664K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q7242%22%7D%2C%22Z22664K3%22%3A%22Z1002%22%7D function call])
* <code>Article-less instantiating fragment</code>: Brač is an island. ([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%22Q922%22%7D%2C%22Z26039K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q23442%22%7D%2C%22Z26039K3%22%3A%22Z1002%22%7D function call])
* <code>Strong importance</code>: '''Brač''' ([https://www.wikifunctions.org/view/en/Z28914?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z28914%22%2C%22Z28914K1%22%3A%22Bra%C4%8D%22%7D function call])
* <code>HTML link to Wikipedia article about Wikidata item</code>: [[:en:Island|island]] ([https://www.wikifunctions.org/view/en/Z29588?call=%7B%22Z1K1%22%3A%22Z7%22%2C%22Z7K1%22%3A%22Z29588%22%2C%22Z29588K1%22%3A%22Z1002%22%2C%22Z29588K2%22%3A%7B%22Z1K1%22%3A%22Z6091%22%2C%22Z6091K1%22%3A%22Q23442%22%7D%7D function call])
But it is currently not possible to plug these together to allow for the creation of the outputs above, beyond the first one.
That’s partially because of the involved types:
* <code>indefinite noun phrase with adjective</code> takes two <code>Wikidata item references</code> and a <code>language</code> and returns a <code>string</code>
* <code>article-less instantiating fragment</code> does the same
* <code>Strong importance</code> takes a <code>string</code> and returns an <code>HTML fragment</code>
* <code>HTML link to Wikipedia article about Wikidata item</code> takes a <code>language</code> and a <code>Wikidata item reference</code> and returns an <code>HTML fragment</code>
It seems that what we would want to do is the following (the language parameter has been omitted for legibility):
# <code>instantiating( Brač, island )</code>
# <code>instantiating( Brač, noun with adjective( island, beauty ) )</code>
# <code>instantiating( Brač, noun with adjective( link( island ), beauty ) )</code>
# <code>instantiating( strong( Brač ), island )</code>
# <code>instantiating( strong( Brač ), noun with adjective( island, beauty ) )</code>
# <code>instantiating( strong( Brač ), noun with adjective( link( island ), beauty ) )</code>
If we want to be able to do this, the type of <code>Brač</code> and the return type of <code>strong</code> must be the same, as well as the type of <code>island</code> and the return types of <code>link</code> and <code>noun with adjective</code>.
What could that type be?
In English, as usual, we may get seduced to a certain simplicity: we could probably just use <code>HTML fragment</code> as the type and probably get away with it! All of the operations above seem to work out.
But in French (or Italian or Spanish or many other languages) that wouldn’t work: <code>noun with adjective</code> needs to know the gender of the noun in order to select the right form of the adjective (the adjective and the noun need to agree with each other). HTML fragment does not provide that information.
I don’t think that there currently is a good type for that. I suggest introducing a new type, the <code>syntactic table</code>. This is inspired by [[:en:Grammatical Framework (programming language)|Grammatical Framework]], and in core similar to a [[Wikifunctions:Type proposals/Syntactic type|proposal I made last year]], but I learned a lot from the comments and modified the type accordingly, making it considerably simpler.
<code>Syntactic table</code> has the following four keys:
# <code>Language</code>, i.e. which <code>natural language</code> is this table for
# <code>Part of speech</code>, i.e. which part of speech is this (noun, noun phrase, verb, adjective, etc.) (is this a lightweight enumeration or a <code>Wikidata item reference</code>?)
# <code>Inherent features</code>, <code>list</code> of <code>Wikidata item references</code> representing grammatical features, e.g. <code>masculine</code>, <code>plural</code>, etc.
# <code>Options</code>, a <code>list</code> of <code>pairs</code> of a <code>list</code> of <code>Wikidata item references</code> (representing grammatical features) and a <code>list</code> of <code>HTML fragments</code>
Or, do visualize it, here is a visualization of the syntactic table for the German noun ''“Stadt”'', meaning ''city''.
{| class="wikitable"
|'''''language'''''
| colspan="4" |German
|-
|'''''Part of speech'''''
| colspan="4" |noun
|-
|'''''Inherent feature'''''
| colspan="4" |feminine
|-
|'''''options'''''
|'''nominative'''
|'''genitive'''
|'''dative'''
|'''accusative'''
|-
|'''singular'''
|Stadt
|Stadt
|Stadt
|Stadt
|-
|'''plural'''
|Städte
|Städte
|Städten
|Städte
|}
And here is a partial visualization of the syntactic table for the German adjective ''“schön”'', meaning ''beautiful''.
{| class="wikitable"
|'''''language'''''
| colspan="4" |German
|-
|'''''Part of speech'''''
| colspan="4" |adjective
|-
|'''''Inherent feature'''''
| colspan="4" |—
|-
| rowspan="2" |'''''options'''''
| colspan="3" |'''singular'''
| rowspan="2" |'''plural'''
|-
|'''masculine'''
|'''feminine'''
|'''neuter'''
|-
|'''nominative'''
|schöner
|schöne
|schönes
|schönen
|-
|'''genitive'''
|schönen
|schönen
|schönen
|schönen
|-
|'''dative'''
|schönen
|schönen
|schönen
|schönen
|-
|'''accusative'''
|schönen
|schöne
|schönes
|schönen
|}
Now there would be a number of functions working on <code>syntactic tables</code>: for example, the <code>merge</code> function, which takes two tables and returns a table, representing the merger.
The inherent features of each of the tables are used to filter the options in each other tables. In addition, the options are combined together to create a new map of forms. So the result of the merging the two tables with a simple spaced concatenation would be:
{| class="wikitable"
|'''''language'''''
| colspan="4" |German
|-
|'''''Part of speech'''''
| colspan="4" |core noun phrase
|-
|'''''Inherent feature'''''
| colspan="4" |feminine
|-
|'''''options'''''
|'''nominative'''
|'''genitive'''
|'''dative'''
|'''accusative'''
|-
|'''singular'''
|schöne Stadt
|schönen Stadt
|schönen Stadt
|schöne Stadt
|-
|'''plural'''
|schönen Städte
|schönen Städte
|schönen Städten
|schönen Städte
|}
Another function could be used to bold a part of the text (which is a mostly language-independent operation). So we might have bolded the noun ''‘Stadt’'' before, which would result in the following output:
{| class="wikitable"
|'''''language'''''
| colspan="4" |German
|-
|'''''Part of speech'''''
| colspan="4" |noun
|-
|'''''Inherent feature'''''
| colspan="4" |feminine
|-
|'''''options'''''
|'''nominative'''
|'''genitive'''
|'''dative'''
|'''accusative'''
|-
|'''singular'''
|'''Stadt'''
|'''Stadt'''
|'''Stadt'''
|'''Stadt'''
|-
|'''plural'''
|'''Städte'''
|'''Städte'''
|'''Städten'''
|'''Städte'''
|}
If we merge that with the adjective as before, we get the following result:
{| class="wikitable"
|'''''language'''''
| colspan="4" |German
|-
|'''''Part of speech'''''
| colspan="4" |core noun phrase
|-
|'''''Inherent feature'''''
| colspan="4" |feminine
|-
|'''''options'''''
|'''nominative'''
|'''genitive'''
|'''dative'''
|'''accusative'''
|-
|'''singular'''
|schöne '''Stadt'''
|schönen '''Stadt'''
|schönen '''Stadt'''
|schöne '''Stadt'''
|-
|'''plural'''
|schönen '''Städte'''
|schönen '''Städte'''
|schönen '''Städten'''
|schönen '''Städte'''
|}
And if we merge that with an indefinite article, we get a full noun phrase:
{| class="wikitable"
|'''''language'''''
| colspan="4" |German
|-
|'''''Part of speech'''''
| colspan="4" |noun phrase
|-
|'''''Inherent feature'''''
| colspan="4" |feminine
|-
|'''''options'''''
|'''nominative'''
|'''genitive'''
|'''dative'''
|'''accusative'''
|-
|'''singular'''
|eine schöne '''Stadt'''
|einer schönen '''Stadt'''
|einer schönen '''Stadt'''
|eine schöne '''Stadt'''
|-
|'''plural'''
|schönen '''Städte'''
|schönen '''Städte'''
|schönen '''Städten'''
|schönen '''Städte'''
|}
Note that we are always operating on <code>syntactic tables</code>, both in the input and in the output, allowing us to combine the functions flexibly.
Compared to my [[Wikifunctions:Type proposals/Syntactic type|previous proposal]], we would not be creating hundreds of types, but just a small number (one basically, maybe some supporting types), answering one of the biggest criticisms. Also, the new type will be available immediately for all languages that want to use it.
To summarize, the idea is to have two kind of functions: functions that are usable across all (or at least most) languages (such as <code>link</code> or <code>strong emphasis</code>) and functions that need to be implemented in each language (such as <code>noun with adjective</code>). Both can use the same type, and thus be combined in a way that can reduce the number of functions in the latter group.
== Discusssion ==
=== Cory's thoughts ===
This proposal can get us very far for languages with simple (-ish) morphologies. It will be less effective for morphologically rich language, where a syntactic table might contain thousands of forms, and where it might be more natural to apply these kinds of transformations only to parts of words. For example, while some languages might be okay with
<blockquote>schönen <bold>Städte</bold></blockquote>
others might prefer something like
<blockquote>schönen <bold>Städt</bold>e</blockquote>
(note the "e" standing outside of the bold chunk). This can even happen in English: if we wanted to make the phrasal verb "pick up" bold in a sentence, we'd have to deal with non-consecutive bold tokens, e.g.
<blockquote>Please <bold>pick</bold> it <bold>up</bold>.</blockquote>
More broadly, NLP systems tend to handle this kind of metadata in one of two ways: offset and inset annotation. Inset annotation looks like the above examples: tags that intervene directly in a data structure. Offset annotation might look more like this:
<pre>
{
"text": "Please pick it up.",
"spans": [
{ "tag": "bold", "begin": 7, "end": 11 },
{ "tag": "bold", "begin": 15, "end": 17 }
]
}
</pre>
Decisions like this are not unrelated to how we decide to represent linguistic elements more generally. A general, robust solution would involve treating linguistic units not as literal text strings but as symbolic transformational nodes. In this case, the system wouldn't operate over "Stadt" but over a richer structure containing 1) the syntactic usage of "Stadt," 2) the eventual inflected form of "Stadt," and 3) any additional annotations, such as bold text, that should be applied to the token.
It is also possible for these two paradigms to play nicely together. At the end of the day, our system will need to produce specific surface forms in sequence to create sentences, but how we get to those surface forms can vary. Some languages might use syntactic tables while others might need to function in terms of symbolic morphological transformations (if only to reduce the search space of possible syntactic tables!).
=== Further thoughts by Denny ===
Cory’s point is valid. In some languages, we will easily get to hundreds of forms. That may not be feasible. Questions are whether we can avoid to expand all these forms, or whether, maybe with a smart usage of quoting functions or some other mechanism, we can find a way to scale the system.
== Alternatives ==
* [[WF:Type proposals/Semantic unit]]
* [[WF:Type proposals/Abstract sentence]]
== Comments ==
* <s>{{s}}: this isn't perfect, but it's much much better. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 16:32, 2 April 2026 (UTC)</s> {{neutral}}: I'd like more opporitunity to review the two competing proposals on this topic, which one we go with is important. [[User:Feeglgeef|Feeglgeef]] ([[User talk:Feeglgeef|talk]]) 13:59, 10 April 2026 (UTC)
* {{s}} I feel that this is a step that's required for handling different types of phrases. [[User:Jsamwrites|John Samuel]] 17:59, 2 April 2026 (UTC)
* {{s}} I like the idea as I really like spreadsheet functions and tables. As I like Boilerplate templates I hope this proposal can help making it easier to create a function for a specific sentence representing some Wikidata statements.--[[User:Hogü-456|Hogü-456]] ([[User talk:Hogü-456|talk]]) 16:17, 3 April 2026 (UTC)
* {{neutral|Comment}} I'm skeptical that we can attain general prose in non-European languages even with this extra context.<!--
--><br>Looking at your example of <code>noun_with_adjective[de] := (noun, adj) => matrix_product(concat_with_space)(adj, noun)</code>,<!--
--> each of the cells/entries in the table is a single [[Z89]], so it seems this Type is limited to grammars where applying an adjective to a noun is just a prefix and/or suffix.<!--
--> I've [[Talk:Z27137#Japanese|previously remarked]] that [[d:Q2116774|counters in Japanese]] can "migrate" to the verb (unlike in English, German, etc. where counters behave like adjectives).<!--
--> To accommodate this, either the language-specific <code>merge</code> Function would have to parse and split off the counter when embedding the noun phrase into a sentence,<!--
--> or this Type would have to somehow encode a split result with additional tagging on each segment.<!--
--><br>IMO a better model for applying formatting like boldface and hyperlinks would be as <code>Z882(Z11, Z883(Z6091, Z881(Z882(Z13518, Z13518))))</code>,<!--
--> that is, to do all linguistic processing on plaintext, but keep track of which span(s) in the string corresponds to each Item from the outer callsite.<!--
--> Then that outer Function can format and linkify the final string by iterating those ranges as ordered by their start index.<!--
--> [[User:YoshiRulz|YoshiRulz]] ([[User talk:YoshiRulz|talk]]) 17:53, 3 April 2026 (UTC)
* {{o|Weakly oppose}} While I completely support the need to scale NLG functions outside simple fragment generating functions, I'm skeptical on the bottom-up approach that syntactic tables use. As already addressed, starting composing a sentence from the constituent parts is problematic, since in many instances the behaviour of a part of the sentence depends in non trivial ways to the entire structure of the sentence (in ways that are sometimes not neatly encodable in a simple table). I think that usually the best approach for NLG is top-down, which means that a function should try to generate an entire sentence, delegating to other functions the generation of parts of a sentence (providing the necessary grammatical context). When I have time, I'll try to formulate an alternative proposal. This type could still be a useful intetnal tool, but I think using it as the foundation for modular NLG can be very problematic. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 15:14, 5 April 2026 (UTC)
*:I've now formulated the proposal for [[Wikifunctions:Type proposals/Abstract sentence]] [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 12:22, 7 April 2026 (UTC)
* {{o}} per YoshiRulz and Dv103; I have started proposing types based on my own efforts at language generation at ,[[Wikifunctions:Type proposals/Syntactic unit]] and [[Wikifunctions:Type proposals/Semantic unit]]. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 17:54, 5 April 2026 (UTC)
*:Thanks for the links :) [[User:So9q|So9q]] ([[User talk:So9q|talk]]) 21:00, 5 April 2026 (UTC)
* I’m not opposed to this proposal, but I do question the wisdom of characterizing a type without formalizing it. We already see the inconvenience with {{Z|Z11}}, where we are unable to identify that a function is limited to a particular language. For what are logically more constrained functions, I think the “too many types” is a valid objection, but if types have no part to play in managing the inevitable complexity, what is the alternative?
: I hesitate to leap to solutions, but we should at least explore “generic” types here. In any event, I believe we should make some distinction at the type level, based on the syntactic category (“part of speech” in the proposal). For example, constructions that (logically) require a noun phrase for a particular argument should resist having that argument provided by a function that returns a verb phrase (which would need to be wrapped in a nominalization function). That looks and feels like type-handling, of course, but the real question remains: If syntactic categories are not represented by persistent or generic types, how are the constraints associated with those categories represented and enforced, particularly when constructing compositions, as opposed to evaluating them.
:[[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 10:16, 17 June 2026 (UTC)
::I think these are great questions. My favorite proposal is still to create specific types for (English / French / Dagbani / ...) (nouns / verb / noun phrase / adjective / ...), in addition to abstract (noun / verb / noun phrase / adjective ...), but there was too much pushback on that one.
::My sense is that we can kick off this one (I did so yesterday) and try it out. We can later still switch to a "many types" solution, most of the functions would be basically the same. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 12:47, 17 June 2026 (UTC)
:::Yes. As I say, I’m not opposed; I just think that we should expect to end up with “many” types, with whichever structures, whether or not we factor out the language. As I understand the proposal, the complex “generic” type of a K4 object would be the same in every instance, so it is purely structural, with no surfacing of the permitted or expected combinations. Is that right? [[User:GrounderUK|GrounderUK]] ([[User talk:GrounderUK|talk]]) 13:58, 17 June 2026 (UTC)
::::that's correct, K4 is purely structural. One could write functions that check that the table for an English noun is all correct, but as a datatype it is not aware of it. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 13:05, 22 June 2026 (UTC)
::::That's actually a good idea, I implemented {{Z|Z36770}} in order to validate English nouns, as an example. --[[User:Denny|Denny]] ([[User talk:Denny|talk]]) 13:26, 22 June 2026 (UTC)
aqrqudknilvh8kzsk69rgacvk60rsud
Z33068
0
79620
285901
278226
2026-06-23T10:51:52Z
Mormegil
150
+cs
285901
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z33068"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z33068K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "sentences"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "phrases"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Sätze"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "věty"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z33068K2",
"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"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z33966",
"Z33967",
"Z35098"
],
"Z8K4": [
"Z14",
"Z35097"
],
"Z8K5": "Z33068"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "paragraph from sentences"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "paragraphe à partir de phrases"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Absatz aus Sätzen"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "odstavec z vět"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Takes a list of sentences and creates a paragraph"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1004",
"Z11K2": "prend une liste de phrases et créé un paragraphe"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "wandelt eine Liste von Sätzen in einen Absatz um"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Ze zadaného seznamu vět vytvoří odstavec."
}
]
}
}
9223uquejnwuqdht8c6jtj0h6z7ao5r
Z33855
0
80865
285875
282694
2026-06-23T06:29:10Z
Jsamwrites
938
285875
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z33855"
},
"Z2K2": {
"Z1K1": "Z14294",
"Z14294K1": [
"Z14293",
{
"Z1K1": "Z14293",
"Z14293K1": "Z33844",
"Z14293K2": "Z33034"
},
{
"Z1K1": "Z14293",
"Z14293K1": "Z34077",
"Z14293K2": "Z34075"
},
{
"Z1K1": "Z14293",
"Z14293K1": "Z36319",
"Z14293K2": [
"Z60",
"Z1011"
]
},
{
"Z1K1": "Z14293",
"Z14293K1": "Z36857",
"Z14293K2": [
"Z60",
"Z1004"
]
}
],
"Z14294K2": "Z33852"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "config for main articles functions"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
j6ykcnh1wbezd52lftj56d6l3e3ruy6
Z34085
0
81222
285879
268499
2026-06-23T06:41:50Z
99of9
1622
spacing of multiple items
285879
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z34085"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z34077",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z12755",
"Z12755K1": {
"Z1K1": "Z18",
"Z18K1": "Z34077K1"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z27849",
"Z27849K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Ci\u003EHoofdartikel: \u003C/i\u003E"
},
"Z27849K2": {
"Z1K1": "Z7",
"Z7K1": "Z33848",
"Z33848K1": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z18",
"Z18K1": "Z34077K1"
}
},
"Z33848K2": {
"Z1K1": "Z18",
"Z18K1": "Z34077K4"
}
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z27926",
"Z27926K1": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "\u003Ci\u003EHoofdartikelen: \u003C/i\u003E"
},
{
"Z1K1": "Z7",
"Z7K1": "Z35766",
"Z35766K1": {
"Z1K1": "Z7",
"Z7K1": "Z13464",
"Z13464K1": "Z33848",
"Z13464K2": {
"Z1K1": "Z7",
"Z7K1": "Z12967",
"Z12967K1": {
"Z1K1": "Z18",
"Z18K1": "Z34077K1"
}
},
"Z13464K3": {
"Z1K1": "Z18",
"Z18K1": "Z34077K4"
}
},
"Z35766K2": {
"Z1K1": "Z89",
"Z89K1": " "
}
},
{
"Z1K1": "Z89",
"Z89K1": " en "
},
{
"Z1K1": "Z7",
"Z7K1": "Z33848",
"Z33848K1": {
"Z1K1": "Z7",
"Z7K1": "Z12964",
"Z12964K1": {
"Z1K1": "Z18",
"Z18K1": "Z34077K1"
}
},
"Z33848K2": {
"Z1K1": "Z18",
"Z18K1": "Z34077K4"
}
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "main articles, Dutch, composition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
5ordcg35lmyn1ql6g3gp71nunepyvlr
Z310
0
84841
285903
283869
2026-06-23T10:56:15Z
Mormegil
150
+cs
285903
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z310"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z310",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z310K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Commons media id"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "id media Commons"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "কমন্স মিডিয়া আইডি"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Commons-Medien-ID"
}
]
}
}
],
"Z4K3": "Z101"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Commons image reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Riferimento a immagine Commons"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "কমন্স ছবি উল্লেখ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Commons-Bildreferenz"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Reference na obrázek na Commons"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"কমন্স ছবি রেফারেন্স"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"Commons obrázek"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A reference to a Wikimedia Commons image, using the file's Commons page ID (M-ID)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Un riferimento ad una immagine Wikimedia Commons, usando l'ID della pagina Commons (M-ID)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "উইকিমিডিয়া কমন্স হতে কোনো ছবির কমন্স পেইজ আইডি ব্যবহার করে সেই ছবিটির উল্লেখ। "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Referenz auf ein Bild von Wikimedia Commons unter Verwendung der Seiten-ID (MID) der Datei auf Commons"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Reference na soubor s obrázkem uložený na Wikimedia Commons prostřednictvím M-ID stránky na Commons"
}
]
}
}
jvw0fi5x36t3k2lqm4yttgosc6bqxvg
285904
285903
2026-06-23T10:56:43Z
Mormegil
150
+cs
285904
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z310"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z310",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": "Z6",
"Z3K2": "Z310K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Commons media id"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "id media Commons"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "কমন্স মিডিয়া আইডি"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Commons-Medien-ID"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "ID stránky na Commons"
}
]
}
}
],
"Z4K3": "Z101"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Commons image reference"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Riferimento a immagine Commons"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "কমন্স ছবি উল্লেখ"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Commons-Bildreferenz"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Reference na obrázek na Commons"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1011",
"Z31K2": [
"Z6",
"কমন্স ছবি রেফারেন্স"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"Commons obrázek"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "A reference to a Wikimedia Commons image, using the file's Commons page ID (M-ID)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Un riferimento ad una immagine Wikimedia Commons, usando l'ID della pagina Commons (M-ID)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1011",
"Z11K2": "উইকিমিডিয়া কমন্স হতে কোনো ছবির কমন্স পেইজ আইডি ব্যবহার করে সেই ছবিটির উল্লেখ। "
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Referenz auf ein Bild von Wikimedia Commons unter Verwendung der Seiten-ID (MID) der Datei auf Commons"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Reference na soubor s obrázkem uložený na Wikimedia Commons prostřednictvím M-ID stránky na Commons"
}
]
}
}
fgeqclntvakmbl5jvz0h2ftobbvb87m
Z36038
0
84951
285902
282050
2026-06-23T10:55:25Z
Mormegil
150
+cs
285902
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36038"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z310",
"Z17K2": "Z36038K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "image"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "immagine"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "obrázek"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36038K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "alternative text"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "testo alternativo"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "alternativní text"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36042"
],
"Z8K4": [
"Z14",
"Z36039",
"Z36040",
"Z36248"
],
"Z8K5": "Z36038"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "image thumbnail with alt text"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "crea miniatura di immagine Commons"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "náhled obrázku s alternativním textem"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"insert image",
"image HTML",
"thumbnail with alt text",
"create Commons thumbnail image"
]
},
{
"Z1K1": "Z31",
"Z31K1": "Z1062",
"Z31K2": [
"Z6",
"obrázek",
"vložit obrázek",
"Commons obrázek"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Given a Commons image file reference (Z310), returns an \u003Cext-wikilambda-image\u003E element string"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1787",
"Z11K2": "Dato un riferimento a immagine Commons, restituisce un frammento HTML con \u003Cext-wikilambda-image\u003E"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1062",
"Z11K2": "Vytvoří řetězec elementu \u003Cext-wikilambda-image\u003E pro zadanou Referenci na obrázkový soubor na Commons (Z310)"
}
]
}
}
624sshhvez4ac9deytumtbr8orurms8
Z36153
0
85234
285832
281161
2026-06-23T03:50:46Z
Jsamwrites
938
285832
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36153"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36152",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z861",
"Z861K1": {
"Z1K1": "Z7",
"Z7K1": "Z22511",
"Z22511K1": {
"Z1K1": "Z7",
"Z7K1": "Z12899",
"Z12899K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z23468",
"Z23468K1": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36152K1"
}
},
"Z23468K2": "Z1002"
},
"was ",
{
"Z1K1": "Z7",
"Z7K1": "Z36144",
"Z36144K1": {
"Z1K1": "Z18",
"Z18K1": "Z36152K2"
},
"Z36144K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q1392475"
}
],
"Z36144K3": "Z1002"
},
"between",
{
"Z1K1": "Z7",
"Z7K1": "Z23468",
"Z23468K1": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36152K3"
}
},
"Z23468K2": "Z1002"
},
"and",
{
"Z1K1": "Z7",
"Z7K1": "Z23468",
"Z23468K1": {
"Z1K1": "Z7",
"Z7K1": "Z6821",
"Z6821K1": {
"Z1K1": "Z18",
"Z18K1": "Z36152K4"
}
},
"Z23468K2": "Z1002"
}
],
"Z12899K2": " "
}
},
"Z861K2": "Z1002"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Creative work - entity, action, period, en, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
r2z3soa00xfp560hzvur2xst43neb7n
Z36154
0
85235
285833
281158
2026-06-23T03:56:49Z
Jsamwrites
938
285833
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36154"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36152",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z14396",
"Z14396K1": {
"Z1K1": "Z7",
"Z7K1": "Z36152",
"Z36152K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q243"
},
"Z36152K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q25555886"
},
"Z36152K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q7826"
},
"Z36152K4": {
"Z1K1": "Z6091",
"Z6091K1": "Q7831"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "Eiffel Tower was built between 1887 and 1889."
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Eiffel Tower, 1887-1889"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
0855g05qi9dcpd484fjxtp28zs526ug
Wikifunctions talk:Type proposals/Semantic unit
5
85515
285773
283777
2026-06-22T21:12:30Z
Mahir256
38
Undid revision [[Special:Diff/283776|283776]] by [[Special:Contributions/Dv103|Dv103]] ([[User talk:Dv103|talk]]) lists are ordered, sets are not
285773
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] = {}
** ...
== Missing Wikifunctions features for this type ==
@[[User:Mahir256|Mahir256]] What are the currently missing features of Wikifunctions that are necessary to actually implement this type? Which of these are fundamental, and which are just useful to port the code directly from Ninai? It could be useful to have them all listed in one place. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 17:36, 16 June 2026 (UTC)
g57ge381obnmavx0h5uf6cxw609wsyf
285793
285773
2026-06-22T21:45:02Z
Mahir256
38
start describing things that need to happen
285793
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/constructor.py: class Constructor(NamedTuple):
** The "semantic unit" type is intended to be equivalent to this class.
* ninai/base/constructorzipper.py: class ConstructorZipper(NamedTuple):
* ninai/base/constructorzipper.py: class ArgumentLevel(NamedTuple):
** [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/constructorzipper.py#L26 "Due to the Wikifunctions requirement that all functions be pure functions, [these constructs have] been introduced in order to assist the manipulation of [semantic units]."] As a result, it should be possible
** ❌ to either return modified inputs cheaply, or [[:w:en:Zipper (data structure)|to create modified versions of persistent data structures cheaply]] and return those.
* ninai/base/argumentfilters.py: class ArgumentFilterOptions(NamedTuple):
** ...
* ninai/base/constructormainrenderer.py: class ConstructorMainRenderer(NamedTuple):
* ninai/base/constructorrenderer.py: class ConstructorRenderer(NamedTuple):
* ninai/base/coreargumentprocessor.py: class CoreArgumentProcessor(NamedTuple):
* ninai/base/coreargumentsrenderer.py: class CoreArgumentsRenderer(NamedTuple):
* ninai/base/scopeargumentsrenderer.py: class ScopeArgumentsRenderer(NamedTuple):
** These classes encapsulate each of the steps that are actually run by the base Ninai system during semantic unit rendering, as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ❌
* ninai/base/context.py: class ContextEntry(NamedTuple):
* ninai/base/context.py: class Context(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 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):
** Functions satisfying these protocols perform each of the steps of the semantic unit rendering process (as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ❌ to verify that a function in a particular (language, semantic unit)-to-function mapping has the appropriate function signature.
* ninai/base/interfaces.py: class SyntacticRoleFunction(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):
** The notes in the previous sub-bullet point apply here too; functions matching these protocols perform steps of the process of rendering arbitrary predicates.
* 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 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/rendererarguments.py: class RendererArguments(NamedTuple):
** ...
* ninai/constructors/contexts/refcontext.py: class RefContextRenderer(NamedTuple):
** ...
* ninai/graph/__init__.py: class FallbackRunner:
** ...
* ninai/graph/client.py: class CandidateProcessor:
** ...
* ninai/graph/server.py: class GraphServer:
* ninai/graph/server.py: class ServerThread(threading.Thread):
* ninai/graph/server.py: class GraphServerRepl(cmd.Cmd):
** These classes serve as scaffolding for threads that handle remote procedure calls for graph traversals from a starting item/lexeme/sense and return the results of those traversals (https://elemwala-backend.toolforge.org merely runs such threads). While the specific Python implementation need not exist in the same fashion as written, it should still be possible
** ❌ to traverse the full graph of connections between Wikidata entities having certain property links (for instance, to go from one sense to another three "synonym" statements away, or to go from one lexeme to another three "etymology" statements away); the current functions which simply run "haswbstatement:P5137" full-text searches are not sufficient.
* ninai/base/pausedrenderersupply.py: class PausedRendererSupply(NamedTuple):
** This class was added to assist in something Maria Keet had asked for once: if a particular grammatical feature is not known at a point in the rendering process, and there isn't a clear way to proceed without knowing it, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing information to the ''renderer'' and resume that process. As a result, it should be possible
** ❌ to return some state representation, in the event of an error within rendering, that can be resumed with appropriate information provided.
* ninai/base/interfaces.py: class CatenaYieldingIterator(Protocol):
** Iterator classes matching this protocol, which otherwise could be reduced to individual functions, exist for a couple of reasons:
**# Because Wikifunctions is based on principles exemplified by Haskell (which is not an implementation language, which has proper tail call optimization, but which does not have 'for' loops), and because Ninai/Udiron is written in Python (which is an implementation language, which does not optimize tail calls<ref>https://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html</ref>, but which has 'for' loops), such iterators return, in addition to the object they generate, a new iterator starting from the point at which that object was generated.
**# Generators (and thus iterators) are not automatically serializable (indeed, even more comprehensive Python libraries than pickle cannot do so<ref>https://pypi.org/project/dill/</ref>), so these objects manually implement Python's iterator protocol.
** As a result, it should be possible
** ❌ to serialize and deserialize the current state of a given sense finding process.
* ninai/graph/client.py: class SenseFindingIterator:
** This represents the main starting point of the sense finding process, and is serializable for the reasons above.
* ninai/base/interfaces.py: class SenseFindingFallback(CatenaYieldingIterator, Protocol):
* ninai/graph/calque.py: class CalqueIterator: # finding equivalents for parts of a complex lexeme in a source language, and reassembling the equivalents in a target language
* ninai/graph/calque.py: class VerboNominalSyntagmaCalque: # in the situation where a verb consists of e.g. (a noun) + "to do"
* ninai/graph/calque.py: class EndocentricCompoundCalque: # in the situation where a noun consists of two other nouns, or an adjective attached to a noun
* ninai/graph/calque.py: class DerivationCalque: # in the situation where a lexeme consists of another lexeme with a derivational affix
* ninai/graph/fallbacks.py: class CatenaZipperListIterator: # returning choices from only a specific list of lexemes
* ninai/graph/cognate.py: class CognateIterator: # returning lexemes in a target language that, via "derived from lexeme" statements, are etymologically related to a lexeme in a source language
* ninai/graph/transcribe.py: class TranscribeIterator: # returning pseudo-lexemes that consist of another lexeme in a source language with its (phonetic/orthographic) representation converted to a target language
* ninai/graph/__init__.py: class CatenaFromItemIdIterator: #
** In addition to the notes about "CatenaYieldingIterator" above, these iterators perform fallback steps
* ninai/renderers/mul.py: class FinalPunctuationFunction(Protocol):
** This
=== 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] = {}
** ...
== Missing Wikifunctions features for this type ==
@[[User:Mahir256|Mahir256]] What are the currently missing features of Wikifunctions that are necessary to actually implement this type? Which of these are fundamental, and which are just useful to port the code directly from Ninai? It could be useful to have them all listed in one place. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 17:36, 16 June 2026 (UTC)
ir2hec9fw77nazsd9l6bt2dcfu3rlns
285794
285793
2026-06-22T22:58:54Z
Mahir256
38
285794
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/constructor.py: class Constructor(NamedTuple):
** The "semantic unit" type is intended to be equivalent to this class.
* ninai/base/constructorzipper.py: class ArgumentLevel(NamedTuple):
* ninai/base/constructorzipper.py: class ConstructorZipper(NamedTuple):
** [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/constructorzipper.py#L26 "Due to the Wikifunctions requirement that all functions be pure functions, (the ConstructorZipper) has been introduced in order to assist the manipulation of (semantic units)."] A similar class was introduced in Udiron for the manipulation of syntactic units. As a result, it should be possible
** ❌ to either return modified inputs cheaply, or [[:w:en:Zipper (data structure)|to create modified versions of persistent data structures cheaply]] and return those.
* ninai/base/interfaces.py: class ArgumentFilter(Protocol):
** Functions satisfying this protocol should produce semantic units (representing different kinds of meaning) as output.
* ninai/base/argumentfilters.py: class ArgumentFilterOptions(NamedTuple):
** Since performance considerations <small>e.g. "any argument after the fourth is kept on the stack instead of moved into a register"</small> and various coding style guides discourage having large numbers of arguments when defining a function, this class exists to hold those when defining a new semantic unit. [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L138 The members of that class are mostly assigned to other objects]. (See also the Wikifunctions requirement that all functions be pure functions.) As a result, it should be possible
** ❌ to cheaply handle large numbers of arguments provided to a function.
* ninai/base/rendererarguments.py: class RendererArguments(NamedTuple):
** The desideratum in the previous sub-bullet point also applies here, although this object is passed around and manipulated versions returned across ''lots'' of different rendering steps (both in the base system and in user-defined functions), so it's worth repeating that it should be possible
** ❌ to '''''cheaply''''' handle large numbers of arguments provided to a function.
* ninai/base/interfaces.py: class ArgumentFilterBasis(Protocol):
** This represents one of the arguments of an ArgumentFilterOptions: the function that produces a given type of semantic unit may be wholly tailored to that unit or simply be some other base function (like the [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L23 "default"] and [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L153 "passthrough"] functions). It is actually a partial function application that is stored and called when a semantic unit is provided arguments. As a result, it should be possible
** ❌ to store partial function calls in a semantic unit type-function mapping and use those.
* ninai/base/constructormainrenderer.py: class ConstructorMainRenderer(NamedTuple):
* ninai/base/constructorrenderer.py: class ConstructorRenderer(NamedTuple):
* ninai/base/coreargumentprocessor.py: class CoreArgumentProcessor(NamedTuple):
* ninai/base/coreargumentsrenderer.py: class CoreArgumentsRenderer(NamedTuple):
* ninai/base/scopeargumentsrenderer.py: class ScopeArgumentsRenderer(NamedTuple):
** These classes encapsulate each of the steps that are actually run by the base Ninai system during semantic unit rendering, as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ❌ to run the functions defined by the base system for the rendering process without (in the case where all functions involved are written in Python) having to deal with overhead of serializing/deserializing objects at function call boundaries.
* ninai/base/context.py: class ContextEntry(NamedTuple):
* ninai/base/context.py: class Context(NamedTuple):
** [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §4.1.2.: “Contexts” are lists representing where and how deep into a tree of Constructors a particular rendering step is occurring (effectively functioning like a stack trace).] As a result, it should be possible
** ❌ to expand and contract lists of tuples cheaply.
* ninai/base/framing.py: class MethodKey(NamedTuple):
* ninai/base/framing.py: class FramingKey(NamedTuple):
** These are used for indexing into Framings (see below), with the idea that the value returned from such an indexing is either a function or another Framing object entirely.
* ninai/base/framing.py: class FramingDict(NamedTuple):
* ninai/base/framing.py: class Framing(NamedTuple):
** [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §4.1.2.: “Framings” hold information provided at the start of the Constructor rendering process to control the behavior of named individual Constructor types, named individual Constructors, individual languages, or some combination of all three.]
** The current implementation is largely inspired by the idea of [https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors CSS selectors]; the same sorts of symbols that denote certain features to select for (e.g. ".", "#", ":") may be used in a Framing selector as well.
** To satisfy Python type checkers, and to mitigate the inability to distinguish between e.g. "dict[str]" and "dict[int]" using a Python isinstance() check, keys into Framings (such as MethodKey and FramingKey listed above, along with EntityKey and StrKey from Udiron) distinguish between the possible types of the objects returned. Indexing into a Framing with an EntityKey will yield one of [https://gitlab.com/mahir256/udiron/-/blob/main/udiron/base/functionconfig.py#L158 several possible types] that ''can'' be distinguished by an isinstance() check; likewise with a StrKey yielding a string. As a result, it should be possible
** ❌ to check the types of values returned from arbitrary mappings cheaply.
* ninai/base/interfaces.py: class PreHook(Protocol):
* ninai/base/interfaces.py: class Renderer(Protocol):
* ninai/base/interfaces.py: class PostHook(Protocol):
* ninai/base/interfaces.py: class ArgPreHook(Protocol):
* ninai/base/interfaces.py: class ArgPostHook(Protocol):
** Functions satisfying these protocols perform each of the steps of the semantic unit rendering process (as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ❌ to verify that a function in a particular (language, semantic unit type)-to-function mapping has the appropriate function signature.
* ninai/base/interfaces.py: class SyntacticRoleFunction(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):
** The notes in the previous sub-bullet point apply here too; functions matching these protocols perform steps of the process of rendering arbitrary predicates.
* ninai/constructors/contexts/refcontext.py: class RefContextRenderer(NamedTuple):
** The notes in the sub-bullet point two before this one apply here as well. Given that this is created by a specific semantic unit's main renderer, rather than it being part of the base system (it does not live in the 'ninai/base' directory, after all), it should be possible
** ❌ to allow renderers to instantiate encapsulations of the state needed for their execution.
* ninai/base/interfaces.py: class NinaiError(Exception):
** While this is not currently used much yet, it is intended to be saveable/serializable in the event the rendering process needs to be suspended (see "PausedRendererSupply" below), so that the specific source and cause of an error may be introspected. As a result, it should be possible
** ❌ to define arbitrary types of errors/exceptions to be thrown by code implementations.
* ninai/base/interfaces.py: class RenderingPhase(IntEnum):
* ninai/base/interfaces.py: class CoreArgumentProcessingPhase(IntEnum):
** These enumerations were created to keep track of the current state of a type of process (and to indicate from where a suspended version of that process should resume from; see "PausedRendererSupply" below). As a result, it should be possible
** ❌ to keep track of the particular level of a rendering process being executed and to save that tracking information.
* ninai/graph/__init__.py: class FallbackRunner:
** This is instantiated whenever a direct sense link cannot be found and starts the process of running fallback steps specified per language (see "SenseFindingFallback" ff. below).
* ninai/graph/server.py: class GraphServer:
* ninai/graph/server.py: class ServerThread(threading.Thread):
* ninai/graph/server.py: class GraphServerRepl(cmd.Cmd):
** These classes serve as scaffolding for threads that handle remote procedure calls for (NetworkX, but also graph-tool in the past) graph traversals from a starting item/lexeme/sense and return the results of those traversals (https://elemwala-backend.toolforge.org merely runs such threads). While the specific Python implementation need not exist in the same fashion as written, it should still be possible
** ❌ to traverse the full graph of connections between Wikidata entities having certain property links (for instance, to go from one sense to another three "synonym" statements away, or to go from one lexeme to another three "etymology" statements away); the current functions which simply run "haswbstatement:P5137" full-text searches are not sufficient.
* ninai/base/interfaces.py: class CandidatePathNode(TypedDict): # due to XMLRPC serialization, must remain a TypedDict
** This holds two things: (1) a particular entity ID (item/lexeme/sense), and (2) a list of two-item tuples representing the links between the source entity of a traversal and that particular entity ID. If L789-S1 was three "translation" links away from L123-S1, and a traversal is run with L123-S1 as the starting point, then the CandidatePathNode for L789-S1 would have as its second element a list of three two-item tuples (for each of the three links). As a result, it should be possible
** ❌ to return not only entities linked to a given entity, but the (shortest) path between a source entity and that given entity, as part of a traversal.
* ninai/base/interfaces.py: class SenseRefinement(Protocol):
** Functions satisfying this Protocol filter a list of
* ninai/graph/client.py: class CandidateProcessor:
** Functions satisfying this Protocol filter a list of
* ninai/base/pausedrenderersupply.py: class PausedRendererSupply(NamedTuple):
** This class was added to assist in something Maria Keet had asked for once: if a particular grammatical feature is not known at a point in the rendering process, and there isn't a clear way to proceed without knowing it, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing information to the ''renderer'' and resume that process. As a result, it should be possible
** ❌ to return some state representation, in the event of an error within rendering, that can be resumed with appropriate information provided.
* ninai/base/interfaces.py: class PreHookOperator(NamedTuple):
* ninai/base/interfaces.py: class MainRendererOperator(NamedTuple):
* ninai/base/interfaces.py: class PostHookOperator(NamedTuple):
** These exist merely to define a [[:w:en:Tagged union]] of possible types of functions usable by Ninai during certain rendering steps (see the note for PreHook, Renderer, PostHook above). Following from the previous bullet point, if a particular step is not defined for a language-semantic unit type combination, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing function to the ''renderer'' and resume that process.
* ninai/base/interfaces.py: class CatenaYieldingIterator(Protocol):
** Iterator classes matching this protocol, which otherwise could be reduced to individual functions, exist for a couple of reasons:
**# Because Wikifunctions is based on principles exemplified by Haskell (which is not an implementation language, which has proper tail call optimization, but which does not have 'for' loops), and because Ninai/Udiron is written in Python (which is an implementation language, which does not optimize tail calls<ref>https://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html</ref>, but which has 'for' loops), such iterators return, in addition to the object they generate, a new iterator starting from the point at which that object was generated.
**# Generators (and thus iterators) are not automatically serializable (indeed, even more comprehensive Python libraries than pickle cannot do so<ref>https://pypi.org/project/dill/</ref>), so these objects manually implement Python's iterator protocol.
** As a result of both of these things, it should be possible
** ❌ to serialize and deserialize the current state of a given sense finding process.
* ninai/graph/client.py: class SenseFindingIterator:
** This represents the main starting point of the sense finding process, and is serializable for the reasons above.
* ninai/base/interfaces.py: class SenseFindingFallback(CatenaYieldingIterator, Protocol):
* ninai/graph/calque.py: class CalqueIterator: # finding equivalents for parts of a complex lexeme in a source language, and reassembling the equivalents in a target language
* ninai/graph/calque.py: class VerboNominalSyntagmaCalque: # in the situation where a verb consists of e.g. (a noun) + "to do"
* ninai/graph/calque.py: class EndocentricCompoundCalque: # in the situation where a noun consists of two other nouns, or an adjective attached to a noun
* ninai/graph/calque.py: class DerivationCalque: # in the situation where a lexeme consists of another lexeme with a derivational affix
* ninai/graph/fallbacks.py: class CatenaZipperListIterator: # returning choices from only a specific list of lexemes
* ninai/graph/cognate.py: class CognateIterator: # returning lexemes in a target language that, via "derived from lexeme" statements, are etymologically related to a lexeme in a source language
* ninai/graph/transcribe.py: class TranscribeIterator: # returning pseudo-lexemes that consist of another lexeme in a source language with its (phonetic/orthographic) representation converted to a target language
* ninai/graph/__init__.py: class CatenaFromItemIdIterator: # simply produces a pseudo-lexeme whose lemma is the item label
** In addition to the notes about "CatenaYieldingIterator" above, these iterators perform fallback steps of different kinds, mainly involving finding parts/equivalents of other lexemes outside the target language.
* ninai/base/interfaces.py: class Constructorify(Protocol): # not used yet, but will be reintroduced soon
* ninai/base/interfaces.py: class Transcribe(Protocol): # actually performs the conversion of a (phonetic/orthographic) representation into a target language
* ninai/base/interfaces.py: class BinominalCompoundCalque(Protocol): # actually reassembles the equivalents of two nouns (or an adjective and a noun)
* ninai/base/interfaces.py: class DerivationalCalqueFunction(Protocol): # actually reassembles the equivalents of a lexeme and an attached affix
** Functions satisfying these protocols perform the steps in the target language of assembling a candidate word or phrase from any found equivalents.
* ninai/renderers/mul.py: class FinalPunctuationFunction(Protocol):
** This simply represents a function that adds some punctuation to a phrase/clause.
=== 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] = {}
** ...
== Missing Wikifunctions features for this type ==
@[[User:Mahir256|Mahir256]] What are the currently missing features of Wikifunctions that are necessary to actually implement this type? Which of these are fundamental, and which are just useful to port the code directly from Ninai? It could be useful to have them all listed in one place. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 17:36, 16 June 2026 (UTC)
*{{re|Dv103|Denny|DVrandecic (WMF)}} I have started assembling those above, where explanations are given for different classes' existence, and particular desiderata for implementation are given with a ❌ (any of which you're welcome to change to a ✅ if there is evidence that the thing described is possible). I leave it to you to decide which are 'fundamental' versus 'just useful'. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 22:58, 22 June 2026 (UTC)
3x97nogs3ftnumfhv213z6v9mxetws3
285888
285794
2026-06-23T07:49:36Z
Dv103
11127
Inserted features that, as a first read, I am sure already exist on Wikifunctions
285888
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/constructor.py: class Constructor(NamedTuple):
** The "semantic unit" type is intended to be equivalent to this class.
* ninai/base/constructorzipper.py: class ArgumentLevel(NamedTuple):
* ninai/base/constructorzipper.py: class ConstructorZipper(NamedTuple):
** [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/constructorzipper.py#L26 "Due to the Wikifunctions requirement that all functions be pure functions, (the ConstructorZipper) has been introduced in order to assist the manipulation of (semantic units)."] A similar class was introduced in Udiron for the manipulation of syntactic units. As a result, it should be possible
** ✅ to either return modified inputs cheaply, or [[:w:en:Zipper (data structure)|to create modified versions of persistent data structures cheaply]] and return those. <ref>Returning modified input is as cheap as every function call in Wikifunctions. If the modification is done through composition, using only builtin functions, it can become very cheap (in the order of some milliseconds).</ref>
* ninai/base/interfaces.py: class ArgumentFilter(Protocol):
** Functions satisfying this protocol should produce semantic units (representing different kinds of meaning) as output.
* ninai/base/argumentfilters.py: class ArgumentFilterOptions(NamedTuple):
** Since performance considerations <small>e.g. "any argument after the fourth is kept on the stack instead of moved into a register"</small> and various coding style guides discourage having large numbers of arguments when defining a function, this class exists to hold those when defining a new semantic unit. [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L138 The members of that class are mostly assigned to other objects]. (See also the Wikifunctions requirement that all functions be pure functions.) As a result, it should be possible
** ❌ to cheaply handle large numbers of arguments provided to a function.
* ninai/base/rendererarguments.py: class RendererArguments(NamedTuple):
** The desideratum in the previous sub-bullet point also applies here, although this object is passed around and manipulated versions returned across ''lots'' of different rendering steps (both in the base system and in user-defined functions), so it's worth repeating that it should be possible
** ❌ to '''''cheaply''''' handle large numbers of arguments provided to a function.
* ninai/base/interfaces.py: class ArgumentFilterBasis(Protocol):
** This represents one of the arguments of an ArgumentFilterOptions: the function that produces a given type of semantic unit may be wholly tailored to that unit or simply be some other base function (like the [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L23 "default"] and [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L153 "passthrough"] functions). It is actually a partial function application that is stored and called when a semantic unit is provided arguments. As a result, it should be possible
** ❌ to store partial function calls in a semantic unit type-function mapping and use those.
* ninai/base/constructormainrenderer.py: class ConstructorMainRenderer(NamedTuple):
* ninai/base/constructorrenderer.py: class ConstructorRenderer(NamedTuple):
* ninai/base/coreargumentprocessor.py: class CoreArgumentProcessor(NamedTuple):
* ninai/base/coreargumentsrenderer.py: class CoreArgumentsRenderer(NamedTuple):
* ninai/base/scopeargumentsrenderer.py: class ScopeArgumentsRenderer(NamedTuple):
** These classes encapsulate each of the steps that are actually run by the base Ninai system during semantic unit rendering, as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ❌ to run the functions defined by the base system for the rendering process without (in the case where all functions involved are written in Python) having to deal with overhead of serializing/deserializing objects at function call boundaries.
* ninai/base/context.py: class ContextEntry(NamedTuple):
* ninai/base/context.py: class Context(NamedTuple):
** [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §4.1.2.: “Contexts” are lists representing where and how deep into a tree of Constructors a particular rendering step is occurring (effectively functioning like a stack trace).] As a result, it should be possible
** ❌ to expand and contract lists of tuples cheaply.
* ninai/base/framing.py: class MethodKey(NamedTuple):
* ninai/base/framing.py: class FramingKey(NamedTuple):
** These are used for indexing into Framings (see below), with the idea that the value returned from such an indexing is either a function or another Framing object entirely.
* ninai/base/framing.py: class FramingDict(NamedTuple):
* ninai/base/framing.py: class Framing(NamedTuple):
** [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §4.1.2.: “Framings” hold information provided at the start of the Constructor rendering process to control the behavior of named individual Constructor types, named individual Constructors, individual languages, or some combination of all three.]
** The current implementation is largely inspired by the idea of [https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors CSS selectors]; the same sorts of symbols that denote certain features to select for (e.g. ".", "#", ":") may be used in a Framing selector as well.
** To satisfy Python type checkers, and to mitigate the inability to distinguish between e.g. "dict[str]" and "dict[int]" using a Python isinstance() check, keys into Framings (such as MethodKey and FramingKey listed above, along with EntityKey and StrKey from Udiron) distinguish between the possible types of the objects returned. Indexing into a Framing with an EntityKey will yield one of [https://gitlab.com/mahir256/udiron/-/blob/main/udiron/base/functionconfig.py#L158 several possible types] that ''can'' be distinguished by an isinstance() check; likewise with a StrKey yielding a string. As a result, it should be possible
** ❌ to check the types of values returned from arbitrary mappings cheaply.
* ninai/base/interfaces.py: class PreHook(Protocol):
* ninai/base/interfaces.py: class Renderer(Protocol):
* ninai/base/interfaces.py: class PostHook(Protocol):
* ninai/base/interfaces.py: class ArgPreHook(Protocol):
* ninai/base/interfaces.py: class ArgPostHook(Protocol):
** Functions satisfying these protocols perform each of the steps of the semantic unit rendering process (as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ✅ to verify that a function in a particular (language, semantic unit type)-to-function mapping has the appropriate function signature.<ref>It is possible to [[Z21177|retrieve the signature of a function]].</ref>
* ninai/base/interfaces.py: class SyntacticRoleFunction(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):
** The notes in the previous sub-bullet point apply here too; functions matching these protocols perform steps of the process of rendering arbitrary predicates.
* ninai/constructors/contexts/refcontext.py: class RefContextRenderer(NamedTuple):
** The notes in the sub-bullet point two before this one apply here as well. Given that this is created by a specific semantic unit's main renderer, rather than it being part of the base system (it does not live in the 'ninai/base' directory, after all), it should be possible
** ❌ to allow renderers to instantiate encapsulations of the state needed for their execution.
* ninai/base/interfaces.py: class NinaiError(Exception):
** While this is not currently used much yet, it is intended to be saveable/serializable in the event the rendering process needs to be suspended (see "PausedRendererSupply" below), so that the specific source and cause of an error may be introspected. As a result, it should be possible
** ✅ to define arbitrary types of errors/exceptions to be thrown by code implementations.<ref>[[Wikifunctions:How_to_create_implementations#Wikifunctions_error_handling|User-defined errors]] exist on Wikifunctions, and function calls can throw them.</ref>
* ninai/base/interfaces.py: class RenderingPhase(IntEnum):
* ninai/base/interfaces.py: class CoreArgumentProcessingPhase(IntEnum):
** These enumerations were created to keep track of the current state of a type of process (and to indicate from where a suspended version of that process should resume from; see "PausedRendererSupply" below). As a result, it should be possible
** ❌ to keep track of the particular level of a rendering process being executed and to save that tracking information.
* ninai/graph/__init__.py: class FallbackRunner:
** This is instantiated whenever a direct sense link cannot be found and starts the process of running fallback steps specified per language (see "SenseFindingFallback" ff. below).
* ninai/graph/server.py: class GraphServer:
* ninai/graph/server.py: class ServerThread(threading.Thread):
* ninai/graph/server.py: class GraphServerRepl(cmd.Cmd):
** These classes serve as scaffolding for threads that handle remote procedure calls for (NetworkX, but also graph-tool in the past) graph traversals from a starting item/lexeme/sense and return the results of those traversals (https://elemwala-backend.toolforge.org merely runs such threads). While the specific Python implementation need not exist in the same fashion as written, it should still be possible
** ❌ to traverse the full graph of connections between Wikidata entities having certain property links (for instance, to go from one sense to another three "synonym" statements away, or to go from one lexeme to another three "etymology" statements away); the current functions which simply run "haswbstatement:P5137" full-text searches are not sufficient.
* ninai/base/interfaces.py: class CandidatePathNode(TypedDict): # due to XMLRPC serialization, must remain a TypedDict
** This holds two things: (1) a particular entity ID (item/lexeme/sense), and (2) a list of two-item tuples representing the links between the source entity of a traversal and that particular entity ID. If L789-S1 was three "translation" links away from L123-S1, and a traversal is run with L123-S1 as the starting point, then the CandidatePathNode for L789-S1 would have as its second element a list of three two-item tuples (for each of the three links). As a result, it should be possible
** ❌ to return not only entities linked to a given entity, but the (shortest) path between a source entity and that given entity, as part of a traversal.
* ninai/base/interfaces.py: class SenseRefinement(Protocol):
** Functions satisfying this Protocol filter a list of
* ninai/graph/client.py: class CandidateProcessor:
** Functions satisfying this Protocol filter a list of
* ninai/base/pausedrenderersupply.py: class PausedRendererSupply(NamedTuple):
** This class was added to assist in something Maria Keet had asked for once: if a particular grammatical feature is not known at a point in the rendering process, and there isn't a clear way to proceed without knowing it, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing information to the ''renderer'' and resume that process. As a result, it should be possible
** ❌ to return some state representation, in the event of an error within rendering, that can be resumed with appropriate information provided.
* ninai/base/interfaces.py: class PreHookOperator(NamedTuple):
* ninai/base/interfaces.py: class MainRendererOperator(NamedTuple):
* ninai/base/interfaces.py: class PostHookOperator(NamedTuple):
** These exist merely to define a [[:w:en:Tagged union]] of possible types of functions usable by Ninai during certain rendering steps (see the note for PreHook, Renderer, PostHook above). Following from the previous bullet point, if a particular step is not defined for a language-semantic unit type combination, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing function to the ''renderer'' and resume that process.
* ninai/base/interfaces.py: class CatenaYieldingIterator(Protocol):
** Iterator classes matching this protocol, which otherwise could be reduced to individual functions, exist for a couple of reasons:
**# Because Wikifunctions is based on principles exemplified by Haskell (which is not an implementation language, which has proper tail call optimization, but which does not have 'for' loops), and because Ninai/Udiron is written in Python (which is an implementation language, which does not optimize tail calls<ref>https://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html</ref>, but which has 'for' loops), such iterators return, in addition to the object they generate, a new iterator starting from the point at which that object was generated.
**# Generators (and thus iterators) are not automatically serializable (indeed, even more comprehensive Python libraries than pickle cannot do so<ref>https://pypi.org/project/dill/</ref>), so these objects manually implement Python's iterator protocol.
** As a result of both of these things, it should be possible
** ❌ to serialize and deserialize the current state of a given sense finding process.
* ninai/graph/client.py: class SenseFindingIterator:
** This represents the main starting point of the sense finding process, and is serializable for the reasons above.
* ninai/base/interfaces.py: class SenseFindingFallback(CatenaYieldingIterator, Protocol):
* ninai/graph/calque.py: class CalqueIterator: # finding equivalents for parts of a complex lexeme in a source language, and reassembling the equivalents in a target language
* ninai/graph/calque.py: class VerboNominalSyntagmaCalque: # in the situation where a verb consists of e.g. (a noun) + "to do"
* ninai/graph/calque.py: class EndocentricCompoundCalque: # in the situation where a noun consists of two other nouns, or an adjective attached to a noun
* ninai/graph/calque.py: class DerivationCalque: # in the situation where a lexeme consists of another lexeme with a derivational affix
* ninai/graph/fallbacks.py: class CatenaZipperListIterator: # returning choices from only a specific list of lexemes
* ninai/graph/cognate.py: class CognateIterator: # returning lexemes in a target language that, via "derived from lexeme" statements, are etymologically related to a lexeme in a source language
* ninai/graph/transcribe.py: class TranscribeIterator: # returning pseudo-lexemes that consist of another lexeme in a source language with its (phonetic/orthographic) representation converted to a target language
* ninai/graph/__init__.py: class CatenaFromItemIdIterator: # simply produces a pseudo-lexeme whose lemma is the item label
** In addition to the notes about "CatenaYieldingIterator" above, these iterators perform fallback steps of different kinds, mainly involving finding parts/equivalents of other lexemes outside the target language.
* ninai/base/interfaces.py: class Constructorify(Protocol): # not used yet, but will be reintroduced soon
* ninai/base/interfaces.py: class Transcribe(Protocol): # actually performs the conversion of a (phonetic/orthographic) representation into a target language
* ninai/base/interfaces.py: class BinominalCompoundCalque(Protocol): # actually reassembles the equivalents of two nouns (or an adjective and a noun)
* ninai/base/interfaces.py: class DerivationalCalqueFunction(Protocol): # actually reassembles the equivalents of a lexeme and an attached affix
** Functions satisfying these protocols perform the steps in the target language of assembling a candidate word or phrase from any found equivalents.
* ninai/renderers/mul.py: class FinalPunctuationFunction(Protocol):
** This simply represents a function that adds some punctuation to a phrase/clause.
=== 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] = {}
** ...
<references/>
== Missing Wikifunctions features for this type ==
@[[User:Mahir256|Mahir256]] What are the currently missing features of Wikifunctions that are necessary to actually implement this type? Which of these are fundamental, and which are just useful to port the code directly from Ninai? It could be useful to have them all listed in one place. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 17:36, 16 June 2026 (UTC)
*{{re|Dv103|Denny|DVrandecic (WMF)}} I have started assembling those above, where explanations are given for different classes' existence, and particular desiderata for implementation are given with a ❌ (any of which you're welcome to change to a ✅ if there is evidence that the thing described is possible). I leave it to you to decide which are 'fundamental' versus 'just useful'. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 22:58, 22 June 2026 (UTC)
pk3e036bj0hcedcf9fcv1cg0bc1nqdy
285889
285888
2026-06-23T07:54:25Z
Dv103
11127
/* Missing Wikifunctions features for this type */ Reply
285889
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/constructor.py: class Constructor(NamedTuple):
** The "semantic unit" type is intended to be equivalent to this class.
* ninai/base/constructorzipper.py: class ArgumentLevel(NamedTuple):
* ninai/base/constructorzipper.py: class ConstructorZipper(NamedTuple):
** [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/constructorzipper.py#L26 "Due to the Wikifunctions requirement that all functions be pure functions, (the ConstructorZipper) has been introduced in order to assist the manipulation of (semantic units)."] A similar class was introduced in Udiron for the manipulation of syntactic units. As a result, it should be possible
** ✅ to either return modified inputs cheaply, or [[:w:en:Zipper (data structure)|to create modified versions of persistent data structures cheaply]] and return those. <ref>Returning modified input is as cheap as every function call in Wikifunctions. If the modification is done through composition, using only builtin functions, it can become very cheap (in the order of some milliseconds).</ref>
* ninai/base/interfaces.py: class ArgumentFilter(Protocol):
** Functions satisfying this protocol should produce semantic units (representing different kinds of meaning) as output.
* ninai/base/argumentfilters.py: class ArgumentFilterOptions(NamedTuple):
** Since performance considerations <small>e.g. "any argument after the fourth is kept on the stack instead of moved into a register"</small> and various coding style guides discourage having large numbers of arguments when defining a function, this class exists to hold those when defining a new semantic unit. [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L138 The members of that class are mostly assigned to other objects]. (See also the Wikifunctions requirement that all functions be pure functions.) As a result, it should be possible
** ❌ to cheaply handle large numbers of arguments provided to a function.
* ninai/base/rendererarguments.py: class RendererArguments(NamedTuple):
** The desideratum in the previous sub-bullet point also applies here, although this object is passed around and manipulated versions returned across ''lots'' of different rendering steps (both in the base system and in user-defined functions), so it's worth repeating that it should be possible
** ❌ to '''''cheaply''''' handle large numbers of arguments provided to a function.
* ninai/base/interfaces.py: class ArgumentFilterBasis(Protocol):
** This represents one of the arguments of an ArgumentFilterOptions: the function that produces a given type of semantic unit may be wholly tailored to that unit or simply be some other base function (like the [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L23 "default"] and [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L153 "passthrough"] functions). It is actually a partial function application that is stored and called when a semantic unit is provided arguments. As a result, it should be possible
** ❌ to store partial function calls in a semantic unit type-function mapping and use those.
* ninai/base/constructormainrenderer.py: class ConstructorMainRenderer(NamedTuple):
* ninai/base/constructorrenderer.py: class ConstructorRenderer(NamedTuple):
* ninai/base/coreargumentprocessor.py: class CoreArgumentProcessor(NamedTuple):
* ninai/base/coreargumentsrenderer.py: class CoreArgumentsRenderer(NamedTuple):
* ninai/base/scopeargumentsrenderer.py: class ScopeArgumentsRenderer(NamedTuple):
** These classes encapsulate each of the steps that are actually run by the base Ninai system during semantic unit rendering, as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ❌ to run the functions defined by the base system for the rendering process without (in the case where all functions involved are written in Python) having to deal with overhead of serializing/deserializing objects at function call boundaries.
* ninai/base/context.py: class ContextEntry(NamedTuple):
* ninai/base/context.py: class Context(NamedTuple):
** [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §4.1.2.: “Contexts” are lists representing where and how deep into a tree of Constructors a particular rendering step is occurring (effectively functioning like a stack trace).] As a result, it should be possible
** ❌ to expand and contract lists of tuples cheaply.
* ninai/base/framing.py: class MethodKey(NamedTuple):
* ninai/base/framing.py: class FramingKey(NamedTuple):
** These are used for indexing into Framings (see below), with the idea that the value returned from such an indexing is either a function or another Framing object entirely.
* ninai/base/framing.py: class FramingDict(NamedTuple):
* ninai/base/framing.py: class Framing(NamedTuple):
** [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §4.1.2.: “Framings” hold information provided at the start of the Constructor rendering process to control the behavior of named individual Constructor types, named individual Constructors, individual languages, or some combination of all three.]
** The current implementation is largely inspired by the idea of [https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors CSS selectors]; the same sorts of symbols that denote certain features to select for (e.g. ".", "#", ":") may be used in a Framing selector as well.
** To satisfy Python type checkers, and to mitigate the inability to distinguish between e.g. "dict[str]" and "dict[int]" using a Python isinstance() check, keys into Framings (such as MethodKey and FramingKey listed above, along with EntityKey and StrKey from Udiron) distinguish between the possible types of the objects returned. Indexing into a Framing with an EntityKey will yield one of [https://gitlab.com/mahir256/udiron/-/blob/main/udiron/base/functionconfig.py#L158 several possible types] that ''can'' be distinguished by an isinstance() check; likewise with a StrKey yielding a string. As a result, it should be possible
** ❌ to check the types of values returned from arbitrary mappings cheaply.
* ninai/base/interfaces.py: class PreHook(Protocol):
* ninai/base/interfaces.py: class Renderer(Protocol):
* ninai/base/interfaces.py: class PostHook(Protocol):
* ninai/base/interfaces.py: class ArgPreHook(Protocol):
* ninai/base/interfaces.py: class ArgPostHook(Protocol):
** Functions satisfying these protocols perform each of the steps of the semantic unit rendering process (as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ✅ to verify that a function in a particular (language, semantic unit type)-to-function mapping has the appropriate function signature.<ref>It is possible to [[Z21177|retrieve the signature of a function]].</ref>
* ninai/base/interfaces.py: class SyntacticRoleFunction(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):
** The notes in the previous sub-bullet point apply here too; functions matching these protocols perform steps of the process of rendering arbitrary predicates.
* ninai/constructors/contexts/refcontext.py: class RefContextRenderer(NamedTuple):
** The notes in the sub-bullet point two before this one apply here as well. Given that this is created by a specific semantic unit's main renderer, rather than it being part of the base system (it does not live in the 'ninai/base' directory, after all), it should be possible
** ❌ to allow renderers to instantiate encapsulations of the state needed for their execution.
* ninai/base/interfaces.py: class NinaiError(Exception):
** While this is not currently used much yet, it is intended to be saveable/serializable in the event the rendering process needs to be suspended (see "PausedRendererSupply" below), so that the specific source and cause of an error may be introspected. As a result, it should be possible
** ✅ to define arbitrary types of errors/exceptions to be thrown by code implementations.<ref>[[Wikifunctions:How_to_create_implementations#Wikifunctions_error_handling|User-defined errors]] exist on Wikifunctions, and function calls can throw them.</ref>
* ninai/base/interfaces.py: class RenderingPhase(IntEnum):
* ninai/base/interfaces.py: class CoreArgumentProcessingPhase(IntEnum):
** These enumerations were created to keep track of the current state of a type of process (and to indicate from where a suspended version of that process should resume from; see "PausedRendererSupply" below). As a result, it should be possible
** ❌ to keep track of the particular level of a rendering process being executed and to save that tracking information.
* ninai/graph/__init__.py: class FallbackRunner:
** This is instantiated whenever a direct sense link cannot be found and starts the process of running fallback steps specified per language (see "SenseFindingFallback" ff. below).
* ninai/graph/server.py: class GraphServer:
* ninai/graph/server.py: class ServerThread(threading.Thread):
* ninai/graph/server.py: class GraphServerRepl(cmd.Cmd):
** These classes serve as scaffolding for threads that handle remote procedure calls for (NetworkX, but also graph-tool in the past) graph traversals from a starting item/lexeme/sense and return the results of those traversals (https://elemwala-backend.toolforge.org merely runs such threads). While the specific Python implementation need not exist in the same fashion as written, it should still be possible
** ❌ to traverse the full graph of connections between Wikidata entities having certain property links (for instance, to go from one sense to another three "synonym" statements away, or to go from one lexeme to another three "etymology" statements away); the current functions which simply run "haswbstatement:P5137" full-text searches are not sufficient.
* ninai/base/interfaces.py: class CandidatePathNode(TypedDict): # due to XMLRPC serialization, must remain a TypedDict
** This holds two things: (1) a particular entity ID (item/lexeme/sense), and (2) a list of two-item tuples representing the links between the source entity of a traversal and that particular entity ID. If L789-S1 was three "translation" links away from L123-S1, and a traversal is run with L123-S1 as the starting point, then the CandidatePathNode for L789-S1 would have as its second element a list of three two-item tuples (for each of the three links). As a result, it should be possible
** ❌ to return not only entities linked to a given entity, but the (shortest) path between a source entity and that given entity, as part of a traversal.
* ninai/base/interfaces.py: class SenseRefinement(Protocol):
** Functions satisfying this Protocol filter a list of
* ninai/graph/client.py: class CandidateProcessor:
** Functions satisfying this Protocol filter a list of
* ninai/base/pausedrenderersupply.py: class PausedRendererSupply(NamedTuple):
** This class was added to assist in something Maria Keet had asked for once: if a particular grammatical feature is not known at a point in the rendering process, and there isn't a clear way to proceed without knowing it, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing information to the ''renderer'' and resume that process. As a result, it should be possible
** ❌ to return some state representation, in the event of an error within rendering, that can be resumed with appropriate information provided.
* ninai/base/interfaces.py: class PreHookOperator(NamedTuple):
* ninai/base/interfaces.py: class MainRendererOperator(NamedTuple):
* ninai/base/interfaces.py: class PostHookOperator(NamedTuple):
** These exist merely to define a [[:w:en:Tagged union]] of possible types of functions usable by Ninai during certain rendering steps (see the note for PreHook, Renderer, PostHook above). Following from the previous bullet point, if a particular step is not defined for a language-semantic unit type combination, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing function to the ''renderer'' and resume that process.
* ninai/base/interfaces.py: class CatenaYieldingIterator(Protocol):
** Iterator classes matching this protocol, which otherwise could be reduced to individual functions, exist for a couple of reasons:
**# Because Wikifunctions is based on principles exemplified by Haskell (which is not an implementation language, which has proper tail call optimization, but which does not have 'for' loops), and because Ninai/Udiron is written in Python (which is an implementation language, which does not optimize tail calls<ref>https://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html</ref>, but which has 'for' loops), such iterators return, in addition to the object they generate, a new iterator starting from the point at which that object was generated.
**# Generators (and thus iterators) are not automatically serializable (indeed, even more comprehensive Python libraries than pickle cannot do so<ref>https://pypi.org/project/dill/</ref>), so these objects manually implement Python's iterator protocol.
** As a result of both of these things, it should be possible
** ❌ to serialize and deserialize the current state of a given sense finding process.
* ninai/graph/client.py: class SenseFindingIterator:
** This represents the main starting point of the sense finding process, and is serializable for the reasons above.
* ninai/base/interfaces.py: class SenseFindingFallback(CatenaYieldingIterator, Protocol):
* ninai/graph/calque.py: class CalqueIterator: # finding equivalents for parts of a complex lexeme in a source language, and reassembling the equivalents in a target language
* ninai/graph/calque.py: class VerboNominalSyntagmaCalque: # in the situation where a verb consists of e.g. (a noun) + "to do"
* ninai/graph/calque.py: class EndocentricCompoundCalque: # in the situation where a noun consists of two other nouns, or an adjective attached to a noun
* ninai/graph/calque.py: class DerivationCalque: # in the situation where a lexeme consists of another lexeme with a derivational affix
* ninai/graph/fallbacks.py: class CatenaZipperListIterator: # returning choices from only a specific list of lexemes
* ninai/graph/cognate.py: class CognateIterator: # returning lexemes in a target language that, via "derived from lexeme" statements, are etymologically related to a lexeme in a source language
* ninai/graph/transcribe.py: class TranscribeIterator: # returning pseudo-lexemes that consist of another lexeme in a source language with its (phonetic/orthographic) representation converted to a target language
* ninai/graph/__init__.py: class CatenaFromItemIdIterator: # simply produces a pseudo-lexeme whose lemma is the item label
** In addition to the notes about "CatenaYieldingIterator" above, these iterators perform fallback steps of different kinds, mainly involving finding parts/equivalents of other lexemes outside the target language.
* ninai/base/interfaces.py: class Constructorify(Protocol): # not used yet, but will be reintroduced soon
* ninai/base/interfaces.py: class Transcribe(Protocol): # actually performs the conversion of a (phonetic/orthographic) representation into a target language
* ninai/base/interfaces.py: class BinominalCompoundCalque(Protocol): # actually reassembles the equivalents of two nouns (or an adjective and a noun)
* ninai/base/interfaces.py: class DerivationalCalqueFunction(Protocol): # actually reassembles the equivalents of a lexeme and an attached affix
** Functions satisfying these protocols perform the steps in the target language of assembling a candidate word or phrase from any found equivalents.
* ninai/renderers/mul.py: class FinalPunctuationFunction(Protocol):
** This simply represents a function that adds some punctuation to a phrase/clause.
=== 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] = {}
** ...
<references/>
== Missing Wikifunctions features for this type ==
@[[User:Mahir256|Mahir256]] What are the currently missing features of Wikifunctions that are necessary to actually implement this type? Which of these are fundamental, and which are just useful to port the code directly from Ninai? It could be useful to have them all listed in one place. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 17:36, 16 June 2026 (UTC)
*{{re|Dv103|Denny|DVrandecic (WMF)}} I have started assembling those above, where explanations are given for different classes' existence, and particular desiderata for implementation are given with a ❌ (any of which you're welcome to change to a ✅ if there is evidence that the thing described is possible). I leave it to you to decide which are 'fundamental' versus 'just useful'. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 22:58, 22 June 2026 (UTC)
*:A thing about sets: what is the issue in using {{Z|Z881}} to encode them? Wikifunctions already contains lists that are treated as sets. We already have functions to treat typed list as if they were sets (i.e., ignoring the order). Also consider that, under the hood, {{Z|Z883}} is just a wrapper for a {{Z|Z881}} of {{Z|Z882}}. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:54, 23 June 2026 (UTC)
k1tc0pk6slwr6u9qln67xzppkrvobp7
285890
285889
2026-06-23T07:56:53Z
Dv103
11127
/* Classes */ I misunderstood the required feature
285890
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/constructor.py: class Constructor(NamedTuple):
** The "semantic unit" type is intended to be equivalent to this class.
* ninai/base/constructorzipper.py: class ArgumentLevel(NamedTuple):
* ninai/base/constructorzipper.py: class ConstructorZipper(NamedTuple):
** [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/constructorzipper.py#L26 "Due to the Wikifunctions requirement that all functions be pure functions, (the ConstructorZipper) has been introduced in order to assist the manipulation of (semantic units)."] A similar class was introduced in Udiron for the manipulation of syntactic units. As a result, it should be possible
** ❌ to either return modified inputs cheaply, or [[:w:en:Zipper (data structure)|to create modified versions of persistent data structures cheaply]] and return those. <!-- <ref>Returning modified input is as cheap as every function call in Wikifunctions. If the modification is done through composition, using only builtin functions, it can become very cheap (in the order of some milliseconds).</ref> -->
* ninai/base/interfaces.py: class ArgumentFilter(Protocol):
** Functions satisfying this protocol should produce semantic units (representing different kinds of meaning) as output.
* ninai/base/argumentfilters.py: class ArgumentFilterOptions(NamedTuple):
** Since performance considerations <small>e.g. "any argument after the fourth is kept on the stack instead of moved into a register"</small> and various coding style guides discourage having large numbers of arguments when defining a function, this class exists to hold those when defining a new semantic unit. [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L138 The members of that class are mostly assigned to other objects]. (See also the Wikifunctions requirement that all functions be pure functions.) As a result, it should be possible
** ❌ to cheaply handle large numbers of arguments provided to a function.
* ninai/base/rendererarguments.py: class RendererArguments(NamedTuple):
** The desideratum in the previous sub-bullet point also applies here, although this object is passed around and manipulated versions returned across ''lots'' of different rendering steps (both in the base system and in user-defined functions), so it's worth repeating that it should be possible
** ❌ to '''''cheaply''''' handle large numbers of arguments provided to a function.
* ninai/base/interfaces.py: class ArgumentFilterBasis(Protocol):
** This represents one of the arguments of an ArgumentFilterOptions: the function that produces a given type of semantic unit may be wholly tailored to that unit or simply be some other base function (like the [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L23 "default"] and [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L153 "passthrough"] functions). It is actually a partial function application that is stored and called when a semantic unit is provided arguments. As a result, it should be possible
** ❌ to store partial function calls in a semantic unit type-function mapping and use those.
* ninai/base/constructormainrenderer.py: class ConstructorMainRenderer(NamedTuple):
* ninai/base/constructorrenderer.py: class ConstructorRenderer(NamedTuple):
* ninai/base/coreargumentprocessor.py: class CoreArgumentProcessor(NamedTuple):
* ninai/base/coreargumentsrenderer.py: class CoreArgumentsRenderer(NamedTuple):
* ninai/base/scopeargumentsrenderer.py: class ScopeArgumentsRenderer(NamedTuple):
** These classes encapsulate each of the steps that are actually run by the base Ninai system during semantic unit rendering, as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ❌ to run the functions defined by the base system for the rendering process without (in the case where all functions involved are written in Python) having to deal with overhead of serializing/deserializing objects at function call boundaries.
* ninai/base/context.py: class ContextEntry(NamedTuple):
* ninai/base/context.py: class Context(NamedTuple):
** [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §4.1.2.: “Contexts” are lists representing where and how deep into a tree of Constructors a particular rendering step is occurring (effectively functioning like a stack trace).] As a result, it should be possible
** ❌ to expand and contract lists of tuples cheaply.
* ninai/base/framing.py: class MethodKey(NamedTuple):
* ninai/base/framing.py: class FramingKey(NamedTuple):
** These are used for indexing into Framings (see below), with the idea that the value returned from such an indexing is either a function or another Framing object entirely.
* ninai/base/framing.py: class FramingDict(NamedTuple):
* ninai/base/framing.py: class Framing(NamedTuple):
** [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §4.1.2.: “Framings” hold information provided at the start of the Constructor rendering process to control the behavior of named individual Constructor types, named individual Constructors, individual languages, or some combination of all three.]
** The current implementation is largely inspired by the idea of [https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors CSS selectors]; the same sorts of symbols that denote certain features to select for (e.g. ".", "#", ":") may be used in a Framing selector as well.
** To satisfy Python type checkers, and to mitigate the inability to distinguish between e.g. "dict[str]" and "dict[int]" using a Python isinstance() check, keys into Framings (such as MethodKey and FramingKey listed above, along with EntityKey and StrKey from Udiron) distinguish between the possible types of the objects returned. Indexing into a Framing with an EntityKey will yield one of [https://gitlab.com/mahir256/udiron/-/blob/main/udiron/base/functionconfig.py#L158 several possible types] that ''can'' be distinguished by an isinstance() check; likewise with a StrKey yielding a string. As a result, it should be possible
** ❌ to check the types of values returned from arbitrary mappings cheaply.
* ninai/base/interfaces.py: class PreHook(Protocol):
* ninai/base/interfaces.py: class Renderer(Protocol):
* ninai/base/interfaces.py: class PostHook(Protocol):
* ninai/base/interfaces.py: class ArgPreHook(Protocol):
* ninai/base/interfaces.py: class ArgPostHook(Protocol):
** Functions satisfying these protocols perform each of the steps of the semantic unit rendering process (as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ✅ to verify that a function in a particular (language, semantic unit type)-to-function mapping has the appropriate function signature.<ref>It is possible to [[Z21177|retrieve the signature of a function]].</ref>
* ninai/base/interfaces.py: class SyntacticRoleFunction(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):
** The notes in the previous sub-bullet point apply here too; functions matching these protocols perform steps of the process of rendering arbitrary predicates.
* ninai/constructors/contexts/refcontext.py: class RefContextRenderer(NamedTuple):
** The notes in the sub-bullet point two before this one apply here as well. Given that this is created by a specific semantic unit's main renderer, rather than it being part of the base system (it does not live in the 'ninai/base' directory, after all), it should be possible
** ❌ to allow renderers to instantiate encapsulations of the state needed for their execution.
* ninai/base/interfaces.py: class NinaiError(Exception):
** While this is not currently used much yet, it is intended to be saveable/serializable in the event the rendering process needs to be suspended (see "PausedRendererSupply" below), so that the specific source and cause of an error may be introspected. As a result, it should be possible
** ✅ to define arbitrary types of errors/exceptions to be thrown by code implementations.<ref>[[Wikifunctions:How_to_create_implementations#Wikifunctions_error_handling|User-defined errors]] exist on Wikifunctions, and function calls can throw them.</ref>
* ninai/base/interfaces.py: class RenderingPhase(IntEnum):
* ninai/base/interfaces.py: class CoreArgumentProcessingPhase(IntEnum):
** These enumerations were created to keep track of the current state of a type of process (and to indicate from where a suspended version of that process should resume from; see "PausedRendererSupply" below). As a result, it should be possible
** ❌ to keep track of the particular level of a rendering process being executed and to save that tracking information.
* ninai/graph/__init__.py: class FallbackRunner:
** This is instantiated whenever a direct sense link cannot be found and starts the process of running fallback steps specified per language (see "SenseFindingFallback" ff. below).
* ninai/graph/server.py: class GraphServer:
* ninai/graph/server.py: class ServerThread(threading.Thread):
* ninai/graph/server.py: class GraphServerRepl(cmd.Cmd):
** These classes serve as scaffolding for threads that handle remote procedure calls for (NetworkX, but also graph-tool in the past) graph traversals from a starting item/lexeme/sense and return the results of those traversals (https://elemwala-backend.toolforge.org merely runs such threads). While the specific Python implementation need not exist in the same fashion as written, it should still be possible
** ❌ to traverse the full graph of connections between Wikidata entities having certain property links (for instance, to go from one sense to another three "synonym" statements away, or to go from one lexeme to another three "etymology" statements away); the current functions which simply run "haswbstatement:P5137" full-text searches are not sufficient.
* ninai/base/interfaces.py: class CandidatePathNode(TypedDict): # due to XMLRPC serialization, must remain a TypedDict
** This holds two things: (1) a particular entity ID (item/lexeme/sense), and (2) a list of two-item tuples representing the links between the source entity of a traversal and that particular entity ID. If L789-S1 was three "translation" links away from L123-S1, and a traversal is run with L123-S1 as the starting point, then the CandidatePathNode for L789-S1 would have as its second element a list of three two-item tuples (for each of the three links). As a result, it should be possible
** ❌ to return not only entities linked to a given entity, but the (shortest) path between a source entity and that given entity, as part of a traversal.
* ninai/base/interfaces.py: class SenseRefinement(Protocol):
** Functions satisfying this Protocol filter a list of
* ninai/graph/client.py: class CandidateProcessor:
** Functions satisfying this Protocol filter a list of
* ninai/base/pausedrenderersupply.py: class PausedRendererSupply(NamedTuple):
** This class was added to assist in something Maria Keet had asked for once: if a particular grammatical feature is not known at a point in the rendering process, and there isn't a clear way to proceed without knowing it, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing information to the ''renderer'' and resume that process. As a result, it should be possible
** ❌ to return some state representation, in the event of an error within rendering, that can be resumed with appropriate information provided.
* ninai/base/interfaces.py: class PreHookOperator(NamedTuple):
* ninai/base/interfaces.py: class MainRendererOperator(NamedTuple):
* ninai/base/interfaces.py: class PostHookOperator(NamedTuple):
** These exist merely to define a [[:w:en:Tagged union]] of possible types of functions usable by Ninai during certain rendering steps (see the note for PreHook, Renderer, PostHook above). Following from the previous bullet point, if a particular step is not defined for a language-semantic unit type combination, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing function to the ''renderer'' and resume that process.
* ninai/base/interfaces.py: class CatenaYieldingIterator(Protocol):
** Iterator classes matching this protocol, which otherwise could be reduced to individual functions, exist for a couple of reasons:
**# Because Wikifunctions is based on principles exemplified by Haskell (which is not an implementation language, which has proper tail call optimization, but which does not have 'for' loops), and because Ninai/Udiron is written in Python (which is an implementation language, which does not optimize tail calls<ref>https://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html</ref>, but which has 'for' loops), such iterators return, in addition to the object they generate, a new iterator starting from the point at which that object was generated.
**# Generators (and thus iterators) are not automatically serializable (indeed, even more comprehensive Python libraries than pickle cannot do so<ref>https://pypi.org/project/dill/</ref>), so these objects manually implement Python's iterator protocol.
** As a result of both of these things, it should be possible
** ❌ to serialize and deserialize the current state of a given sense finding process.
* ninai/graph/client.py: class SenseFindingIterator:
** This represents the main starting point of the sense finding process, and is serializable for the reasons above.
* ninai/base/interfaces.py: class SenseFindingFallback(CatenaYieldingIterator, Protocol):
* ninai/graph/calque.py: class CalqueIterator: # finding equivalents for parts of a complex lexeme in a source language, and reassembling the equivalents in a target language
* ninai/graph/calque.py: class VerboNominalSyntagmaCalque: # in the situation where a verb consists of e.g. (a noun) + "to do"
* ninai/graph/calque.py: class EndocentricCompoundCalque: # in the situation where a noun consists of two other nouns, or an adjective attached to a noun
* ninai/graph/calque.py: class DerivationCalque: # in the situation where a lexeme consists of another lexeme with a derivational affix
* ninai/graph/fallbacks.py: class CatenaZipperListIterator: # returning choices from only a specific list of lexemes
* ninai/graph/cognate.py: class CognateIterator: # returning lexemes in a target language that, via "derived from lexeme" statements, are etymologically related to a lexeme in a source language
* ninai/graph/transcribe.py: class TranscribeIterator: # returning pseudo-lexemes that consist of another lexeme in a source language with its (phonetic/orthographic) representation converted to a target language
* ninai/graph/__init__.py: class CatenaFromItemIdIterator: # simply produces a pseudo-lexeme whose lemma is the item label
** In addition to the notes about "CatenaYieldingIterator" above, these iterators perform fallback steps of different kinds, mainly involving finding parts/equivalents of other lexemes outside the target language.
* ninai/base/interfaces.py: class Constructorify(Protocol): # not used yet, but will be reintroduced soon
* ninai/base/interfaces.py: class Transcribe(Protocol): # actually performs the conversion of a (phonetic/orthographic) representation into a target language
* ninai/base/interfaces.py: class BinominalCompoundCalque(Protocol): # actually reassembles the equivalents of two nouns (or an adjective and a noun)
* ninai/base/interfaces.py: class DerivationalCalqueFunction(Protocol): # actually reassembles the equivalents of a lexeme and an attached affix
** Functions satisfying these protocols perform the steps in the target language of assembling a candidate word or phrase from any found equivalents.
* ninai/renderers/mul.py: class FinalPunctuationFunction(Protocol):
** This simply represents a function that adds some punctuation to a phrase/clause.
=== 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] = {}
** ...
<references/>
== Missing Wikifunctions features for this type ==
@[[User:Mahir256|Mahir256]] What are the currently missing features of Wikifunctions that are necessary to actually implement this type? Which of these are fundamental, and which are just useful to port the code directly from Ninai? It could be useful to have them all listed in one place. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 17:36, 16 June 2026 (UTC)
*{{re|Dv103|Denny|DVrandecic (WMF)}} I have started assembling those above, where explanations are given for different classes' existence, and particular desiderata for implementation are given with a ❌ (any of which you're welcome to change to a ✅ if there is evidence that the thing described is possible). I leave it to you to decide which are 'fundamental' versus 'just useful'. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 22:58, 22 June 2026 (UTC)
*:A thing about sets: what is the issue in using {{Z|Z881}} to encode them? Wikifunctions already contains lists that are treated as sets. We already have functions to treat typed list as if they were sets (i.e., ignoring the order). Also consider that, under the hood, {{Z|Z883}} is just a wrapper for a {{Z|Z881}} of {{Z|Z882}}. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:54, 23 June 2026 (UTC)
n8sc9xs60xl13mtpebryk7682ycmy3p
285907
285890
2026-06-23T11:47:53Z
Dv103
11127
/* Classes */
285907
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/constructor.py: class Constructor(NamedTuple):
** The "semantic unit" type is intended to be equivalent to this class.
* ninai/base/constructorzipper.py: class ArgumentLevel(NamedTuple):
* ninai/base/constructorzipper.py: class ConstructorZipper(NamedTuple):
** [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/constructorzipper.py#L26 "Due to the Wikifunctions requirement that all functions be pure functions, (the ConstructorZipper) has been introduced in order to assist the manipulation of (semantic units)."] A similar class was introduced in Udiron for the manipulation of syntactic units. As a result, it should be possible
** ❓ to either return modified inputs cheaply, or [[:w:en:Zipper (data structure)|to create modified versions of persistent data structures cheaply]] and return those. <ref>Returning modified input is as cheap as every function call in Wikifunctions. If the modification is done through composition, using only builtin functions, it can become very cheap (in the order of some milliseconds). This is because in Wikifunctions, object are "immutable" in the sense that they are always copied when passed to functions, and the functions always return another copy. A function that returns a slightly modified version of the input is no different from a function that returns a completely different value. For the zipper, if necessary, a list could be used.</ref>
* ninai/base/interfaces.py: class ArgumentFilter(Protocol):
** Functions satisfying this protocol should produce semantic units (representing different kinds of meaning) as output.
* ninai/base/argumentfilters.py: class ArgumentFilterOptions(NamedTuple):
** Since performance considerations <small>e.g. "any argument after the fourth is kept on the stack instead of moved into a register"</small> and various coding style guides discourage having large numbers of arguments when defining a function, this class exists to hold those when defining a new semantic unit. [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L138 The members of that class are mostly assigned to other objects]. (See also the Wikifunctions requirement that all functions be pure functions.) As a result, it should be possible
** ❌ to cheaply handle large numbers of arguments provided to a function.
* ninai/base/rendererarguments.py: class RendererArguments(NamedTuple):
** The desideratum in the previous sub-bullet point also applies here, although this object is passed around and manipulated versions returned across ''lots'' of different rendering steps (both in the base system and in user-defined functions), so it's worth repeating that it should be possible
** ❌ to '''''cheaply''''' handle large numbers of arguments provided to a function.
* ninai/base/interfaces.py: class ArgumentFilterBasis(Protocol):
** This represents one of the arguments of an ArgumentFilterOptions: the function that produces a given type of semantic unit may be wholly tailored to that unit or simply be some other base function (like the [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L23 "default"] and [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L153 "passthrough"] functions). It is actually a partial function application that is stored and called when a semantic unit is provided arguments. As a result, it should be possible
** ❌ to store partial function calls in a semantic unit type-function mapping and use those.
* ninai/base/constructormainrenderer.py: class ConstructorMainRenderer(NamedTuple):
* ninai/base/constructorrenderer.py: class ConstructorRenderer(NamedTuple):
* ninai/base/coreargumentprocessor.py: class CoreArgumentProcessor(NamedTuple):
* ninai/base/coreargumentsrenderer.py: class CoreArgumentsRenderer(NamedTuple):
* ninai/base/scopeargumentsrenderer.py: class ScopeArgumentsRenderer(NamedTuple):
** These classes encapsulate each of the steps that are actually run by the base Ninai system during semantic unit rendering, as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ❌ to run the functions defined by the base system for the rendering process without (in the case where all functions involved are written in Python) having to deal with overhead of serializing/deserializing objects at function call boundaries.
* ninai/base/context.py: class ContextEntry(NamedTuple):
* ninai/base/context.py: class Context(NamedTuple):
** [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §4.1.2.: “Contexts” are lists representing where and how deep into a tree of Constructors a particular rendering step is occurring (effectively functioning like a stack trace).] As a result, it should be possible
** ❌ to expand and contract lists of tuples cheaply.
* ninai/base/framing.py: class MethodKey(NamedTuple):
* ninai/base/framing.py: class FramingKey(NamedTuple):
** These are used for indexing into Framings (see below), with the idea that the value returned from such an indexing is either a function or another Framing object entirely.
* ninai/base/framing.py: class FramingDict(NamedTuple):
* ninai/base/framing.py: class Framing(NamedTuple):
** [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §4.1.2.: “Framings” hold information provided at the start of the Constructor rendering process to control the behavior of named individual Constructor types, named individual Constructors, individual languages, or some combination of all three.]
** The current implementation is largely inspired by the idea of [https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors CSS selectors]; the same sorts of symbols that denote certain features to select for (e.g. ".", "#", ":") may be used in a Framing selector as well.
** To satisfy Python type checkers, and to mitigate the inability to distinguish between e.g. "dict[str]" and "dict[int]" using a Python isinstance() check, keys into Framings (such as MethodKey and FramingKey listed above, along with EntityKey and StrKey from Udiron) distinguish between the possible types of the objects returned. Indexing into a Framing with an EntityKey will yield one of [https://gitlab.com/mahir256/udiron/-/blob/main/udiron/base/functionconfig.py#L158 several possible types] that ''can'' be distinguished by an isinstance() check; likewise with a StrKey yielding a string. As a result, it should be possible
** ❌ to check the types of values returned from arbitrary mappings cheaply.
* ninai/base/interfaces.py: class PreHook(Protocol):
* ninai/base/interfaces.py: class Renderer(Protocol):
* ninai/base/interfaces.py: class PostHook(Protocol):
* ninai/base/interfaces.py: class ArgPreHook(Protocol):
* ninai/base/interfaces.py: class ArgPostHook(Protocol):
** Functions satisfying these protocols perform each of the steps of the semantic unit rendering process (as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ✅ to verify that a function in a particular (language, semantic unit type)-to-function mapping has the appropriate function signature.<ref>It is possible to [[Z21177|retrieve the signature of a function]].</ref>
* ninai/base/interfaces.py: class SyntacticRoleFunction(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):
** The notes in the previous sub-bullet point apply here too; functions matching these protocols perform steps of the process of rendering arbitrary predicates.
* ninai/constructors/contexts/refcontext.py: class RefContextRenderer(NamedTuple):
** The notes in the sub-bullet point two before this one apply here as well. Given that this is created by a specific semantic unit's main renderer, rather than it being part of the base system (it does not live in the 'ninai/base' directory, after all), it should be possible
** ❌ to allow renderers to instantiate encapsulations of the state needed for their execution.
* ninai/base/interfaces.py: class NinaiError(Exception):
** While this is not currently used much yet, it is intended to be saveable/serializable in the event the rendering process needs to be suspended (see "PausedRendererSupply" below), so that the specific source and cause of an error may be introspected. As a result, it should be possible
** ✅ to define arbitrary types of errors/exceptions to be thrown by code implementations.<ref>[[Wikifunctions:How_to_create_implementations#Wikifunctions_error_handling|User-defined errors]] exist on Wikifunctions, and function calls can throw them.</ref>
* ninai/base/interfaces.py: class RenderingPhase(IntEnum):
* ninai/base/interfaces.py: class CoreArgumentProcessingPhase(IntEnum):
** These enumerations were created to keep track of the current state of a type of process (and to indicate from where a suspended version of that process should resume from; see "PausedRendererSupply" below). As a result, it should be possible
** ❌ to keep track of the particular level of a rendering process being executed and to save that tracking information.
* ninai/graph/__init__.py: class FallbackRunner:
** This is instantiated whenever a direct sense link cannot be found and starts the process of running fallback steps specified per language (see "SenseFindingFallback" ff. below).
* ninai/graph/server.py: class GraphServer:
* ninai/graph/server.py: class ServerThread(threading.Thread):
* ninai/graph/server.py: class GraphServerRepl(cmd.Cmd):
** These classes serve as scaffolding for threads that handle remote procedure calls for (NetworkX, but also graph-tool in the past) graph traversals from a starting item/lexeme/sense and return the results of those traversals (https://elemwala-backend.toolforge.org merely runs such threads). While the specific Python implementation need not exist in the same fashion as written, it should still be possible
** ❌ to traverse the full graph of connections between Wikidata entities having certain property links (for instance, to go from one sense to another three "synonym" statements away, or to go from one lexeme to another three "etymology" statements away); the current functions which simply run "haswbstatement:P5137" full-text searches are not sufficient.
* ninai/base/interfaces.py: class CandidatePathNode(TypedDict): # due to XMLRPC serialization, must remain a TypedDict
** This holds two things: (1) a particular entity ID (item/lexeme/sense), and (2) a list of two-item tuples representing the links between the source entity of a traversal and that particular entity ID. If L789-S1 was three "translation" links away from L123-S1, and a traversal is run with L123-S1 as the starting point, then the CandidatePathNode for L789-S1 would have as its second element a list of three two-item tuples (for each of the three links). As a result, it should be possible
** ❌ to return not only entities linked to a given entity, but the (shortest) path between a source entity and that given entity, as part of a traversal.
* ninai/base/interfaces.py: class SenseRefinement(Protocol):
** Functions satisfying this Protocol filter a list of
* ninai/graph/client.py: class CandidateProcessor:
** Functions satisfying this Protocol filter a list of
* ninai/base/pausedrenderersupply.py: class PausedRendererSupply(NamedTuple):
** This class was added to assist in something Maria Keet had asked for once: if a particular grammatical feature is not known at a point in the rendering process, and there isn't a clear way to proceed without knowing it, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing information to the ''renderer'' and resume that process. As a result, it should be possible
** ❌ to return some state representation, in the event of an error within rendering, that can be resumed with appropriate information provided.
* ninai/base/interfaces.py: class PreHookOperator(NamedTuple):
* ninai/base/interfaces.py: class MainRendererOperator(NamedTuple):
* ninai/base/interfaces.py: class PostHookOperator(NamedTuple):
** These exist merely to define a [[:w:en:Tagged union]] of possible types of functions usable by Ninai during certain rendering steps (see the note for PreHook, Renderer, PostHook above). Following from the previous bullet point, if a particular step is not defined for a language-semantic unit type combination, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing function to the ''renderer'' and resume that process.
* ninai/base/interfaces.py: class CatenaYieldingIterator(Protocol):
** Iterator classes matching this protocol, which otherwise could be reduced to individual functions, exist for a couple of reasons:
**# Because Wikifunctions is based on principles exemplified by Haskell (which is not an implementation language, which has proper tail call optimization, but which does not have 'for' loops), and because Ninai/Udiron is written in Python (which is an implementation language, which does not optimize tail calls<ref>https://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html</ref>, but which has 'for' loops), such iterators return, in addition to the object they generate, a new iterator starting from the point at which that object was generated.
**# Generators (and thus iterators) are not automatically serializable (indeed, even more comprehensive Python libraries than pickle cannot do so<ref>https://pypi.org/project/dill/</ref>), so these objects manually implement Python's iterator protocol.
** As a result of both of these things, it should be possible
** ❌ to serialize and deserialize the current state of a given sense finding process.
* ninai/graph/client.py: class SenseFindingIterator:
** This represents the main starting point of the sense finding process, and is serializable for the reasons above.
* ninai/base/interfaces.py: class SenseFindingFallback(CatenaYieldingIterator, Protocol):
* ninai/graph/calque.py: class CalqueIterator: # finding equivalents for parts of a complex lexeme in a source language, and reassembling the equivalents in a target language
* ninai/graph/calque.py: class VerboNominalSyntagmaCalque: # in the situation where a verb consists of e.g. (a noun) + "to do"
* ninai/graph/calque.py: class EndocentricCompoundCalque: # in the situation where a noun consists of two other nouns, or an adjective attached to a noun
* ninai/graph/calque.py: class DerivationCalque: # in the situation where a lexeme consists of another lexeme with a derivational affix
* ninai/graph/fallbacks.py: class CatenaZipperListIterator: # returning choices from only a specific list of lexemes
* ninai/graph/cognate.py: class CognateIterator: # returning lexemes in a target language that, via "derived from lexeme" statements, are etymologically related to a lexeme in a source language
* ninai/graph/transcribe.py: class TranscribeIterator: # returning pseudo-lexemes that consist of another lexeme in a source language with its (phonetic/orthographic) representation converted to a target language
* ninai/graph/__init__.py: class CatenaFromItemIdIterator: # simply produces a pseudo-lexeme whose lemma is the item label
** In addition to the notes about "CatenaYieldingIterator" above, these iterators perform fallback steps of different kinds, mainly involving finding parts/equivalents of other lexemes outside the target language.
* ninai/base/interfaces.py: class Constructorify(Protocol): # not used yet, but will be reintroduced soon
* ninai/base/interfaces.py: class Transcribe(Protocol): # actually performs the conversion of a (phonetic/orthographic) representation into a target language
* ninai/base/interfaces.py: class BinominalCompoundCalque(Protocol): # actually reassembles the equivalents of two nouns (or an adjective and a noun)
* ninai/base/interfaces.py: class DerivationalCalqueFunction(Protocol): # actually reassembles the equivalents of a lexeme and an attached affix
** Functions satisfying these protocols perform the steps in the target language of assembling a candidate word or phrase from any found equivalents.
* ninai/renderers/mul.py: class FinalPunctuationFunction(Protocol):
** This simply represents a function that adds some punctuation to a phrase/clause.
=== 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] = {}
** ...
<references/>
== Missing Wikifunctions features for this type ==
@[[User:Mahir256|Mahir256]] What are the currently missing features of Wikifunctions that are necessary to actually implement this type? Which of these are fundamental, and which are just useful to port the code directly from Ninai? It could be useful to have them all listed in one place. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 17:36, 16 June 2026 (UTC)
*{{re|Dv103|Denny|DVrandecic (WMF)}} I have started assembling those above, where explanations are given for different classes' existence, and particular desiderata for implementation are given with a ❌ (any of which you're welcome to change to a ✅ if there is evidence that the thing described is possible). I leave it to you to decide which are 'fundamental' versus 'just useful'. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 22:58, 22 June 2026 (UTC)
*:A thing about sets: what is the issue in using {{Z|Z881}} to encode them? Wikifunctions already contains lists that are treated as sets. We already have functions to treat typed list as if they were sets (i.e., ignoring the order). Also consider that, under the hood, {{Z|Z883}} is just a wrapper for a {{Z|Z881}} of {{Z|Z882}}. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:54, 23 June 2026 (UTC)
0qyegei9gu2zsne6uqqlgl70prxjp7x
285908
285907
2026-06-23T11:54:43Z
Dv103
11127
/* Classes */
285908
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/constructor.py: class Constructor(NamedTuple):
** The "semantic unit" type is intended to be equivalent to this class.
* ninai/base/constructorzipper.py: class ArgumentLevel(NamedTuple):
* ninai/base/constructorzipper.py: class ConstructorZipper(NamedTuple):
** [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/constructorzipper.py#L26 "Due to the Wikifunctions requirement that all functions be pure functions, (the ConstructorZipper) has been introduced in order to assist the manipulation of (semantic units)."] A similar class was introduced in Udiron for the manipulation of syntactic units. As a result, it should be possible
** ❓ to either return modified inputs cheaply, or [[:w:en:Zipper (data structure)|to create modified versions of persistent data structures cheaply]] and return those. <ref>Returning modified input is as cheap as every function call in Wikifunctions. If the modification is done through composition, using only builtin functions, it can become very cheap (in the order of some milliseconds). This is because in Wikifunctions, object are "immutable" in the sense that they are always copied when passed to functions, and the functions always return another copy. A function that returns a slightly modified version of the input is no different from a function that returns a completely different value. For the zipper, if necessary, a list could be used.</ref>
* ninai/base/interfaces.py: class ArgumentFilter(Protocol):
** Functions satisfying this protocol should produce semantic units (representing different kinds of meaning) as output.
* ninai/base/argumentfilters.py: class ArgumentFilterOptions(NamedTuple):
** Since performance considerations <small>e.g. "any argument after the fourth is kept on the stack instead of moved into a register"</small> and various coding style guides discourage having large numbers of arguments when defining a function, this class exists to hold those when defining a new semantic unit. [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L138 The members of that class are mostly assigned to other objects]. (See also the Wikifunctions requirement that all functions be pure functions.) As a result, it should be possible
** ✅ to cheaply handle large numbers of arguments provided to a function.<ref>Wikifunctions already has [[Z23619|functions with a high number of arguments]], and there are no particular issues with them.</ref>
* ninai/base/rendererarguments.py: class RendererArguments(NamedTuple):
** The desideratum in the previous sub-bullet point also applies here, although this object is passed around and manipulated versions returned across ''lots'' of different rendering steps (both in the base system and in user-defined functions), so it's worth repeating that it should be possible
** ❌ to '''''cheaply''''' handle large numbers of arguments provided to a function.
* ninai/base/interfaces.py: class ArgumentFilterBasis(Protocol):
** This represents one of the arguments of an ArgumentFilterOptions: the function that produces a given type of semantic unit may be wholly tailored to that unit or simply be some other base function (like the [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L23 "default"] and [https://gitlab.com/mahir256/ninai/-/blob/main/ninai/base/argumentfilters.py#L153 "passthrough"] functions). It is actually a partial function application that is stored and called when a semantic unit is provided arguments. As a result, it should be possible
** ❌ to store partial function calls in a semantic unit type-function mapping and use those.
* ninai/base/constructormainrenderer.py: class ConstructorMainRenderer(NamedTuple):
* ninai/base/constructorrenderer.py: class ConstructorRenderer(NamedTuple):
* ninai/base/coreargumentprocessor.py: class CoreArgumentProcessor(NamedTuple):
* ninai/base/coreargumentsrenderer.py: class CoreArgumentsRenderer(NamedTuple):
* ninai/base/scopeargumentsrenderer.py: class ScopeArgumentsRenderer(NamedTuple):
** These classes encapsulate each of the steps that are actually run by the base Ninai system during semantic unit rendering, as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ❌ to run the functions defined by the base system for the rendering process without (in the case where all functions involved are written in Python) having to deal with overhead of serializing/deserializing objects at function call boundaries.
* ninai/base/context.py: class ContextEntry(NamedTuple):
* ninai/base/context.py: class Context(NamedTuple):
** [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §4.1.2.: “Contexts” are lists representing where and how deep into a tree of Constructors a particular rendering step is occurring (effectively functioning like a stack trace).] As a result, it should be possible
** ❌ to expand and contract lists of tuples cheaply.
* ninai/base/framing.py: class MethodKey(NamedTuple):
* ninai/base/framing.py: class FramingKey(NamedTuple):
** These are used for indexing into Framings (see below), with the idea that the value returned from such an indexing is either a function or another Framing object entirely.
* ninai/base/framing.py: class FramingDict(NamedTuple):
* ninai/base/framing.py: class Framing(NamedTuple):
** [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §4.1.2.: “Framings” hold information provided at the start of the Constructor rendering process to control the behavior of named individual Constructor types, named individual Constructors, individual languages, or some combination of all three.]
** The current implementation is largely inspired by the idea of [https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors CSS selectors]; the same sorts of symbols that denote certain features to select for (e.g. ".", "#", ":") may be used in a Framing selector as well.
** To satisfy Python type checkers, and to mitigate the inability to distinguish between e.g. "dict[str]" and "dict[int]" using a Python isinstance() check, keys into Framings (such as MethodKey and FramingKey listed above, along with EntityKey and StrKey from Udiron) distinguish between the possible types of the objects returned. Indexing into a Framing with an EntityKey will yield one of [https://gitlab.com/mahir256/udiron/-/blob/main/udiron/base/functionconfig.py#L158 several possible types] that ''can'' be distinguished by an isinstance() check; likewise with a StrKey yielding a string. As a result, it should be possible
** ❌ to check the types of values returned from arbitrary mappings cheaply.
* ninai/base/interfaces.py: class PreHook(Protocol):
* ninai/base/interfaces.py: class Renderer(Protocol):
* ninai/base/interfaces.py: class PostHook(Protocol):
* ninai/base/interfaces.py: class ArgPreHook(Protocol):
* ninai/base/interfaces.py: class ArgPostHook(Protocol):
** Functions satisfying these protocols perform each of the steps of the semantic unit rendering process (as described in [https://journals.sagepub.com/doi/full/10.3233/SW-243564 §5.1 of my paper]). As a result, it should be possible
** ✅ to verify that a function in a particular (language, semantic unit type)-to-function mapping has the appropriate function signature.<ref>It is possible to [[Z21177|retrieve the signature of a function]].</ref>
* ninai/base/interfaces.py: class SyntacticRoleFunction(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):
** The notes in the previous sub-bullet point apply here too; functions matching these protocols perform steps of the process of rendering arbitrary predicates.
* ninai/constructors/contexts/refcontext.py: class RefContextRenderer(NamedTuple):
** The notes in the sub-bullet point two before this one apply here as well. Given that this is created by a specific semantic unit's main renderer, rather than it being part of the base system (it does not live in the 'ninai/base' directory, after all), it should be possible
** ❌ to allow renderers to instantiate encapsulations of the state needed for their execution.
* ninai/base/interfaces.py: class NinaiError(Exception):
** While this is not currently used much yet, it is intended to be saveable/serializable in the event the rendering process needs to be suspended (see "PausedRendererSupply" below), so that the specific source and cause of an error may be introspected. As a result, it should be possible
** ✅ to define arbitrary types of errors/exceptions to be thrown by code implementations.<ref>[[Wikifunctions:How_to_create_implementations#Wikifunctions_error_handling|User-defined errors]] exist on Wikifunctions, and function calls can throw them.</ref>
* ninai/base/interfaces.py: class RenderingPhase(IntEnum):
* ninai/base/interfaces.py: class CoreArgumentProcessingPhase(IntEnum):
** These enumerations were created to keep track of the current state of a type of process (and to indicate from where a suspended version of that process should resume from; see "PausedRendererSupply" below). As a result, it should be possible
** ❌ to keep track of the particular level of a rendering process being executed and to save that tracking information.
* ninai/graph/__init__.py: class FallbackRunner:
** This is instantiated whenever a direct sense link cannot be found and starts the process of running fallback steps specified per language (see "SenseFindingFallback" ff. below).
* ninai/graph/server.py: class GraphServer:
* ninai/graph/server.py: class ServerThread(threading.Thread):
* ninai/graph/server.py: class GraphServerRepl(cmd.Cmd):
** These classes serve as scaffolding for threads that handle remote procedure calls for (NetworkX, but also graph-tool in the past) graph traversals from a starting item/lexeme/sense and return the results of those traversals (https://elemwala-backend.toolforge.org merely runs such threads). While the specific Python implementation need not exist in the same fashion as written, it should still be possible
** ❌ to traverse the full graph of connections between Wikidata entities having certain property links (for instance, to go from one sense to another three "synonym" statements away, or to go from one lexeme to another three "etymology" statements away); the current functions which simply run "haswbstatement:P5137" full-text searches are not sufficient.
* ninai/base/interfaces.py: class CandidatePathNode(TypedDict): # due to XMLRPC serialization, must remain a TypedDict
** This holds two things: (1) a particular entity ID (item/lexeme/sense), and (2) a list of two-item tuples representing the links between the source entity of a traversal and that particular entity ID. If L789-S1 was three "translation" links away from L123-S1, and a traversal is run with L123-S1 as the starting point, then the CandidatePathNode for L789-S1 would have as its second element a list of three two-item tuples (for each of the three links). As a result, it should be possible
** ❌ to return not only entities linked to a given entity, but the (shortest) path between a source entity and that given entity, as part of a traversal.
* ninai/base/interfaces.py: class SenseRefinement(Protocol):
** Functions satisfying this Protocol filter a list of
* ninai/graph/client.py: class CandidateProcessor:
** Functions satisfying this Protocol filter a list of
* ninai/base/pausedrenderersupply.py: class PausedRendererSupply(NamedTuple):
** This class was added to assist in something Maria Keet had asked for once: if a particular grammatical feature is not known at a point in the rendering process, and there isn't a clear way to proceed without knowing it, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing information to the ''renderer'' and resume that process. As a result, it should be possible
** ❌ to return some state representation, in the event of an error within rendering, that can be resumed with appropriate information provided.
* ninai/base/interfaces.py: class PreHookOperator(NamedTuple):
* ninai/base/interfaces.py: class MainRendererOperator(NamedTuple):
* ninai/base/interfaces.py: class PostHookOperator(NamedTuple):
** These exist merely to define a [[:w:en:Tagged union]] of possible types of functions usable by Ninai during certain rendering steps (see the note for PreHook, Renderer, PostHook above). Following from the previous bullet point, if a particular step is not defined for a language-semantic unit type combination, this should cause the rendering process to be ''paused'' and the user should be allowed to ''supply'' the missing function to the ''renderer'' and resume that process.
* ninai/base/interfaces.py: class CatenaYieldingIterator(Protocol):
** Iterator classes matching this protocol, which otherwise could be reduced to individual functions, exist for a couple of reasons:
**# Because Wikifunctions is based on principles exemplified by Haskell (which is not an implementation language, which has proper tail call optimization, but which does not have 'for' loops), and because Ninai/Udiron is written in Python (which is an implementation language, which does not optimize tail calls<ref>https://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html</ref>, but which has 'for' loops), such iterators return, in addition to the object they generate, a new iterator starting from the point at which that object was generated.
**# Generators (and thus iterators) are not automatically serializable (indeed, even more comprehensive Python libraries than pickle cannot do so<ref>https://pypi.org/project/dill/</ref>), so these objects manually implement Python's iterator protocol.
** As a result of both of these things, it should be possible
** ❌ to serialize and deserialize the current state of a given sense finding process.
* ninai/graph/client.py: class SenseFindingIterator:
** This represents the main starting point of the sense finding process, and is serializable for the reasons above.
* ninai/base/interfaces.py: class SenseFindingFallback(CatenaYieldingIterator, Protocol):
* ninai/graph/calque.py: class CalqueIterator: # finding equivalents for parts of a complex lexeme in a source language, and reassembling the equivalents in a target language
* ninai/graph/calque.py: class VerboNominalSyntagmaCalque: # in the situation where a verb consists of e.g. (a noun) + "to do"
* ninai/graph/calque.py: class EndocentricCompoundCalque: # in the situation where a noun consists of two other nouns, or an adjective attached to a noun
* ninai/graph/calque.py: class DerivationCalque: # in the situation where a lexeme consists of another lexeme with a derivational affix
* ninai/graph/fallbacks.py: class CatenaZipperListIterator: # returning choices from only a specific list of lexemes
* ninai/graph/cognate.py: class CognateIterator: # returning lexemes in a target language that, via "derived from lexeme" statements, are etymologically related to a lexeme in a source language
* ninai/graph/transcribe.py: class TranscribeIterator: # returning pseudo-lexemes that consist of another lexeme in a source language with its (phonetic/orthographic) representation converted to a target language
* ninai/graph/__init__.py: class CatenaFromItemIdIterator: # simply produces a pseudo-lexeme whose lemma is the item label
** In addition to the notes about "CatenaYieldingIterator" above, these iterators perform fallback steps of different kinds, mainly involving finding parts/equivalents of other lexemes outside the target language.
* ninai/base/interfaces.py: class Constructorify(Protocol): # not used yet, but will be reintroduced soon
* ninai/base/interfaces.py: class Transcribe(Protocol): # actually performs the conversion of a (phonetic/orthographic) representation into a target language
* ninai/base/interfaces.py: class BinominalCompoundCalque(Protocol): # actually reassembles the equivalents of two nouns (or an adjective and a noun)
* ninai/base/interfaces.py: class DerivationalCalqueFunction(Protocol): # actually reassembles the equivalents of a lexeme and an attached affix
** Functions satisfying these protocols perform the steps in the target language of assembling a candidate word or phrase from any found equivalents.
* ninai/renderers/mul.py: class FinalPunctuationFunction(Protocol):
** This simply represents a function that adds some punctuation to a phrase/clause.
=== 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] = {}
** ...
<references/>
== Missing Wikifunctions features for this type ==
@[[User:Mahir256|Mahir256]] What are the currently missing features of Wikifunctions that are necessary to actually implement this type? Which of these are fundamental, and which are just useful to port the code directly from Ninai? It could be useful to have them all listed in one place. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 17:36, 16 June 2026 (UTC)
*{{re|Dv103|Denny|DVrandecic (WMF)}} I have started assembling those above, where explanations are given for different classes' existence, and particular desiderata for implementation are given with a ❌ (any of which you're welcome to change to a ✅ if there is evidence that the thing described is possible). I leave it to you to decide which are 'fundamental' versus 'just useful'. [[User:Mahir256|Mahir256]] ([[User talk:Mahir256|talk]]) 22:58, 22 June 2026 (UTC)
*:A thing about sets: what is the issue in using {{Z|Z881}} to encode them? Wikifunctions already contains lists that are treated as sets. We already have functions to treat typed list as if they were sets (i.e., ignoring the order). Also consider that, under the hood, {{Z|Z883}} is just a wrapper for a {{Z|Z881}} of {{Z|Z882}}. [[User:Dv103|Dv103]] ([[User talk:Dv103|talk]]) 07:54, 23 June 2026 (UTC)
qzb4c3sf9upobllntgvsx12qdlvfhwp
User:Jsamwrites/Infoboxes
2
85638
285905
282774
2026-06-23T11:00:22Z
Jsamwrites
938
285905
wikitext
text/x-wiki
== Infoboxes ==
* {{Z|Z36327}}
* {{Z|Z36325}}
* {{Z|Z36323}}
* {{Z|Z36296}}
* {{Z|Z36290}}
* {{Z|Z36288}}
* {{Z|Z36333}}
* {{Z|Z36285}}
* {{Z|Z36282}}
* {{Z|Z36137}}
* {{Z|Z35993}}
* {{Z|Z35982}}
* {{Z|Z35976}}
* {{Z|Z35974}}
* {{Z|Z35972}}
* {{Z|Z35970}}
* {{Z|Z35968}}
* {{Z|Z36678}}
9vdl1aq8zdhbwcuomaat6q5v079fi94
Z36463
0
85925
285576
285565
2026-06-22T12:06:17Z
Denny
81
285576
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36463"
},
"Z2K2": {
"Z1K1": "Z4",
"Z4K1": "Z36463",
"Z4K2": [
"Z3",
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z3K2": "Z36463K1",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Features"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
{
"Z1K1": "Z3",
"Z3K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z3K2": "Z36463K2",
"Z3K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Contents"
}
]
},
"Z3K4": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
],
"Z4K3": "Z101",
"Z4K4": "Z36670",
"Z4K7": [
"Z46"
],
"Z4K8": [
"Z64"
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "(experimental) Syntactic option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Describes a single option in a Syntactic table, particularly the content (as a fragment) and a list of grammatical features this option is for"
}
]
}
}
kcqtslcle3wrg4kzffd0g6dsq9ayxmw
Z2048
0
85972
285670
284237
2026-06-22T16:57:36Z
Ameisenigel
44
de
285670
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z2048"
},
"Z2K2": {
"Z1K1": "Z60",
"Z60K1": "sd-deva"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Sindi (Devanāgarī script)"
},
{
"Z1K1": "Z11",
"Z11K1": "Z2048",
"Z11K2": "सिंधी"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Sindhi (Devanagari-Schrift)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
7j5uxe3743jqr8mqjbq7wmni8pdcsyu
Z36603
0
86141
285866
284983
2026-06-23T06:12:18Z
99of9
1622
in/on/at for location
285866
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36603"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z29010",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z26107",
"Z26107K1": {
"Z1K1": "Z18",
"Z18K1": "Z29010K5"
},
"Z26107K2": {
"Z1K1": "Z7",
"Z7K1": "Z22514",
"Z22514K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z29010K1"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z29010K5"
}
},
"is the",
{
"Z1K1": "Z7",
"Z7K1": "Z32556",
"Z32556K1": {
"Z1K1": "Z7",
"Z7K1": "Z27410",
"Z27410K1": {
"Z1K1": "Z7",
"Z7K1": "Z27327",
"Z27327K1": {
"Z1K1": "Z18",
"Z18K1": "Z29010K2"
},
"Z27327K2": {
"Z1K1": "Z6092",
"Z6092K1": "P5137"
},
"Z27327K3": {
"Z1K1": "Z18",
"Z18K1": "Z29010K5"
}
},
"Z27410K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q1817208"
}
]
},
"Z32556K2": {
"Z1K1": "Z7",
"Z7K1": "Z12203",
"Z12203K1": {
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z29010K2"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z29010K5"
}
}
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z29010K3"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z29010K5"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z30798",
"Z30798K1": {
"Z1K1": "Z18",
"Z18K1": "Z29010K4"
}
},
{
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z22131",
"Z22131K1": {
"Z1K1": "Z7",
"Z7K1": "Z32645",
"Z32645K1": {
"Z1K1": "Z7",
"Z7K1": "Z30120",
"Z30120K1": {
"Z1K1": "Z18",
"Z18K1": "Z29010K4"
},
"Z30120K2": [
"Z6030",
"Z6033",
"Z6035",
"Z6036"
],
"Z30120K3": [
"Z60",
"Z1002"
],
"Z30120K4": [
"Z6092",
{
"Z1K1": "Z6092",
"Z6092K1": "P31"
},
{
"Z1K1": "Z6092",
"Z6092K1": "P279"
}
]
}
}
},
"Z802K2": "the",
"Z802K3": ""
},
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z29010K4"
},
"Z36270K2": {
"Z1K1": "Z18",
"Z18K1": "Z29010K5"
}
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "superlative definition, English, composition 2"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
pir5kd0ldiozehfg4xjctbnnt037zon
Z36614
0
86152
285604
285003
2026-06-22T12:28:32Z
Denny
81
285604
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36614"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36613",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36613",
"Z36613K1": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "eye"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "eyes"
}
]
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z862",
"Z862K2": "Z1002"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "eye is English"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
3uk9dykwstui76nfd6q9i2oj1ha931a
Z36645
0
86186
285568
285085
2026-06-22T12:00:04Z
Denny
81
285568
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36645"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1430",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q1775415"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146233"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q145599"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146078"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänse"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146233"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänse"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q145599"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänsen"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146078"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänse"
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "German noun Gans table"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
1g0bic4i50h8p07cfn4ve5ou1y8ik4h
Z36656
0
86197
285569
285237
2026-06-22T12:02:01Z
Denny
81
Removed Z36657 from the approved list of implementations
285569
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36656"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36656K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "options"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36656K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragment"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20",
"Z36680",
"Z36681"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36656"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Create Syntactic option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Constructs a Syntactic option from a list of grammatical features when this option applies and the HTML fragment"
}
]
}
}
k1scjio84x184v7qnoe73d66eqimscq
285570
285569
2026-06-22T12:02:04Z
Denny
81
Removed Z36680 and Z36681 from the approved list of test cases
285570
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36656"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36656K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "options"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36656K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragment"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36656"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Create Syntactic option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Constructs a Syntactic option from a list of grammatical features when this option applies and the HTML fragment"
}
]
}
}
s32fvtecvnkcmhyadpk2xcsgzua5cbj
285571
285570
2026-06-22T12:02:25Z
Denny
81
285571
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36656"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36656K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "options"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z17K2": "Z36656K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragment"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36656"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Create Syntactic option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Constructs a Syntactic option from a list of grammatical features when this option applies and the HTML fragment"
}
]
}
}
crt3d4xwwzh9cb2rlc9mxgti9mats5z
285574
285571
2026-06-22T12:03:47Z
Denny
81
Added Z36680 and Z36681 to the approved list of test cases
285574
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36656"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36656K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "options"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z17K2": "Z36656K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragment"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20",
"Z36680",
"Z36681"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36656"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Create Syntactic option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Constructs a Syntactic option from a list of grammatical features when this option applies and the HTML fragment"
}
]
}
}
tw63s27v0bj50im2wmfmsst66z8he1n
285575
285574
2026-06-22T12:05:44Z
Denny
81
285575
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36656"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36656K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "options"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z17K2": "Z36656K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragments"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20",
"Z36680",
"Z36681"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36656"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Create Syntactic option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Constructs a Syntactic option from a list of grammatical features when this option applies and the HTML fragment"
}
]
}
}
3mu0jnryci2dc07cq7kec3n7gsp0h5t
285598
285575
2026-06-22T12:20:53Z
Denny
81
Added Z36657 to the approved list of implementations
285598
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36656"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36656K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "options"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z17K2": "Z36656K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragments"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20",
"Z36680",
"Z36681"
],
"Z8K4": [
"Z14",
"Z36657"
],
"Z8K5": "Z36656"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Create Syntactic option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Constructs a Syntactic option from a list of grammatical features when this option applies and the HTML fragment"
}
]
}
}
ofqp0nk59qaas4fcqcj5pbq8s3vw1wc
Z36659
0
86200
285602
285131
2026-06-22T12:24:28Z
Denny
81
285602
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36659"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36658",
"Z14K2": {
"Z1K1": "Z36463",
"Z36463K1": {
"Z1K1": "Z18",
"Z18K1": "Z36658K1"
},
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z18",
"Z18K1": "Z36658K2"
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "string to HTML fragment for string"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
bfbe4hq3hy7sxv6744j74loxyuuipj3
Z36661
0
86202
285600
285138
2026-06-22T12:22:47Z
Denny
81
285600
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36661"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36660",
"Z14K2": {
"Z1K1": "Z36463",
"Z36463K1": {
"Z1K1": "Z18",
"Z18K1": "Z36660K1"
},
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z14396",
"Z14396K1": {
"Z1K1": "Z18",
"Z18K1": "Z36660K2"
}
}
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "str to HTML of str of mono text"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
mxlmiofkbs7bcb7pwkv75mwkw3s1pzh
Z36666
0
86207
285586
285159
2026-06-22T12:11:47Z
Denny
81
Removed Z36669 from the approved list of implementations
285586
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36666"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36666K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36667",
"Z36668"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36666"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragment of option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the HTML fragment of a given Syntactic option"
}
]
}
}
s8lnisd73cnmnyt4pobgmrld0xzo5ji
285587
285586
2026-06-22T12:11:50Z
Denny
81
Removed Z36667 and Z36668 from the approved list of test cases
285587
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36666"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36666K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36666"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragment of option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the HTML fragment of a given Syntactic option"
}
]
}
}
saw0opdcef5zq7lvabuv9i8xlu09tvi
285588
285587
2026-06-22T12:12:08Z
Denny
81
285588
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36666"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36666K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36666"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragment of option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the HTML fragment of a given Syntactic option"
}
]
}
}
59pwu6zovw4pjjyaasdt3fxkyz5tphq
285592
285588
2026-06-22T12:15:13Z
Denny
81
Added Z36667 and Z36668 to the approved list of test cases
285592
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36666"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36666K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z8K3": [
"Z20",
"Z36667",
"Z36668"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36666"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragment of option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the HTML fragment of a given Syntactic option"
}
]
}
}
kw1l1lrf724p17nj60o3uoefjintc3k
285593
285592
2026-06-22T12:15:35Z
Denny
81
285593
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36666"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36666K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z8K3": [
"Z20",
"Z36667",
"Z36668"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36666"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragments of option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the HTML fragments of a given Syntactic option"
}
]
}
}
ogd5dauo7o6lng1vqcrwdj34krlkeww
285594
285593
2026-06-22T12:16:11Z
Denny
81
Added Z36669 to the approved list of implementations
285594
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36666"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36666K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z8K3": [
"Z20",
"Z36667",
"Z36668"
],
"Z8K4": [
"Z14",
"Z36669"
],
"Z8K5": "Z36666"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragments of option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the HTML fragments of a given Syntactic option"
}
]
}
}
5herxb44jo2c1zasr42lwviw0d7ngo6
Z36667
0
86208
285589
285155
2026-06-22T12:13:50Z
Denny
81
285589
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36667"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36666",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36666",
"Z36666K1": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "eye"
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z889",
"Z889K2": [
"Z89"
],
"Z889K3": "Z877"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "eye is eye"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
e172onuh930d37toc7ct4abhm3bf3b9
285590
285589
2026-06-22T12:14:10Z
Denny
81
285590
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36667"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36666",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36666",
"Z36666K1": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "eye"
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z889",
"Z889K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "eye"
}
],
"Z889K3": "Z877"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "eye is eye"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ldqvze214tca7co1nnh1s9scw50w2m8
Z36668
0
86209
285591
285156
2026-06-22T12:14:54Z
Denny
81
285591
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36668"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36666",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36666",
"Z36666K1": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146078"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänse"
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z889",
"Z889K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänse"
}
],
"Z889K3": "Z877"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Gänse is Gänse"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
hhl7obye9qgyouhkyomqa66j071cbdp
Z36670
0
86211
285577
285208
2026-06-22T12:06:37Z
Denny
81
Removed Z36677 from the approved list of implementations
285577
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36670"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36670K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "this"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36670K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "that"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z36671",
"Z36672",
"Z36673",
"Z36674",
"Z36675",
"Z36676"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36670"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Syntactic option equality"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"same Syntactic option",
"same option"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "whether two Syntactic options are the same. The order of the features in the option does not matter."
}
]
}
}
hdgoxea8jq5ef9oedkyjpx37j8p6zno
285578
285577
2026-06-22T12:06:40Z
Denny
81
Removed Z36671, Z36672, Z36673, Z36674, Z36675 and Z36676 from the approved list of test cases
285578
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36670"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36670K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "this"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36670K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "that"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36670"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Syntactic option equality"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"same Syntactic option",
"same option"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "whether two Syntactic options are the same. The order of the features in the option does not matter."
}
]
}
}
qfyc1l47okh4qxqy0dzm7etpgxrhys6
285585
285578
2026-06-22T12:11:14Z
Denny
81
285585
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36670"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36670K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "this"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36670K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "that"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36670"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Syntactic option equality"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"same Syntactic option",
"same option",
"equivalent option"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "whether two Syntactic options are the same. The order of the features in the option does not matter."
}
]
}
}
roxoy6d01fyve2fvr2pxrfefa2y5a4x
285596
285585
2026-06-22T12:20:01Z
Denny
81
Added Z36671, Z36672, Z36673, Z36674, Z36675 and Z36676 to the approved list of test cases
285596
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36670"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36670K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "this"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36670K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "that"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z36671",
"Z36672",
"Z36673",
"Z36674",
"Z36675",
"Z36676"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36670"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Syntactic option equality"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"same Syntactic option",
"same option",
"equivalent option"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "whether two Syntactic options are the same. The order of the features in the option does not matter."
}
]
}
}
564j2tuxtk71hohqf6bo2s8gbait1q9
285597
285596
2026-06-22T12:20:10Z
Denny
81
Added Z36677 to the approved list of implementations
285597
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36670"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36670K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "this"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36670K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "that"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z36671",
"Z36672",
"Z36673",
"Z36674",
"Z36675",
"Z36676"
],
"Z8K4": [
"Z14",
"Z36677"
],
"Z8K5": "Z36670"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Syntactic option equality"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"same Syntactic option",
"same option",
"equivalent option"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "whether two Syntactic options are the same. The order of the features in the option does not matter."
}
]
}
}
9wbnntdzmq2bl53k7i8u31p4xc0sphe
Z36671
0
86212
285579
285162
2026-06-22T12:07:21Z
Denny
81
285579
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36671"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36670",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K1": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "geese"
}
]
},
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "geese"
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "geese in plural"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
0le931287x9xmfgx2medt40fbi2zs9s
Z36672
0
86213
285580
285164
2026-06-22T12:07:48Z
Denny
81
285580
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36672"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36670",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K1": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "fish"
}
]
},
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "fish"
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fish singular ≠ fish plural"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
88gjia1g6wikekcivjczle681fa0o3v
Z36673
0
86214
285581
285166
2026-06-22T12:08:17Z
Denny
81
285581
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36673"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36670",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K1": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Haus"
}
]
},
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Haus"
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "different order of features"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
3kzxt3o14zhwi2yezhc4p5gyw9aj63e
Z36674
0
86215
285582
285210
2026-06-22T12:08:42Z
Denny
81
285582
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36674"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36670",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K1": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Haus"
}
]
},
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Haus"
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Haus (de) nominative singular"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
aobkt8o69v78henudcsff7otvzzhawr
Z36675
0
86216
285583
285170
2026-06-22T12:09:12Z
Denny
81
285583
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36675"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36670",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K1": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Haus"
}
]
},
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Häuser"
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "singular ≠ plural"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
j9q2b2jv9pcfw92eh47iwzvslv4nn0e
Z36676
0
86217
285584
285172
2026-06-22T12:09:35Z
Denny
81
285584
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36676"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36670",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K1": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Haus"
}
]
},
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146078"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Haus"
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "different cases, same form"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
00ntjpenhy6k5kq0y522hpwrj9a3xfd
Z36677
0
86218
285595
285196
2026-06-22T12:19:11Z
Denny
81
285595
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36677"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36670",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z889",
"Z889K1": {
"Z1K1": "Z7",
"Z7K1": "Z36666",
"Z36666K1": {
"Z1K1": "Z18",
"Z18K1": "Z36670K1"
}
},
"Z889K2": {
"Z1K1": "Z7",
"Z7K1": "Z36666",
"Z36666K1": {
"Z1K1": "Z18",
"Z18K1": "Z36670K2"
}
},
"Z889K3": "Z877"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z34270",
"Z34270K1": {
"Z1K1": "Z7",
"Z7K1": "Z36662",
"Z36662K1": {
"Z1K1": "Z18",
"Z18K1": "Z36670K1"
}
},
"Z34270K2": {
"Z1K1": "Z7",
"Z7K1": "Z36662",
"Z36662K1": {
"Z1K1": "Z18",
"Z18K1": "Z36670K2"
}
}
},
"Z802K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "if same fragment then set equality of features"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
pwexr7jbmmhs2a78k6pplsg07m1o2y7
Wikifunctions:Status updates/2026-06-19/de
4
86224
285698
285263
2026-06-22T17:41:10Z
Ameisenigel
44
Created page with "Diese Woche haben wir einige Verbesserungen daran vorgenommen, wie Artikel der Abstrakten Wikipedia und eingebettete Ausgaben von Wikifunctions wikiübergreifend dargestellt werden."
285698
wikitext
text/x-wiki
<languages/>
{{Wikifunctions updates
| prevlabel = Vorheriges Update
| prev = 2026-06-12
| nextlabel = Nächstes Update
| next =
}}
<span id="The_or_not_the,_this_is_(the?)_question"></span>
=== Der/die/das oder nicht, (das?) ist hier die Frage ===
Beim Freiwilligentreffen der letzten Woche gab es eine lebhafte Diskussion zu einer bestimmten Frage ([[:commons:File:Abstract Wikipedia Volunteer Corner 2026-06.webm|Aufzeichnung auf Commons verfügbar]]), eingebracht von [[User:Strobilomyces|Strobilomyces]]: Wenn man einen Satz der Form ''“X ist ein Y.”'' bilden möchte, erfordert das X manchmal einen bestimmten Artikel “der/die/das” und manchmal nicht. Hier sind einige Beispiele:
* ''Paris is a city.''
* ''The Seine is a river.''
* ''Lake Superior is a lake.''
* ''The Atlantic is an ocean.''
* ''The Eiffel Tower is a monument.''
* ''Westminster Abbey is a monument.''
Das Gleiche gilt für andere Sprachen, die über bestimmte Artikel verfügen, wie zum Beispiel Spanisch, Französisch oder Deutsch. Doch jede Sprache hat ihre eigenen Regeln für den Artikel. Hier ist ein Beispielsatz in vier Sprachen:
* ''Latin is a language.''
* ''El latín es un idioma.''
* ''Le latin est une langue.''
* ''Latein ist eine Sprache.''
Wie geht man mit dieser Art von Problem um?
Es gibt im Prinzip zwei extreme Lösungen, die – prinzipiell – beide funktionieren:
# Abbilden, ob das jeweilige Substantiv in den Lexemen von Wikidata den bestimmten Artikel erfordert.
# Eine intelligente Funktion implementieren, die ermittelt, ob ein Substantiv einen bestimmten Artikel benötigt.
Beide Ansätze bringen ihre eigenen Herausforderungen mit sich: Der Ansatz mit den Lexemen würde eine enorme Anzahl an Lexemen erfordern, da man Lexeme für jeden Fluss, jedes Denkmal ''etc.'' in jeder Sprache mit Artikeln bräuchte. Das wären sehr viele Lexeme. Ein intelligenter Funktionsansatz hingegen müsste womöglich eine Vielzahl von Sonderfällen bis hinunter auf die Ebene einzelner Wörter bewältigen, da alle Sprachen Unregelmäßigkeiten aufweisen, was die Implementierungen sehr umfangreich machen würde. Im Prinzip würden jedoch beide Ansätze funktionieren.
Eine weitere Lösung besteht, wie so oft, darin, einen Mittelweg zu wählen: Man verwendet eine Funktion, um die Antwort für jene Fälle zu ermitteln, die sich einfach mit einer Funktion ausdrücken lassen, und nutzt Lexeme für die Ausnahmen. Die Funktion würde dann stets zuerst nach einem Lexem suchen und die Funktion selbst nur dann als bestmögliche Annäherung anwenden, wenn kein Lexem gefunden wird.
Wo stehen wir derzeit? Wikidata hat über eine Eigenschaft, {{P|P5713}}, die tatsächlich dazu verwendet wird, anzugeben, dass bestimmte Bedeutungen einen bestimmten Artikel erfordern, z. B. für [[:d:Lexeme:L1012744#S1|den Indus]]. All diese Anwendungen auf Wikidata beschränken sich derzeit auf englische Lexeme. Zudem gibt es zwei Funktionen, {{Z|Z32645}} und {{Z|Z32935}}, die beide klären sollen, ob ein Datenobjekt einen bestimmten Artikel benötigt oder nicht; auch hier wiederum nur für Englisch. Wir verfügen also prinzipiell bereits über beide Teile des Puzzles, allerdings scheinen sie nicht in die tatsächliche Verwendung von Funktionen in der Abstrakten Wikipedia integriert zu sein, wie sich ''z. B.'' am [[:abstract:Q243|Artikel über den Eiffelturm]] zeigt.
Zu meiner Überraschung rief ich nach dem Freiwilligentreffen an diesem Montag [https://www.cse.chalmers.se/~aarne/ Aarne Ranta] an. Aarne ist der Entwickler von [[:en:Grammatical Framework (programming language)|Grammatical Framework]], einem der weltweit führenden Systeme zur symbolischen Generierung natürlicher Sprache. Er hat mich beraten und seine Arbeit war eine Inspiration für die Abstrakte Wikipedia. Ich sprach ihn also auf dieses spezielle Problem an, und seine erste Reaktion war ein Lachen und er bezeichnete es buchstäblich als eines der schwierigsten Rätsel, die sie je lösen mussten. Das machte mir Mut!
Ich möchte daher mit einem Aufruf zum Handeln schließen: Lasst uns uns gemeinsam und über verschiedene relevante Sprachen hinweg einen Moment lang auf dieses Thema konzentrieren, um zu zeigen, dass es sich um ein Problem handelt, das wir angehen und lösen können. Ich bin der Meinung, wenn wir die von Strobilomyces aufgeworfene Herausforderung meistern, die womöglich eine der schwierigsten Fragen für unseren Ansatz zur Generierung natürlicher Sprache darstellt, können wir der Machbarkeit des Gesamtkonzepts weitaus zuversichtlicher entgegensehen.
<span id="Recent_Changes_in_the_software"></span>
=== Letzte Änderungen an der Software ===
Diese Woche haben wir einige Verbesserungen daran vorgenommen, wie Artikel der Abstrakten Wikipedia und eingebettete Ausgaben von Wikifunctions wikiübergreifend dargestellt werden.
<div lang="en" dir="ltr" class="mw-content-ltr">
On Abstract Wikipedia, empty articles now appear as red links in local wikitext and rendered fragments, consistent with how Wikipedia treats pages that have not been written yet ([[:phab:T424310|T424310]]). And when looking up labels for Abstract Wikipedia items, the system now falls back to <code>mul</code> (language-agnostic label) when no language-specific label exists ([[:phab:T427027|T427027]]).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
For embedded Wikifunctions, we fixed a bug that meant previewing embedded Wikifunctions' HTML outputs didn't work except on Wikifunctions.org itself ([[:phab:T426024|T426024]]).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
And as part of wider MediaWiki language support work, we've added [[Z2048]] (<code>sd-deva</code>) as a new [[Z60|Language]], and assigned <code>sd-arab</code> to [[Z1191]], in addition to the existing <code>sd</code> code ([[:phab:T411110|T411110]], [[:phab:T416161|T416161]], [[:phab:T418886|T418886]], and [[:phab:T426332|T426332]]).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== News in Types: Syntactic tables… but not yet ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We invite you all to create new and discuss the existing [[Wikifunctions:Type proposals|Type proposals]] so we can keep on creating new Types. Thanks to all the community members contributing to the discussion and writing proposals, making it possible to extend the Wikifunctions to new domains!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Earlier this week we implemented the [[Wikifunctions:Type proposals/Syntactic table|Syntactic tables]] proposal, but it is still marked as experimental. So just be warned that it might be changed and even deprecated. On creation, the title exposed a bug with the UX for HTML fragments ([[:phab:T429379|T429379]]), which will be fixed next week. Until then, it's difficult to see the Type work. The experimental Type is here: {{Z|Z36462}}
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Initially, I was first planning to implement the proposals for [[Wikifunctions:Type proposals/Semantic unit|Semantic Unit]] and [[Wikifunctions:Type proposals/Syntactic unit|Syntactic Unit]] Types, but after conferring with [[User:Mahir256|Mahir256]], who proposed the Types, it became clear that a number of features on the backend are still missing, so that their implementation at this point in time wouldn’t be useful. More details were discussed in this week’s NLG SIG meeting (see the next section).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== NLG SIG recording ===
</div>
[[File:Abstract Wikipedia NLG SIG Meeting 2026-06.webm|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Recording of June 2026 NLG SIG meeting</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
This week’s [[Wikifunctions:NLG SIG|NLG SIG meeting]] was about discussing [[Special:MyLanguage/Wikifunctions:Status updates/2026-05-15#News in Types: way forward for natural language generation types|the proposed new NLG types]], and was particularly focused on the [[Wikifunctions:Type proposals/Semantic unit|Semantic Unit]] proposal. Thanks to [[User:Mahir256|Mahir]] for presenting the type, demoing tools, and so patiently answering questions. The [[:commons:File:Abstract Wikipedia NLG SIG Meeting 2026-06.webm|recording of the meeting is available on Commons]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Upcoming events ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Friday, 19 June 2026 at 18:30 local time, Denny will visit the [https://temporaerhaus.de/ temporärhaus] in Ulm, Germany, in order to introduce Wikidata, Wikifunctions, and Abstract Wikipedia, and discuss with the local community. Thanks to [[User:Hogü-456|Hogü-456]] for organizing the event!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[:wikimania:Special:MyLanguage/2026:Wikimania|Wikimania 2026]], the annual main conference for all things Wikimedia, will be in Paris, France from 21–25 July this year. [[User:Mahir256|Mahir256]] will organize a workshop on “[https://wikimedia.eventyay.com/wm/wikimania2026/talk/HYTQBF/ From Abstract Content to Concrete Text with Wikidata Lexemes]” on Friday, 16:00 local time, and we will be running an “[https://wikimedia.eventyay.com/wm/wikimania2026/talk/AKFG8R/ Abstract Wikipedia workshop: Let's create a multi-lingual article!]” on Saturday, 11:00 local time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Fresh Functions weekly: 43 new Functions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This week we had 43 new functions. Here is an incomplete list of functions with implementations and passing tests to get a taste of what functions have been created. Thanks everybody for contributing!
</div>
* {{Z|Z36185}}
* {{Z|Z36190}}
* {{Z|Z36193}}
* {{Z|Z36197}}
* {{Z|Z36200}}
* {{Z|Z36206}}
* {{Z|Z36209}}
* {{Z|Z36218}}
* {{Z|Z36225}}
* {{Z|Z36232}}
* {{Z|Z36234}}
* {{Z|Z36240}}
* {{Z|Z36243}}
* {{Z|Z36253}}
* {{Z|Z36266}}
* {{Z|Z36270}}
* {{Z|Z36282}}
* {{Z|Z36285}}
* {{Z|Z36288}}
* {{Z|Z36290}}
* {{Z|Z36296}}
* {{Z|Z36299}}
* {{Z|Z36310}}
* {{Z|Z36319}}
* {{Z|Z36323}}
* {{Z|Z36325}}
* {{Z|Z36327}}
* {{Z|Z36333}}
* {{Z|Z36337}}
* {{Z|Z36341}}
* {{Z|Z36348}}
* {{Z|Z36354}}
* {{Z|Z36357}}
* {{Z|Z36357}}
* {{Z|Z36365}}
* {{Z|Z36369}}
* {{Z|Z36371}}
<span lang="en" dir="ltr" class="mw-content-ltr">A [https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&orderby=latest complete list of all functions sorted by when they were created] is available.</span>
[[Category:Status updates{{#translation:}}|2026-06-19]]
7xt6i92j58qcxjppy9plmbbh3elcioh
285700
285698
2026-06-22T17:43:52Z
Ameisenigel
44
Created page with "In der Abstrakten Wikipedia erscheinen leere Artikel nun als Rotlinks im lokalen Wikitext sowie in gerenderten Fragmenten, übereinstimmend damit, wie Wikipedia mit noch nicht erstellten Seiten verfährt ($1). Zudem greift das System beim Abrufen von Bezeichnungen für Objekte der Abstrakten Wikipedia auf $3 (sprachunabhängige Bezeichnung) zurück, sofern keine sprachspezifische Bezeichnung vorliegt ($2)."
285700
wikitext
text/x-wiki
<languages/>
{{Wikifunctions updates
| prevlabel = Vorheriges Update
| prev = 2026-06-12
| nextlabel = Nächstes Update
| next =
}}
<span id="The_or_not_the,_this_is_(the?)_question"></span>
=== Der/die/das oder nicht, (das?) ist hier die Frage ===
Beim Freiwilligentreffen der letzten Woche gab es eine lebhafte Diskussion zu einer bestimmten Frage ([[:commons:File:Abstract Wikipedia Volunteer Corner 2026-06.webm|Aufzeichnung auf Commons verfügbar]]), eingebracht von [[User:Strobilomyces|Strobilomyces]]: Wenn man einen Satz der Form ''“X ist ein Y.”'' bilden möchte, erfordert das X manchmal einen bestimmten Artikel “der/die/das” und manchmal nicht. Hier sind einige Beispiele:
* ''Paris is a city.''
* ''The Seine is a river.''
* ''Lake Superior is a lake.''
* ''The Atlantic is an ocean.''
* ''The Eiffel Tower is a monument.''
* ''Westminster Abbey is a monument.''
Das Gleiche gilt für andere Sprachen, die über bestimmte Artikel verfügen, wie zum Beispiel Spanisch, Französisch oder Deutsch. Doch jede Sprache hat ihre eigenen Regeln für den Artikel. Hier ist ein Beispielsatz in vier Sprachen:
* ''Latin is a language.''
* ''El latín es un idioma.''
* ''Le latin est une langue.''
* ''Latein ist eine Sprache.''
Wie geht man mit dieser Art von Problem um?
Es gibt im Prinzip zwei extreme Lösungen, die – prinzipiell – beide funktionieren:
# Abbilden, ob das jeweilige Substantiv in den Lexemen von Wikidata den bestimmten Artikel erfordert.
# Eine intelligente Funktion implementieren, die ermittelt, ob ein Substantiv einen bestimmten Artikel benötigt.
Beide Ansätze bringen ihre eigenen Herausforderungen mit sich: Der Ansatz mit den Lexemen würde eine enorme Anzahl an Lexemen erfordern, da man Lexeme für jeden Fluss, jedes Denkmal ''etc.'' in jeder Sprache mit Artikeln bräuchte. Das wären sehr viele Lexeme. Ein intelligenter Funktionsansatz hingegen müsste womöglich eine Vielzahl von Sonderfällen bis hinunter auf die Ebene einzelner Wörter bewältigen, da alle Sprachen Unregelmäßigkeiten aufweisen, was die Implementierungen sehr umfangreich machen würde. Im Prinzip würden jedoch beide Ansätze funktionieren.
Eine weitere Lösung besteht, wie so oft, darin, einen Mittelweg zu wählen: Man verwendet eine Funktion, um die Antwort für jene Fälle zu ermitteln, die sich einfach mit einer Funktion ausdrücken lassen, und nutzt Lexeme für die Ausnahmen. Die Funktion würde dann stets zuerst nach einem Lexem suchen und die Funktion selbst nur dann als bestmögliche Annäherung anwenden, wenn kein Lexem gefunden wird.
Wo stehen wir derzeit? Wikidata hat über eine Eigenschaft, {{P|P5713}}, die tatsächlich dazu verwendet wird, anzugeben, dass bestimmte Bedeutungen einen bestimmten Artikel erfordern, z. B. für [[:d:Lexeme:L1012744#S1|den Indus]]. All diese Anwendungen auf Wikidata beschränken sich derzeit auf englische Lexeme. Zudem gibt es zwei Funktionen, {{Z|Z32645}} und {{Z|Z32935}}, die beide klären sollen, ob ein Datenobjekt einen bestimmten Artikel benötigt oder nicht; auch hier wiederum nur für Englisch. Wir verfügen also prinzipiell bereits über beide Teile des Puzzles, allerdings scheinen sie nicht in die tatsächliche Verwendung von Funktionen in der Abstrakten Wikipedia integriert zu sein, wie sich ''z. B.'' am [[:abstract:Q243|Artikel über den Eiffelturm]] zeigt.
Zu meiner Überraschung rief ich nach dem Freiwilligentreffen an diesem Montag [https://www.cse.chalmers.se/~aarne/ Aarne Ranta] an. Aarne ist der Entwickler von [[:en:Grammatical Framework (programming language)|Grammatical Framework]], einem der weltweit führenden Systeme zur symbolischen Generierung natürlicher Sprache. Er hat mich beraten und seine Arbeit war eine Inspiration für die Abstrakte Wikipedia. Ich sprach ihn also auf dieses spezielle Problem an, und seine erste Reaktion war ein Lachen und er bezeichnete es buchstäblich als eines der schwierigsten Rätsel, die sie je lösen mussten. Das machte mir Mut!
Ich möchte daher mit einem Aufruf zum Handeln schließen: Lasst uns uns gemeinsam und über verschiedene relevante Sprachen hinweg einen Moment lang auf dieses Thema konzentrieren, um zu zeigen, dass es sich um ein Problem handelt, das wir angehen und lösen können. Ich bin der Meinung, wenn wir die von Strobilomyces aufgeworfene Herausforderung meistern, die womöglich eine der schwierigsten Fragen für unseren Ansatz zur Generierung natürlicher Sprache darstellt, können wir der Machbarkeit des Gesamtkonzepts weitaus zuversichtlicher entgegensehen.
<span id="Recent_Changes_in_the_software"></span>
=== Letzte Änderungen an der Software ===
Diese Woche haben wir einige Verbesserungen daran vorgenommen, wie Artikel der Abstrakten Wikipedia und eingebettete Ausgaben von Wikifunctions wikiübergreifend dargestellt werden.
In der Abstrakten Wikipedia erscheinen leere Artikel nun als Rotlinks im lokalen Wikitext sowie in gerenderten Fragmenten, übereinstimmend damit, wie Wikipedia mit noch nicht erstellten Seiten verfährt ([[:phab:T424310|T424310]]). Zudem greift das System beim Abrufen von Bezeichnungen für Objekte der Abstrakten Wikipedia auf <code>mul</code> (sprachunabhängige Bezeichnung) zurück, sofern keine sprachspezifische Bezeichnung vorliegt ([[:phab:T427027|T427027]]).
<div lang="en" dir="ltr" class="mw-content-ltr">
For embedded Wikifunctions, we fixed a bug that meant previewing embedded Wikifunctions' HTML outputs didn't work except on Wikifunctions.org itself ([[:phab:T426024|T426024]]).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
And as part of wider MediaWiki language support work, we've added [[Z2048]] (<code>sd-deva</code>) as a new [[Z60|Language]], and assigned <code>sd-arab</code> to [[Z1191]], in addition to the existing <code>sd</code> code ([[:phab:T411110|T411110]], [[:phab:T416161|T416161]], [[:phab:T418886|T418886]], and [[:phab:T426332|T426332]]).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== News in Types: Syntactic tables… but not yet ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We invite you all to create new and discuss the existing [[Wikifunctions:Type proposals|Type proposals]] so we can keep on creating new Types. Thanks to all the community members contributing to the discussion and writing proposals, making it possible to extend the Wikifunctions to new domains!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Earlier this week we implemented the [[Wikifunctions:Type proposals/Syntactic table|Syntactic tables]] proposal, but it is still marked as experimental. So just be warned that it might be changed and even deprecated. On creation, the title exposed a bug with the UX for HTML fragments ([[:phab:T429379|T429379]]), which will be fixed next week. Until then, it's difficult to see the Type work. The experimental Type is here: {{Z|Z36462}}
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Initially, I was first planning to implement the proposals for [[Wikifunctions:Type proposals/Semantic unit|Semantic Unit]] and [[Wikifunctions:Type proposals/Syntactic unit|Syntactic Unit]] Types, but after conferring with [[User:Mahir256|Mahir256]], who proposed the Types, it became clear that a number of features on the backend are still missing, so that their implementation at this point in time wouldn’t be useful. More details were discussed in this week’s NLG SIG meeting (see the next section).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== NLG SIG recording ===
</div>
[[File:Abstract Wikipedia NLG SIG Meeting 2026-06.webm|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Recording of June 2026 NLG SIG meeting</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
This week’s [[Wikifunctions:NLG SIG|NLG SIG meeting]] was about discussing [[Special:MyLanguage/Wikifunctions:Status updates/2026-05-15#News in Types: way forward for natural language generation types|the proposed new NLG types]], and was particularly focused on the [[Wikifunctions:Type proposals/Semantic unit|Semantic Unit]] proposal. Thanks to [[User:Mahir256|Mahir]] for presenting the type, demoing tools, and so patiently answering questions. The [[:commons:File:Abstract Wikipedia NLG SIG Meeting 2026-06.webm|recording of the meeting is available on Commons]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Upcoming events ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Friday, 19 June 2026 at 18:30 local time, Denny will visit the [https://temporaerhaus.de/ temporärhaus] in Ulm, Germany, in order to introduce Wikidata, Wikifunctions, and Abstract Wikipedia, and discuss with the local community. Thanks to [[User:Hogü-456|Hogü-456]] for organizing the event!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[:wikimania:Special:MyLanguage/2026:Wikimania|Wikimania 2026]], the annual main conference for all things Wikimedia, will be in Paris, France from 21–25 July this year. [[User:Mahir256|Mahir256]] will organize a workshop on “[https://wikimedia.eventyay.com/wm/wikimania2026/talk/HYTQBF/ From Abstract Content to Concrete Text with Wikidata Lexemes]” on Friday, 16:00 local time, and we will be running an “[https://wikimedia.eventyay.com/wm/wikimania2026/talk/AKFG8R/ Abstract Wikipedia workshop: Let's create a multi-lingual article!]” on Saturday, 11:00 local time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Fresh Functions weekly: 43 new Functions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This week we had 43 new functions. Here is an incomplete list of functions with implementations and passing tests to get a taste of what functions have been created. Thanks everybody for contributing!
</div>
* {{Z|Z36185}}
* {{Z|Z36190}}
* {{Z|Z36193}}
* {{Z|Z36197}}
* {{Z|Z36200}}
* {{Z|Z36206}}
* {{Z|Z36209}}
* {{Z|Z36218}}
* {{Z|Z36225}}
* {{Z|Z36232}}
* {{Z|Z36234}}
* {{Z|Z36240}}
* {{Z|Z36243}}
* {{Z|Z36253}}
* {{Z|Z36266}}
* {{Z|Z36270}}
* {{Z|Z36282}}
* {{Z|Z36285}}
* {{Z|Z36288}}
* {{Z|Z36290}}
* {{Z|Z36296}}
* {{Z|Z36299}}
* {{Z|Z36310}}
* {{Z|Z36319}}
* {{Z|Z36323}}
* {{Z|Z36325}}
* {{Z|Z36327}}
* {{Z|Z36333}}
* {{Z|Z36337}}
* {{Z|Z36341}}
* {{Z|Z36348}}
* {{Z|Z36354}}
* {{Z|Z36357}}
* {{Z|Z36357}}
* {{Z|Z36365}}
* {{Z|Z36369}}
* {{Z|Z36371}}
<span lang="en" dir="ltr" class="mw-content-ltr">A [https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&orderby=latest complete list of all functions sorted by when they were created] is available.</span>
[[Category:Status updates{{#translation:}}|2026-06-19]]
31nlgv2ss2fx1fxp9ba7pmwr6emk0ud
285702
285700
2026-06-22T17:44:32Z
Ameisenigel
44
Created page with "Für eingebettete Wikifunctions haben wir einen Fehler behoben, der dazu führte, dass die Vorschau der HTML-Ausgabe eingebetteter Wikifunctions – außer auf Wikifunctions.org selbst – nicht funktionierte ($1)."
285702
wikitext
text/x-wiki
<languages/>
{{Wikifunctions updates
| prevlabel = Vorheriges Update
| prev = 2026-06-12
| nextlabel = Nächstes Update
| next =
}}
<span id="The_or_not_the,_this_is_(the?)_question"></span>
=== Der/die/das oder nicht, (das?) ist hier die Frage ===
Beim Freiwilligentreffen der letzten Woche gab es eine lebhafte Diskussion zu einer bestimmten Frage ([[:commons:File:Abstract Wikipedia Volunteer Corner 2026-06.webm|Aufzeichnung auf Commons verfügbar]]), eingebracht von [[User:Strobilomyces|Strobilomyces]]: Wenn man einen Satz der Form ''“X ist ein Y.”'' bilden möchte, erfordert das X manchmal einen bestimmten Artikel “der/die/das” und manchmal nicht. Hier sind einige Beispiele:
* ''Paris is a city.''
* ''The Seine is a river.''
* ''Lake Superior is a lake.''
* ''The Atlantic is an ocean.''
* ''The Eiffel Tower is a monument.''
* ''Westminster Abbey is a monument.''
Das Gleiche gilt für andere Sprachen, die über bestimmte Artikel verfügen, wie zum Beispiel Spanisch, Französisch oder Deutsch. Doch jede Sprache hat ihre eigenen Regeln für den Artikel. Hier ist ein Beispielsatz in vier Sprachen:
* ''Latin is a language.''
* ''El latín es un idioma.''
* ''Le latin est une langue.''
* ''Latein ist eine Sprache.''
Wie geht man mit dieser Art von Problem um?
Es gibt im Prinzip zwei extreme Lösungen, die – prinzipiell – beide funktionieren:
# Abbilden, ob das jeweilige Substantiv in den Lexemen von Wikidata den bestimmten Artikel erfordert.
# Eine intelligente Funktion implementieren, die ermittelt, ob ein Substantiv einen bestimmten Artikel benötigt.
Beide Ansätze bringen ihre eigenen Herausforderungen mit sich: Der Ansatz mit den Lexemen würde eine enorme Anzahl an Lexemen erfordern, da man Lexeme für jeden Fluss, jedes Denkmal ''etc.'' in jeder Sprache mit Artikeln bräuchte. Das wären sehr viele Lexeme. Ein intelligenter Funktionsansatz hingegen müsste womöglich eine Vielzahl von Sonderfällen bis hinunter auf die Ebene einzelner Wörter bewältigen, da alle Sprachen Unregelmäßigkeiten aufweisen, was die Implementierungen sehr umfangreich machen würde. Im Prinzip würden jedoch beide Ansätze funktionieren.
Eine weitere Lösung besteht, wie so oft, darin, einen Mittelweg zu wählen: Man verwendet eine Funktion, um die Antwort für jene Fälle zu ermitteln, die sich einfach mit einer Funktion ausdrücken lassen, und nutzt Lexeme für die Ausnahmen. Die Funktion würde dann stets zuerst nach einem Lexem suchen und die Funktion selbst nur dann als bestmögliche Annäherung anwenden, wenn kein Lexem gefunden wird.
Wo stehen wir derzeit? Wikidata hat über eine Eigenschaft, {{P|P5713}}, die tatsächlich dazu verwendet wird, anzugeben, dass bestimmte Bedeutungen einen bestimmten Artikel erfordern, z. B. für [[:d:Lexeme:L1012744#S1|den Indus]]. All diese Anwendungen auf Wikidata beschränken sich derzeit auf englische Lexeme. Zudem gibt es zwei Funktionen, {{Z|Z32645}} und {{Z|Z32935}}, die beide klären sollen, ob ein Datenobjekt einen bestimmten Artikel benötigt oder nicht; auch hier wiederum nur für Englisch. Wir verfügen also prinzipiell bereits über beide Teile des Puzzles, allerdings scheinen sie nicht in die tatsächliche Verwendung von Funktionen in der Abstrakten Wikipedia integriert zu sein, wie sich ''z. B.'' am [[:abstract:Q243|Artikel über den Eiffelturm]] zeigt.
Zu meiner Überraschung rief ich nach dem Freiwilligentreffen an diesem Montag [https://www.cse.chalmers.se/~aarne/ Aarne Ranta] an. Aarne ist der Entwickler von [[:en:Grammatical Framework (programming language)|Grammatical Framework]], einem der weltweit führenden Systeme zur symbolischen Generierung natürlicher Sprache. Er hat mich beraten und seine Arbeit war eine Inspiration für die Abstrakte Wikipedia. Ich sprach ihn also auf dieses spezielle Problem an, und seine erste Reaktion war ein Lachen und er bezeichnete es buchstäblich als eines der schwierigsten Rätsel, die sie je lösen mussten. Das machte mir Mut!
Ich möchte daher mit einem Aufruf zum Handeln schließen: Lasst uns uns gemeinsam und über verschiedene relevante Sprachen hinweg einen Moment lang auf dieses Thema konzentrieren, um zu zeigen, dass es sich um ein Problem handelt, das wir angehen und lösen können. Ich bin der Meinung, wenn wir die von Strobilomyces aufgeworfene Herausforderung meistern, die womöglich eine der schwierigsten Fragen für unseren Ansatz zur Generierung natürlicher Sprache darstellt, können wir der Machbarkeit des Gesamtkonzepts weitaus zuversichtlicher entgegensehen.
<span id="Recent_Changes_in_the_software"></span>
=== Letzte Änderungen an der Software ===
Diese Woche haben wir einige Verbesserungen daran vorgenommen, wie Artikel der Abstrakten Wikipedia und eingebettete Ausgaben von Wikifunctions wikiübergreifend dargestellt werden.
In der Abstrakten Wikipedia erscheinen leere Artikel nun als Rotlinks im lokalen Wikitext sowie in gerenderten Fragmenten, übereinstimmend damit, wie Wikipedia mit noch nicht erstellten Seiten verfährt ([[:phab:T424310|T424310]]). Zudem greift das System beim Abrufen von Bezeichnungen für Objekte der Abstrakten Wikipedia auf <code>mul</code> (sprachunabhängige Bezeichnung) zurück, sofern keine sprachspezifische Bezeichnung vorliegt ([[:phab:T427027|T427027]]).
Für eingebettete Wikifunctions haben wir einen Fehler behoben, der dazu führte, dass die Vorschau der HTML-Ausgabe eingebetteter Wikifunctions – außer auf Wikifunctions.org selbst – nicht funktionierte ([[:phab:T426024|T426024]]).
<div lang="en" dir="ltr" class="mw-content-ltr">
And as part of wider MediaWiki language support work, we've added [[Z2048]] (<code>sd-deva</code>) as a new [[Z60|Language]], and assigned <code>sd-arab</code> to [[Z1191]], in addition to the existing <code>sd</code> code ([[:phab:T411110|T411110]], [[:phab:T416161|T416161]], [[:phab:T418886|T418886]], and [[:phab:T426332|T426332]]).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== News in Types: Syntactic tables… but not yet ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We invite you all to create new and discuss the existing [[Wikifunctions:Type proposals|Type proposals]] so we can keep on creating new Types. Thanks to all the community members contributing to the discussion and writing proposals, making it possible to extend the Wikifunctions to new domains!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Earlier this week we implemented the [[Wikifunctions:Type proposals/Syntactic table|Syntactic tables]] proposal, but it is still marked as experimental. So just be warned that it might be changed and even deprecated. On creation, the title exposed a bug with the UX for HTML fragments ([[:phab:T429379|T429379]]), which will be fixed next week. Until then, it's difficult to see the Type work. The experimental Type is here: {{Z|Z36462}}
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Initially, I was first planning to implement the proposals for [[Wikifunctions:Type proposals/Semantic unit|Semantic Unit]] and [[Wikifunctions:Type proposals/Syntactic unit|Syntactic Unit]] Types, but after conferring with [[User:Mahir256|Mahir256]], who proposed the Types, it became clear that a number of features on the backend are still missing, so that their implementation at this point in time wouldn’t be useful. More details were discussed in this week’s NLG SIG meeting (see the next section).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== NLG SIG recording ===
</div>
[[File:Abstract Wikipedia NLG SIG Meeting 2026-06.webm|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Recording of June 2026 NLG SIG meeting</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
This week’s [[Wikifunctions:NLG SIG|NLG SIG meeting]] was about discussing [[Special:MyLanguage/Wikifunctions:Status updates/2026-05-15#News in Types: way forward for natural language generation types|the proposed new NLG types]], and was particularly focused on the [[Wikifunctions:Type proposals/Semantic unit|Semantic Unit]] proposal. Thanks to [[User:Mahir256|Mahir]] for presenting the type, demoing tools, and so patiently answering questions. The [[:commons:File:Abstract Wikipedia NLG SIG Meeting 2026-06.webm|recording of the meeting is available on Commons]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Upcoming events ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Friday, 19 June 2026 at 18:30 local time, Denny will visit the [https://temporaerhaus.de/ temporärhaus] in Ulm, Germany, in order to introduce Wikidata, Wikifunctions, and Abstract Wikipedia, and discuss with the local community. Thanks to [[User:Hogü-456|Hogü-456]] for organizing the event!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[:wikimania:Special:MyLanguage/2026:Wikimania|Wikimania 2026]], the annual main conference for all things Wikimedia, will be in Paris, France from 21–25 July this year. [[User:Mahir256|Mahir256]] will organize a workshop on “[https://wikimedia.eventyay.com/wm/wikimania2026/talk/HYTQBF/ From Abstract Content to Concrete Text with Wikidata Lexemes]” on Friday, 16:00 local time, and we will be running an “[https://wikimedia.eventyay.com/wm/wikimania2026/talk/AKFG8R/ Abstract Wikipedia workshop: Let's create a multi-lingual article!]” on Saturday, 11:00 local time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Fresh Functions weekly: 43 new Functions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This week we had 43 new functions. Here is an incomplete list of functions with implementations and passing tests to get a taste of what functions have been created. Thanks everybody for contributing!
</div>
* {{Z|Z36185}}
* {{Z|Z36190}}
* {{Z|Z36193}}
* {{Z|Z36197}}
* {{Z|Z36200}}
* {{Z|Z36206}}
* {{Z|Z36209}}
* {{Z|Z36218}}
* {{Z|Z36225}}
* {{Z|Z36232}}
* {{Z|Z36234}}
* {{Z|Z36240}}
* {{Z|Z36243}}
* {{Z|Z36253}}
* {{Z|Z36266}}
* {{Z|Z36270}}
* {{Z|Z36282}}
* {{Z|Z36285}}
* {{Z|Z36288}}
* {{Z|Z36290}}
* {{Z|Z36296}}
* {{Z|Z36299}}
* {{Z|Z36310}}
* {{Z|Z36319}}
* {{Z|Z36323}}
* {{Z|Z36325}}
* {{Z|Z36327}}
* {{Z|Z36333}}
* {{Z|Z36337}}
* {{Z|Z36341}}
* {{Z|Z36348}}
* {{Z|Z36354}}
* {{Z|Z36357}}
* {{Z|Z36357}}
* {{Z|Z36365}}
* {{Z|Z36369}}
* {{Z|Z36371}}
<span lang="en" dir="ltr" class="mw-content-ltr">A [https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&orderby=latest complete list of all functions sorted by when they were created] is available.</span>
[[Category:Status updates{{#translation:}}|2026-06-19]]
phsxn80al8uvu9rq7x4p06f5hy85qj3
285704
285702
2026-06-22T17:46:00Z
Ameisenigel
44
Created page with "Im Rahmen der allgemeinen Arbeiten zur Sprachunterstützung in MediaWiki haben wir $5 ($6) als neue [[$7|Sprache]] hinzugefügt und $8 an $9 zugewiesen, zusätzlich zu dem bereits vorhandenen Code $10 ($1, $2, $3 und $4)."
285704
wikitext
text/x-wiki
<languages/>
{{Wikifunctions updates
| prevlabel = Vorheriges Update
| prev = 2026-06-12
| nextlabel = Nächstes Update
| next =
}}
<span id="The_or_not_the,_this_is_(the?)_question"></span>
=== Der/die/das oder nicht, (das?) ist hier die Frage ===
Beim Freiwilligentreffen der letzten Woche gab es eine lebhafte Diskussion zu einer bestimmten Frage ([[:commons:File:Abstract Wikipedia Volunteer Corner 2026-06.webm|Aufzeichnung auf Commons verfügbar]]), eingebracht von [[User:Strobilomyces|Strobilomyces]]: Wenn man einen Satz der Form ''“X ist ein Y.”'' bilden möchte, erfordert das X manchmal einen bestimmten Artikel “der/die/das” und manchmal nicht. Hier sind einige Beispiele:
* ''Paris is a city.''
* ''The Seine is a river.''
* ''Lake Superior is a lake.''
* ''The Atlantic is an ocean.''
* ''The Eiffel Tower is a monument.''
* ''Westminster Abbey is a monument.''
Das Gleiche gilt für andere Sprachen, die über bestimmte Artikel verfügen, wie zum Beispiel Spanisch, Französisch oder Deutsch. Doch jede Sprache hat ihre eigenen Regeln für den Artikel. Hier ist ein Beispielsatz in vier Sprachen:
* ''Latin is a language.''
* ''El latín es un idioma.''
* ''Le latin est une langue.''
* ''Latein ist eine Sprache.''
Wie geht man mit dieser Art von Problem um?
Es gibt im Prinzip zwei extreme Lösungen, die – prinzipiell – beide funktionieren:
# Abbilden, ob das jeweilige Substantiv in den Lexemen von Wikidata den bestimmten Artikel erfordert.
# Eine intelligente Funktion implementieren, die ermittelt, ob ein Substantiv einen bestimmten Artikel benötigt.
Beide Ansätze bringen ihre eigenen Herausforderungen mit sich: Der Ansatz mit den Lexemen würde eine enorme Anzahl an Lexemen erfordern, da man Lexeme für jeden Fluss, jedes Denkmal ''etc.'' in jeder Sprache mit Artikeln bräuchte. Das wären sehr viele Lexeme. Ein intelligenter Funktionsansatz hingegen müsste womöglich eine Vielzahl von Sonderfällen bis hinunter auf die Ebene einzelner Wörter bewältigen, da alle Sprachen Unregelmäßigkeiten aufweisen, was die Implementierungen sehr umfangreich machen würde. Im Prinzip würden jedoch beide Ansätze funktionieren.
Eine weitere Lösung besteht, wie so oft, darin, einen Mittelweg zu wählen: Man verwendet eine Funktion, um die Antwort für jene Fälle zu ermitteln, die sich einfach mit einer Funktion ausdrücken lassen, und nutzt Lexeme für die Ausnahmen. Die Funktion würde dann stets zuerst nach einem Lexem suchen und die Funktion selbst nur dann als bestmögliche Annäherung anwenden, wenn kein Lexem gefunden wird.
Wo stehen wir derzeit? Wikidata hat über eine Eigenschaft, {{P|P5713}}, die tatsächlich dazu verwendet wird, anzugeben, dass bestimmte Bedeutungen einen bestimmten Artikel erfordern, z. B. für [[:d:Lexeme:L1012744#S1|den Indus]]. All diese Anwendungen auf Wikidata beschränken sich derzeit auf englische Lexeme. Zudem gibt es zwei Funktionen, {{Z|Z32645}} und {{Z|Z32935}}, die beide klären sollen, ob ein Datenobjekt einen bestimmten Artikel benötigt oder nicht; auch hier wiederum nur für Englisch. Wir verfügen also prinzipiell bereits über beide Teile des Puzzles, allerdings scheinen sie nicht in die tatsächliche Verwendung von Funktionen in der Abstrakten Wikipedia integriert zu sein, wie sich ''z. B.'' am [[:abstract:Q243|Artikel über den Eiffelturm]] zeigt.
Zu meiner Überraschung rief ich nach dem Freiwilligentreffen an diesem Montag [https://www.cse.chalmers.se/~aarne/ Aarne Ranta] an. Aarne ist der Entwickler von [[:en:Grammatical Framework (programming language)|Grammatical Framework]], einem der weltweit führenden Systeme zur symbolischen Generierung natürlicher Sprache. Er hat mich beraten und seine Arbeit war eine Inspiration für die Abstrakte Wikipedia. Ich sprach ihn also auf dieses spezielle Problem an, und seine erste Reaktion war ein Lachen und er bezeichnete es buchstäblich als eines der schwierigsten Rätsel, die sie je lösen mussten. Das machte mir Mut!
Ich möchte daher mit einem Aufruf zum Handeln schließen: Lasst uns uns gemeinsam und über verschiedene relevante Sprachen hinweg einen Moment lang auf dieses Thema konzentrieren, um zu zeigen, dass es sich um ein Problem handelt, das wir angehen und lösen können. Ich bin der Meinung, wenn wir die von Strobilomyces aufgeworfene Herausforderung meistern, die womöglich eine der schwierigsten Fragen für unseren Ansatz zur Generierung natürlicher Sprache darstellt, können wir der Machbarkeit des Gesamtkonzepts weitaus zuversichtlicher entgegensehen.
<span id="Recent_Changes_in_the_software"></span>
=== Letzte Änderungen an der Software ===
Diese Woche haben wir einige Verbesserungen daran vorgenommen, wie Artikel der Abstrakten Wikipedia und eingebettete Ausgaben von Wikifunctions wikiübergreifend dargestellt werden.
In der Abstrakten Wikipedia erscheinen leere Artikel nun als Rotlinks im lokalen Wikitext sowie in gerenderten Fragmenten, übereinstimmend damit, wie Wikipedia mit noch nicht erstellten Seiten verfährt ([[:phab:T424310|T424310]]). Zudem greift das System beim Abrufen von Bezeichnungen für Objekte der Abstrakten Wikipedia auf <code>mul</code> (sprachunabhängige Bezeichnung) zurück, sofern keine sprachspezifische Bezeichnung vorliegt ([[:phab:T427027|T427027]]).
Für eingebettete Wikifunctions haben wir einen Fehler behoben, der dazu führte, dass die Vorschau der HTML-Ausgabe eingebetteter Wikifunctions – außer auf Wikifunctions.org selbst – nicht funktionierte ([[:phab:T426024|T426024]]).
Im Rahmen der allgemeinen Arbeiten zur Sprachunterstützung in MediaWiki haben wir [[Z2048]] (<code>sd-deva</code>) als neue [[Z60|Sprache]] hinzugefügt und <code>sd-arab</code> an [[Z1191]] zugewiesen, zusätzlich zu dem bereits vorhandenen Code <code>sd</code> ([[:phab:T411110|T411110]], [[:phab:T416161|T416161]], [[:phab:T418886|T418886]] und [[:phab:T426332|T426332]]).
<div lang="en" dir="ltr" class="mw-content-ltr">
=== News in Types: Syntactic tables… but not yet ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
We invite you all to create new and discuss the existing [[Wikifunctions:Type proposals|Type proposals]] so we can keep on creating new Types. Thanks to all the community members contributing to the discussion and writing proposals, making it possible to extend the Wikifunctions to new domains!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Earlier this week we implemented the [[Wikifunctions:Type proposals/Syntactic table|Syntactic tables]] proposal, but it is still marked as experimental. So just be warned that it might be changed and even deprecated. On creation, the title exposed a bug with the UX for HTML fragments ([[:phab:T429379|T429379]]), which will be fixed next week. Until then, it's difficult to see the Type work. The experimental Type is here: {{Z|Z36462}}
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Initially, I was first planning to implement the proposals for [[Wikifunctions:Type proposals/Semantic unit|Semantic Unit]] and [[Wikifunctions:Type proposals/Syntactic unit|Syntactic Unit]] Types, but after conferring with [[User:Mahir256|Mahir256]], who proposed the Types, it became clear that a number of features on the backend are still missing, so that their implementation at this point in time wouldn’t be useful. More details were discussed in this week’s NLG SIG meeting (see the next section).
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== NLG SIG recording ===
</div>
[[File:Abstract Wikipedia NLG SIG Meeting 2026-06.webm|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Recording of June 2026 NLG SIG meeting</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
This week’s [[Wikifunctions:NLG SIG|NLG SIG meeting]] was about discussing [[Special:MyLanguage/Wikifunctions:Status updates/2026-05-15#News in Types: way forward for natural language generation types|the proposed new NLG types]], and was particularly focused on the [[Wikifunctions:Type proposals/Semantic unit|Semantic Unit]] proposal. Thanks to [[User:Mahir256|Mahir]] for presenting the type, demoing tools, and so patiently answering questions. The [[:commons:File:Abstract Wikipedia NLG SIG Meeting 2026-06.webm|recording of the meeting is available on Commons]].
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Upcoming events ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Friday, 19 June 2026 at 18:30 local time, Denny will visit the [https://temporaerhaus.de/ temporärhaus] in Ulm, Germany, in order to introduce Wikidata, Wikifunctions, and Abstract Wikipedia, and discuss with the local community. Thanks to [[User:Hogü-456|Hogü-456]] for organizing the event!
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[:wikimania:Special:MyLanguage/2026:Wikimania|Wikimania 2026]], the annual main conference for all things Wikimedia, will be in Paris, France from 21–25 July this year. [[User:Mahir256|Mahir256]] will organize a workshop on “[https://wikimedia.eventyay.com/wm/wikimania2026/talk/HYTQBF/ From Abstract Content to Concrete Text with Wikidata Lexemes]” on Friday, 16:00 local time, and we will be running an “[https://wikimedia.eventyay.com/wm/wikimania2026/talk/AKFG8R/ Abstract Wikipedia workshop: Let's create a multi-lingual article!]” on Saturday, 11:00 local time.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Fresh Functions weekly: 43 new Functions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
This week we had 43 new functions. Here is an incomplete list of functions with implementations and passing tests to get a taste of what functions have been created. Thanks everybody for contributing!
</div>
* {{Z|Z36185}}
* {{Z|Z36190}}
* {{Z|Z36193}}
* {{Z|Z36197}}
* {{Z|Z36200}}
* {{Z|Z36206}}
* {{Z|Z36209}}
* {{Z|Z36218}}
* {{Z|Z36225}}
* {{Z|Z36232}}
* {{Z|Z36234}}
* {{Z|Z36240}}
* {{Z|Z36243}}
* {{Z|Z36253}}
* {{Z|Z36266}}
* {{Z|Z36270}}
* {{Z|Z36282}}
* {{Z|Z36285}}
* {{Z|Z36288}}
* {{Z|Z36290}}
* {{Z|Z36296}}
* {{Z|Z36299}}
* {{Z|Z36310}}
* {{Z|Z36319}}
* {{Z|Z36323}}
* {{Z|Z36325}}
* {{Z|Z36327}}
* {{Z|Z36333}}
* {{Z|Z36337}}
* {{Z|Z36341}}
* {{Z|Z36348}}
* {{Z|Z36354}}
* {{Z|Z36357}}
* {{Z|Z36357}}
* {{Z|Z36365}}
* {{Z|Z36369}}
* {{Z|Z36371}}
<span lang="en" dir="ltr" class="mw-content-ltr">A [https://www.wikifunctions.org/wiki/Special:ListObjectsByType?type=Z8&orderby=latest complete list of all functions sorted by when they were created] is available.</span>
[[Category:Status updates{{#translation:}}|2026-06-19]]
7yih0k1xt6bo4a34udt66t81tnmfbh3
Z36680
0
86232
285572
285232
2026-06-22T12:03:05Z
Denny
81
285572
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36680"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36656",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36656",
"Z36656K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36656K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "child"
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "child"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "a child is a child"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
8oz25qafu6zndnfrfyi1tbsdo3gef9f
Z36681
0
86233
285573
285234
2026-06-22T12:03:38Z
Denny
81
285573
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36681"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36656",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36656",
"Z36656K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
}
],
"Z36656K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Kind"
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Kind"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Kind is Kind"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
no2l7kgs7egyu2qt3vmxpgd4ughz7sh
Z36698
0
86260
285599
285414
2026-06-22T12:22:07Z
Denny
81
285599
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36698"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36660",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36660",
"Z36660K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
}
],
"Z36660K2": {
"Z1K1": "Z11",
"Z11K1": "Z1430",
"Z11K2": "Sonnenschein"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Sonnenschein"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Sonnenschein (de)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
jjz1fd7cdon3clq0xjxc5saqmlknhe7
Z36704
0
86266
285601
285392
2026-06-22T12:24:00Z
Denny
81
285601
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36704"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36658",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36658",
"Z36658K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146233"
}
],
"Z36658K2": "Marienkäfers"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146233"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Marienkäfers"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Marienkäfers (de)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
4yrq4a1qqkgljjfynai48s30knqk3zy
Z36708
0
86270
285605
285406
2026-06-22T12:37:40Z
Denny
81
285605
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36708"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36650",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36650",
"Z36650K1": "Z36617"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z34270",
"Z34270K2": [
"Z1",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "goose"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "geese"
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "same order, untyped list"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ospbyidhp1m27my8b98w6sqfjc5z0n5
Z36710
0
86272
285606
285408
2026-06-22T12:38:15Z
Denny
81
285606
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36710"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36650",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36650",
"Z36650K1": "Z36617"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z34270",
"Z34270K2": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "goose"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "geese"
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "same order, typed list"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
q2vmlrjx8zyrmfgu6t8o8yxiwzhay2k
Z36712
0
86274
285607
285411
2026-06-22T12:38:49Z
Denny
81
285607
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36712"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36650",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36650",
"Z36650K1": "Z36617"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z34270",
"Z34270K2": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "geese"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "goose"
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "different order"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
79mk29tiyiz6t7asqmhxudane6yf2si
Z36713
0
86275
285880
285416
2026-06-23T06:46:10Z
99of9
1622
no space for %
285880
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36713"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25326",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z10000",
"Z10000K1": {
"Z1K1": "Z7",
"Z7K1": "Z25356",
"Z25356K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
},
"Z25356K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
},
"Z10000K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z25351",
"Z25351K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z802K2": "Z11853",
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z13381",
"Z13381K1": {
"Z1K1": "Z7",
"Z7K1": "Z25303",
"Z25303K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z13381K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q11229"
}
]
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z36697",
"Z36697K1": {
"Z1K1": "Z7",
"Z7K1": "Z25303",
"Z25303K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z36697K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z10000",
"Z10000K1": "Z36687",
"Z10000K2": {
"Z1K1": "Z7",
"Z7K1": "Z36697",
"Z36697K1": {
"Z1K1": "Z7",
"Z7K1": "Z25303",
"Z25303K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z36697K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
}
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "display quantity with digits and unit w fallbacks"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
hdyqowq96nl2hkh6lzjt337cuc4int5
285882
285880
2026-06-23T06:49:04Z
99of9
1622
angles also don't have spaces
285882
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36713"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25326",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z10000",
"Z10000K1": {
"Z1K1": "Z7",
"Z7K1": "Z25356",
"Z25356K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
},
"Z25356K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
},
"Z10000K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z25351",
"Z25351K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z802K2": "Z11853",
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z13381",
"Z13381K1": {
"Z1K1": "Z7",
"Z7K1": "Z25303",
"Z25303K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z13381K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q11229"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q28390"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q209426"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q829073"
}
]
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z36697",
"Z36697K1": {
"Z1K1": "Z7",
"Z7K1": "Z25303",
"Z25303K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z36697K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z10000",
"Z10000K1": "Z36687",
"Z10000K2": {
"Z1K1": "Z7",
"Z7K1": "Z36697",
"Z36697K1": {
"Z1K1": "Z7",
"Z7K1": "Z25303",
"Z25303K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z36697K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
}
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "display quantity with digits and unit w fallbacks"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ikd9ac1z6c91qk35rkmayh7axombyyx
285886
285882
2026-06-23T07:15:12Z
99of9
1622
rearrange to show currencies better
285886
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36713"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z25326",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z25351",
"Z25351K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z25356",
"Z25356K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
},
"Z25356K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z13381",
"Z13381K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q8142"
},
"Z13381K2": {
"Z1K1": "Z7",
"Z7K1": "Z29623",
"Z29623K1": {
"Z1K1": "Z7",
"Z7K1": "Z25303",
"Z25303K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
}
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z10000",
"Z10000K1": {
"Z1K1": "Z7",
"Z7K1": "Z36697",
"Z36697K1": {
"Z1K1": "Z7",
"Z7K1": "Z25303",
"Z25303K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z36697K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
},
"Z10000K2": {
"Z1K1": "Z7",
"Z7K1": "Z25356",
"Z25356K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
},
"Z25356K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z13381",
"Z13381K1": {
"Z1K1": "Z7",
"Z7K1": "Z25303",
"Z25303K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z13381K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q11229"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q28390"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q209426"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q829073"
}
]
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z10000",
"Z10000K1": {
"Z1K1": "Z7",
"Z7K1": "Z25356",
"Z25356K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
},
"Z25356K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
},
"Z10000K2": {
"Z1K1": "Z7",
"Z7K1": "Z36697",
"Z36697K1": {
"Z1K1": "Z7",
"Z7K1": "Z25303",
"Z25303K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z36697K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z15175",
"Z15175K1": {
"Z1K1": "Z7",
"Z7K1": "Z25356",
"Z25356K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
},
"Z25356K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
},
"Z15175K2": {
"Z1K1": "Z7",
"Z7K1": "Z36697",
"Z36697K1": {
"Z1K1": "Z7",
"Z7K1": "Z25303",
"Z25303K1": {
"Z1K1": "Z18",
"Z18K1": "Z25326K1"
}
},
"Z36697K2": {
"Z1K1": "Z18",
"Z18K1": "Z25326K2"
}
},
"Z15175K3": "Z36687"
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "display quantity with digits and unit w fallbacks"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
gmp2bhdh9k0nnrqksr5zsmgyg5j066r
Z36714
0
86276
285881
285418
2026-06-23T06:47:42Z
99of9
1622
non-breaking space
285881
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36714"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25326",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25326",
"Z25326K1": {
"Z1K1": "Z6010",
"Z6010K1": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "99"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z6010K2": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "99"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z6010K3": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "99"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z6010K4": {
"Z1K1": "Z6091",
"Z6091K1": "Q24564698"
}
},
"Z25326K2": "Z1147"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "99 Q24564698"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "99 y.o. [dz]: \"99 Q24564698\""
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
gp8abpjaw5vvt8g8q7iw4nne51m5poc
Z36715
0
86277
285609
285421
2026-06-22T12:41:38Z
Denny
81
285609
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36715"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36650",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36650",
"Z36650K1": "Z36645"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z34270",
"Z34270K2": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänse"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146233"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146233"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänse"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q145599"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q145599"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänsen"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146078"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146078"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänse"
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "different order of options and features"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
kd79o78kvl0ra5es0nzhf7id3ma5ozv
Z36716
0
86279
285608
285426
2026-06-22T12:40:13Z
Denny
81
285608
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36716"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36650",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36650",
"Z36650K1": "Z36645"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z34270",
"Z34270K2": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänse"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146233"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146233"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänse"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q145599"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q145599"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänsen"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146078"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146078"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänse"
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "different order of options, same order of features"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
1n2afgzbqvazojg6k4ul9zkzxmczkbm
Z36722
0
86285
285603
285451
2026-06-22T12:27:30Z
Denny
81
285603
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36722"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36608",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36608",
"Z36608K1": "Z1002",
"Z36608K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36608K3": [
"Z6091"
],
"Z36608K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "goose"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "geese"
}
]
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": "Z36617"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "rebuild goose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
nzczp4f12gxtcvmkqdxq1zcl2e7a5lc
Z36734
0
86298
285610
285476
2026-06-22T12:42:58Z
Denny
81
285610
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36734"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36733",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36733",
"Z36733K1": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q380057"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "quickly"
}
]
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "quickly has a single option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
h2t86czdr1ntrskv2ich4aygdj0wrah
Z36738
0
86302
285611
285484
2026-06-22T12:43:55Z
Denny
81
285611
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36738"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36737",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36737",
"Z36737K1": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q380057"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "quickly"
}
]
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "quickly has one option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ojvoyh92zliz3nfkltvb4or2o9zww38
Z36744
0
86308
285612
285497
2026-06-22T12:45:05Z
Denny
81
285612
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36744"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36743",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36743",
"Z36743K1": "Z36617"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "goose"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first option of goose is singular"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
8du4syr48m3yuq1v6cjinbs7668auvm
Z36745
0
86309
285613
285499
2026-06-22T12:45:23Z
Denny
81
285613
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36745"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36743",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36743",
"Z36743K1": "Z36645"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gans"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first option of Gans (de)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
p44suhq285ucivs26w0nm4g7peatvgs
Z36747
0
86311
285614
285517
2026-06-22T12:47:00Z
Denny
81
285614
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36747"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36747K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36748",
"Z36749"
],
"Z8K4": [
"Z14",
"Z36750"
],
"Z8K5": "Z36747"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first fragment"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the first fragment of the first Syntactic option of the table. Note that this is not always the basic option, but getting that instead would depend on the language and part of speech."
}
]
}
}
rssfyyq1rblfvoyp18bdaojokmkscao
Z36750
0
86314
285615
285515
2026-06-22T12:47:55Z
Denny
81
285615
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36750"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36747",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z36666",
"Z36666K1": {
"Z1K1": "Z7",
"Z7K1": "Z36743",
"Z36743K1": {
"Z1K1": "Z18",
"Z18K1": "Z36747K1"
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first fragment of first option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
jt7kcxok66ehmlub494gcgszkxw2ypj
Z36752
0
86316
285618
285522
2026-06-22T12:57:09Z
Denny
81
285618
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36752"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36607",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36607",
"Z36607K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L3534"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "eye"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "eyes"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "eye = L3534"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
rsi7gimmrsegczc9rpenhosdk1btz05
Z36753
0
86317
285619
285526
2026-06-22T12:58:18Z
Denny
81
285619
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36753"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36607",
"Z14K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z14396",
"Z14396K1": {
"Z1K1": "Z7",
"Z7K1": "Z19252",
"Z19252K1": {
"Z1K1": "Z18",
"Z18K1": "Z36607K1"
}
}
}
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z14396",
"Z14396K1": {
"Z1K1": "Z7",
"Z7K1": "Z19260",
"Z19260K1": {
"Z1K1": "Z18",
"Z18K1": "Z36607K1"
}
}
}
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "using singular and plural form functions"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
t4f5iey94ry98t510lcnj5w4o292h4o
Z36754
0
86318
285620
285538
2026-06-22T12:58:31Z
WikiLambda system
3
Updated the implementation list (see [[Help:Wikifunctions/Implementation_ordering_and_choosing|About implementation selection]])
285620
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36754"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6095",
"Z17K2": "Z36754K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "lexeme reference"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36755",
"Z36756"
],
"Z8K4": [
"Z14",
"Z36758",
"Z36757"
],
"Z8K5": "Z36754"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English noun from Lexeme reference"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "constructs a syntactic table for an English noun from an English noun Lexeme reference"
}
]
}
}
auuux30a0p6hf52z9f357umxsrbwkw4
285622
285620
2026-06-22T12:59:17Z
WikiLambda system
3
Updated the implementation list (see [[Help:Wikifunctions/Implementation_ordering_and_choosing|About implementation selection]])
285622
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36754"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6095",
"Z17K2": "Z36754K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "lexeme reference"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36755",
"Z36756"
],
"Z8K4": [
"Z14",
"Z36757",
"Z36758"
],
"Z8K5": "Z36754"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English noun from Lexeme reference"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "constructs a syntactic table for an English noun from an English noun Lexeme reference"
}
]
}
}
mnudvkanwciwlxiwdt3fwvc7n2a6upz
Z36756
0
86320
285621
285533
2026-06-22T12:59:12Z
Denny
81
285621
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36756"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36754",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36754",
"Z36754K1": {
"Z1K1": "Z6095",
"Z6095K1": "L4905"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "islands"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "island"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "from reference for island"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
3mfbeanafhec36fblfquvax2k9pc4jn
Z36758
0
86322
285623
285537
2026-06-22T13:00:12Z
Denny
81
285623
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36758"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36754",
"Z14K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z14396",
"Z14396K1": {
"Z1K1": "Z7",
"Z7K1": "Z19252",
"Z19252K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z18",
"Z18K1": "Z36754K1"
}
}
}
}
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z14396",
"Z14396K1": {
"Z1K1": "Z7",
"Z7K1": "Z19260",
"Z19260K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z18",
"Z18K1": "Z36754K1"
}
}
}
}
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "singular and plural functions with fetches"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
e3l1eeu27bsym28lv735yonl5955ukj
Z36761
0
86325
285616
285543
2026-06-22T12:54:49Z
Denny
81
285616
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36761"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36759",
"Z14K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z18",
"Z18K1": "Z36759K1"
}
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z18",
"Z18K1": "Z36759K2"
}
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
p2oa2yzxh83ckvndfhntkhtedhrzsk8
Z36764
0
86328
285617
285549
2026-06-22T12:56:14Z
Denny
81
285617
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36764"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36762",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36762",
"Z36762K1": "baby"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "baby"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "babies"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "baby vs local baby"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
5c9qn3uxwrko0sry4eb8kqsmi4pfs7n
Z36770
0
86334
285625
2026-06-22T13:07:03Z
Denny
81
285625
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36770"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36770K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36770"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is valid English noun table"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
arjkqwu3ifuk9nx7ransrniwvwvtw1m
285632
285625
2026-06-22T13:12:58Z
Denny
81
Added Z36771, Z36772, Z36773, Z36774, Z36775 and Z36776 to the approved list of test cases
285632
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36770"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36770K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z36771",
"Z36772",
"Z36773",
"Z36774",
"Z36775",
"Z36776"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36770"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is valid English noun table"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
q2xvyxujrtrquirssdpcdea4o78m44u
285634
285632
2026-06-22T13:25:34Z
Denny
81
Added Z36777 to the approved list of implementations
285634
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36770"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36770K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z36771",
"Z36772",
"Z36773",
"Z36774",
"Z36775",
"Z36776"
],
"Z8K4": [
"Z14",
"Z36777"
],
"Z8K5": "Z36770"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is valid English noun table"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
szfpe1jfiyb0skm8bddqst4gsrlenq0
285638
285634
2026-06-22T13:27:20Z
Denny
81
285638
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36770"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36770K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
}
],
"Z8K2": "Z40",
"Z8K3": [
"Z20",
"Z36771",
"Z36772",
"Z36773",
"Z36774",
"Z36775",
"Z36776"
],
"Z8K4": [
"Z14",
"Z36777"
],
"Z8K5": "Z36770"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is valid English noun table"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "checks if it has forms for sg and pl, no inherent, right language and pos, and ex. 1 fragment/form"
}
]
}
}
ge83wa9e2mfon78b6sudgbal3h8zi1a
Z36771
0
86335
285626
2026-06-22T13:07:42Z
Denny
81
285626
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36771"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36770",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36770",
"Z36770K1": "Z36617"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "goose is valid"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
1zfuur09ys65dgnm3oarjwg4pjdlth3
Z36772
0
86336
285627
2026-06-22T13:08:30Z
Denny
81
285627
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36772"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36770",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36770",
"Z36770K1": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q34698"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "quickly"
}
]
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjective is not a noun"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
dkg2qodwy5j8z27bcpq8nydvhjwsxud
Z36773
0
86337
285628
2026-06-22T13:09:03Z
Denny
81
285628
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36773"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36770",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36770",
"Z36770K1": "Z36645"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "German nouns are not English"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
8xz2bik1xstk7rw5w42bksrukl5cpg3
Z36774
0
86338
285629
2026-06-22T13:10:31Z
Denny
81
285629
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36774"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36770",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36770",
"Z36770K1": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q604984"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Paris"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Parises"
}
]
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "nouns have no inherent features in English"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
hfd06p88d8xzoaqq79ecspffjjbgnni
Z36775
0
86339
285630
2026-06-22T13:11:22Z
Denny
81
285630
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36775"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36770",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36770",
"Z36770K1": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "universe"
}
]
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English noun have two options"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
3i4fx52myb7ibcj66ubvhwwma0tp0sw
Z36776
0
86340
285631
2026-06-22T13:12:42Z
Denny
81
285631
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36776"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36770",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36770",
"Z36770K1": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "album"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q10350570"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "albums"
}
]
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z844",
"Z844K2": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "wrong feature on second option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ag4iin8d90qtxtho1gimxkeyh6nn05t
Z36777
0
86341
285633
2026-06-22T13:25:06Z
Denny
81
285633
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36777"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36770",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z19316",
"Z19316K1": {
"Z1K1": "Z7",
"Z7K1": "Z36636",
"Z36636K1": {
"Z1K1": "Z18",
"Z18K1": "Z36770K1"
}
},
"Z19316K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z14326",
"Z14326K1": {
"Z1K1": "Z7",
"Z7K1": "Z36613",
"Z36613K1": {
"Z1K1": "Z18",
"Z18K1": "Z36770K1"
}
},
"Z14326K2": "Z1002"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z813",
"Z813K1": {
"Z1K1": "Z7",
"Z7K1": "Z36644",
"Z36644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36770K1"
}
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z13522",
"Z13522K1": {
"Z1K1": "Z7",
"Z7K1": "Z36652",
"Z36652K1": {
"Z1K1": "Z18",
"Z18K1": "Z36770K1"
}
},
"Z13522K2": {
"Z1K1": "Z13518",
"Z13518K1": "2"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z889",
"Z889K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z889K2": {
"Z1K1": "Z7",
"Z7K1": "Z36662",
"Z36662K1": {
"Z1K1": "Z7",
"Z7K1": "Z36743",
"Z36743K1": {
"Z1K1": "Z18",
"Z18K1": "Z36770K1"
}
}
},
"Z889K3": "Z19316"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z889",
"Z889K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z889K2": {
"Z1K1": "Z7",
"Z7K1": "Z36662",
"Z36662K1": {
"Z1K1": "Z7",
"Z7K1": "Z29446",
"Z29446K1": {
"Z1K1": "Z7",
"Z7K1": "Z36650",
"Z36650K1": {
"Z1K1": "Z18",
"Z18K1": "Z36770K1"
}
}
}
},
"Z889K3": "Z19316"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z30164",
"Z30164K1": {
"Z1K1": "Z7",
"Z7K1": "Z36666",
"Z36666K1": {
"Z1K1": "Z7",
"Z7K1": "Z36743",
"Z36743K1": {
"Z1K1": "Z18",
"Z18K1": "Z36770K1"
}
}
},
"Z30164K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z30164",
"Z30164K1": {
"Z1K1": "Z7",
"Z7K1": "Z36666",
"Z36666K1": {
"Z1K1": "Z7",
"Z7K1": "Z29446",
"Z29446K1": {
"Z1K1": "Z7",
"Z7K1": "Z36650",
"Z36650K1": {
"Z1K1": "Z18",
"Z18K1": "Z36770K1"
}
}
}
},
"Z30164K2": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z802K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z802K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z802K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z802K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z802K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z802K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z802K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "deep if else with all conditions"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
bh4mg5264fmfdyr6kfutqvmte0ok1eb
Z36778
0
86342
285641
2026-06-22T14:37:54Z
Strobilomyces
193
created function
285641
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36778"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjective"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z36778K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z16927",
"Z17K2": "Z36778K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36778"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "superlative definition, in Spanish"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
}
]
}
}
kpoh4ocjiogoga6ca7fsh5jbvyldl0n
285642
285641
2026-06-22T14:41:17Z
Strobilomyces
193
corrected type of last parameter
285642
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36778"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjective"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z36778K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36778K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36778"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "superlative definition, in Spanish"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
}
]
}
}
6osmhi4zqwajvstmxw7mgw9xjxgfok8
285643
285642
2026-06-22T14:54:25Z
Strobilomyces
193
add Spanish
285643
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36778"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "entidad"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjective"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "adjetivo"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "clase"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z36778K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "ubicación"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36778K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "idioma"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36778"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "superlative definition, in Spanish"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "definición de un superlativo, en español"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
}
]
}
}
5pak9ywsyh79o00eqfzi6yfphvwea1s
285647
285643
2026-06-22T16:25:42Z
Strobilomyces
193
Added Z36779 to the approved list of test cases
285647
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36778"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "entidad"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjective"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "adjetivo"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "clase"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z36778K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "ubicación"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36778K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "idioma"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z36779"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36778"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "superlative definition, in Spanish"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "definición de un superlativo, en español"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
}
]
}
}
dxsq2642ykyebmku2w8apdwk22s1wfj
285648
285647
2026-06-22T16:25:46Z
Strobilomyces
193
Added Z36780 to the approved list of implementations
285648
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36778"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "entidad"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjective"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "adjetivo"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "clase"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z36778K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "ubicación"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36778K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "idioma"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z36779"
],
"Z8K4": [
"Z14",
"Z36780"
],
"Z8K5": "Z36778"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "superlative definition, in Spanish"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "definición de un superlativo, en español"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
}
]
}
}
ofyipylehrfdjruycgl5epwqky0na9n
285649
285648
2026-06-22T16:32:18Z
Strobilomyces
193
Removed Z36780 from the approved list of implementations
285649
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36778"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "entidad"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjective"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "adjetivo"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "clase"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z36778K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "ubicación"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36778K5",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "idioma"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z36779"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36778"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "superlative definition, in Spanish"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "definición de un superlativo, en español"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
}
]
}
}
dxsq2642ykyebmku2w8apdwk22s1wfj
285650
285649
2026-06-22T16:32:58Z
Strobilomyces
193
removed unnecessary argument
285650
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36778"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "entidad"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjective"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "adjetivo"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "clase"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z36778K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "ubicación"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36778"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "superlative definition, in Spanish"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "definición de un superlativo, en español"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
}
]
}
}
jr7z86u55wp94i33ug7k6v68o0dq7w7
285651
285650
2026-06-22T16:34:17Z
Strobilomyces
193
Added Z36780 to the approved list of implementations
285651
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36778"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "entidad"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjective"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "adjetivo"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "clase"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z36778K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "ubicación"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36780"
],
"Z8K5": "Z36778"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "superlative definition, in Spanish"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "definición de un superlativo, en español"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
}
]
}
}
if3k1zukbqqlzueu8urzanai7nk0c0o
285652
285651
2026-06-22T16:34:21Z
Strobilomyces
193
Added Z36779 to the approved list of test cases
285652
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36778"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "entity"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "entidad"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "adjective"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "adjetivo"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36778K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "class"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "clase"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6005",
"Z17K2": "Z36778K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "location"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "ubicación"
}
]
}
}
],
"Z8K2": "Z11",
"Z8K3": [
"Z20",
"Z36779"
],
"Z8K4": [
"Z14",
"Z36780"
],
"Z8K5": "Z36778"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "superlative definition, in Spanish"
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "definición de un superlativo, en español"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
},
{
"Z1K1": "Z11",
"Z11K1": "Z1003",
"Z11K2": "Example: Australia es el continente más plano de la tierra."
}
]
}
}
4j0fjfv78248pc3oyktsptkza9kvbg0
Z36779
0
86343
285644
2026-06-22T15:04:18Z
Strobilomyces
193
created test
285644
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36779"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36778",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36778",
"Z36778K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36778K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q18389975"
},
"Z36778K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q5107"
},
"Z36778K4": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L21961"
}
},
"Z36778K5": "Z1003"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z14392",
"Z14392K2": {
"Z1K1": "Z11",
"Z11K1": {
"Z1K1": "Z9",
"Z9K1": ""
},
"Z11K2": "Australia es el continente más plano de la tierra."
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Australia es el continente más plano de la tierra"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
9tox8ko8s7iwgfdka2ydfunou5p9xcg
Z36780
0
86344
285645
2026-06-22T16:14:09Z
Strobilomyces
193
created
285645
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36780"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36778",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z26107",
"Z26107K1": "Z1003",
"Z26107K2": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K1"
},
"Z36270K2": "Z1003"
},
" es ",
{
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z20643",
"Z20643K1": {
"Z1K1": "Z7",
"Z7K1": "Z22696",
"Z22696K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K3"
},
"Z22696K2": "Z1003"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"la ",
{
"Z1K1": "Z7",
"Z7K1": "Z19241",
"Z19241K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K3"
},
"Z19241K2": {
"Z1K1": "Z7",
"Z7K1": "Z15142",
"Z15142K1": [
"Z1",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
]
}
},
" más ",
{
"Z1K1": "Z7",
"Z7K1": "Z19241",
"Z19241K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K2"
},
"Z19241K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q1775415"
}
]
}
]
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"el ",
{
"Z1K1": "Z7",
"Z7K1": "Z19241",
"Z19241K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K3"
},
"Z19241K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
]
},
" más ",
{
"Z1K1": "Z7",
"Z7K1": "Z19241",
"Z19241K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K2"
},
"Z19241K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q499327"
}
]
}
]
}
},
" en ",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K4"
},
"Z36270K2": "Z1003"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
24tpazewbfuwub8j4e5j09kcmc1td2t
285646
285645
2026-06-22T16:16:39Z
Strobilomyces
193
+ en label
285646
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36780"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36778",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z26107",
"Z26107K1": "Z1003",
"Z26107K2": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K1"
},
"Z36270K2": "Z1003"
},
" es ",
{
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z20643",
"Z20643K1": {
"Z1K1": "Z7",
"Z7K1": "Z22696",
"Z22696K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K3"
},
"Z22696K2": "Z1003"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"la ",
{
"Z1K1": "Z7",
"Z7K1": "Z19241",
"Z19241K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K3"
},
"Z19241K2": {
"Z1K1": "Z7",
"Z7K1": "Z15142",
"Z15142K1": [
"Z1",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
]
}
},
" más ",
{
"Z1K1": "Z7",
"Z7K1": "Z19241",
"Z19241K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K2"
},
"Z19241K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q1775415"
}
]
}
]
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"el ",
{
"Z1K1": "Z7",
"Z7K1": "Z19241",
"Z19241K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K3"
},
"Z19241K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
]
},
" más ",
{
"Z1K1": "Z7",
"Z7K1": "Z19241",
"Z19241K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K2"
},
"Z19241K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q499327"
}
]
}
]
}
},
" en ",
{
"Z1K1": "Z7",
"Z7K1": "Z36270",
"Z36270K1": {
"Z1K1": "Z18",
"Z18K1": "Z36778K4"
},
"Z36270K2": "Z1003"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "superlative definition, in Spanish, composition"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Example: Australia es el continente más plano de la tierra"
}
]
}
}
73xexavi8zxpweckn39hmvxo32uniwk
Z36781
0
86345
285654
2026-06-22T16:47:35Z
Denny
81
285654
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36781"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q53997857"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "a"
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English indefinite singular determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\"a\" or \"an\""
}
]
}
}
m390hgouoe77p2clm8xm7gtkuzwpmxr
285655
285654
2026-06-22T16:47:50Z
Denny
81
285655
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36781"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q53997857"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "a"
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English indefinite singular determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"a",
"an"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\"a\" or \"an\""
}
]
}
}
f0jjyed3g98ax6iw3206uao5a9j5nqn
285680
285655
2026-06-22T17:12:02Z
Denny
81
285680
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36781"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "a"
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English indefinite singular determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"a",
"an"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\"a\" or \"an\""
}
]
}
}
d8wsuvrg1eho3n8s3z4wj3wpvaoeikc
Talk:Z35273
1
86346
285657
2026-06-22T16:48:57Z
So9q
3791
/* String as output? */ new section
285657
wikitext
text/x-wiki
== String as output? ==
See https://www.wikifunctions.org/wiki/Wikifunctions:Type_proposals/Geometrical_point
One of the commenters there mention using rational numbers instead. So a new rational point proposal might be a good idea? [[User:So9q|So9q]] ([[User talk:So9q|talk]]) 16:48, 22 June 2026 (UTC)
n7fmon99bg9liusjibgxkfbtpymrhnt
Z36782
0
86347
285658
2026-06-22T16:50:17Z
Denny
81
285658
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36782"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q53997857"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": ""
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English indefinite plural determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "That one isn't actually lexicalized in English."
}
]
}
}
6bdcegas86gjhpyasi49uxwndiesio7
285660
285658
2026-06-22T16:51:19Z
Denny
81
285660
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36782"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q53997857"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": ""
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English indefinite plural determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"plural a"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "That one isn't actually lexicalized in English."
}
]
}
}
bstv0mu05k4pgyvg2f03riqdcklb5uo
285681
285660
2026-06-22T17:12:27Z
Denny
81
285681
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36782"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": ""
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English indefinite plural determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"plural a"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "That one isn't actually lexicalized in English."
}
]
}
}
ahlcprjdkspji1vdjxqzm6xxefa05p0
Z36783
0
86348
285661
2026-06-22T16:51:52Z
Denny
81
285661
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36783"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q53997851"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "the"
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English definite singular determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"the"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\"the\""
}
]
}
}
7977apws0icuhi8fwaunkq6cpvqnxyh
285682
285661
2026-06-22T17:12:45Z
Denny
81
285682
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36783"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "the"
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English definite singular determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"the"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\"the\""
}
]
}
}
04z4vdcpy0pvkppy25a4otj0o9wu098
Z36784
0
86349
285663
2026-06-22T16:53:15Z
Denny
81
285663
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36784"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": {
"Z1K1": "Z9",
"Z9K1": ""
},
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": ""
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q53997851"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "the"
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English definite plural determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"plural the"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\"the\", but for plural (e.g. \"the stars\")"
}
]
}
}
2oflcc4l8bs1xuythzebmbfpyssvgbr
285664
285663
2026-06-22T16:53:35Z
Denny
81
285664
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36784"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q53997851"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "the"
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English definite plural determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"plural the"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\"the\", but for plural (e.g. \"the stars\")"
}
]
}
}
qirf0odyowuti3pl0x6jt9c9dn9m3xh
285683
285664
2026-06-22T17:13:03Z
Denny
81
285683
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36784"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "the"
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English definite plural determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"plural the"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\"the\", but for plural (e.g. \"the stars\")"
}
]
}
}
69dnb53xw4pd2z5pjwx240bcjfd4wwm
Z36785
0
86350
285665
2026-06-22T16:55:24Z
Denny
81
285665
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36785"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z28516",
"Z17K2": "Z36785K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "definiteness"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z26934",
"Z17K2": "Z36785K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36785"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English grammatic determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a determiner based on definiteness and number."
}
]
}
}
mcrn6622pf0yyx7rvqxfnpeyx00lma4
285667
285665
2026-06-22T16:56:23Z
Denny
81
Added Z36786 to the approved list of test cases
285667
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36785"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z28516",
"Z17K2": "Z36785K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "definiteness"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z26934",
"Z17K2": "Z36785K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36786"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36785"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English grammatic determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a determiner based on definiteness and number."
}
]
}
}
pp5d7q8z5s54lw4n74y7y8diukpaz22
285669
285667
2026-06-22T16:57:09Z
Denny
81
Added Z36787 to the approved list of test cases
285669
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36785"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z28516",
"Z17K2": "Z36785K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "definiteness"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z26934",
"Z17K2": "Z36785K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36786",
"Z36787"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36785"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English grammatic determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a determiner based on definiteness and number."
}
]
}
}
5rwfkn49pftffzpovk2qbmm07m9t3kv
285672
285669
2026-06-22T16:57:49Z
Denny
81
Added Z36788 to the approved list of test cases
285672
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36785"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z28516",
"Z17K2": "Z36785K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "definiteness"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z26934",
"Z17K2": "Z36785K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36786",
"Z36787",
"Z36788"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36785"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English grammatic determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a determiner based on definiteness and number."
}
]
}
}
kq46x4wls9wxzpwbes9t2fsq05pheph
285674
285672
2026-06-22T16:58:25Z
Denny
81
Added Z36789 to the approved list of test cases
285674
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36785"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z28516",
"Z17K2": "Z36785K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "definiteness"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z26934",
"Z17K2": "Z36785K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36786",
"Z36787",
"Z36788",
"Z36789"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36785"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English grammatic determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a determiner based on definiteness and number."
}
]
}
}
4infau7g6lwda54a2trh0ytolhcxjz9
285677
285674
2026-06-22T17:04:29Z
Denny
81
Added Z36790 to the approved list of implementations
285677
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36785"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z28516",
"Z17K2": "Z36785K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "definiteness"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z26934",
"Z17K2": "Z36785K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36786",
"Z36787",
"Z36788",
"Z36789"
],
"Z8K4": [
"Z14",
"Z36790"
],
"Z8K5": "Z36785"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English grammatic determiner"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Returns a determiner based on definiteness and number."
}
]
}
}
tsodyo0f5hlmq4uwl0kd37pcz1km5f1
Z36786
0
86351
285666
2026-06-22T16:56:15Z
Denny
81
285666
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36786"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36785",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36785",
"Z36785K1": {
"Z1K1": "Z28516",
"Z28516K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q53997851"
}
},
"Z36785K2": {
"Z1K1": "Z26934",
"Z26934K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": "Z36783"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English definite singular"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
qq7j3v20haje2lsvc65kp0vgp9xmytd
Z36787
0
86352
285668
2026-06-22T16:56:58Z
Denny
81
285668
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36787"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36785",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36785",
"Z36785K1": {
"Z1K1": "Z28516",
"Z28516K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q53997851"
}
},
"Z36785K2": {
"Z1K1": "Z26934",
"Z26934K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": "Z36784"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English definite plural"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
q4o1gmkko41y511o9hro8lwrcsvkulb
Z36788
0
86353
285671
2026-06-22T16:57:40Z
Denny
81
285671
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36788"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36785",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36785",
"Z36785K1": {
"Z1K1": "Z28516",
"Z28516K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q53997857"
}
},
"Z36785K2": {
"Z1K1": "Z26934",
"Z26934K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": "Z36781"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English indefinite singular"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
56qwqdgbtips4655gj2kcivedzp7j0p
Z36789
0
86354
285673
2026-06-22T16:58:15Z
Denny
81
285673
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36789"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36785",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36785",
"Z36785K1": {
"Z1K1": "Z28516",
"Z28516K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q53997857"
}
},
"Z36785K2": {
"Z1K1": "Z26934",
"Z26934K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": "Z36782"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English indefinite plural"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
97tmcgau1u9lsie4ptjy1xjldz8lyce
Z36790
0
86355
285676
2026-06-22T17:04:15Z
Denny
81
285676
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36790"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36785",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z6894",
"Z6894K1": {
"Z1K1": "Z18",
"Z18K1": "Z36785K1"
},
"Z6894K2": {
"Z1K1": "Z28516",
"Z28516K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q53997851"
}
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z6894",
"Z6894K1": {
"Z1K1": "Z18",
"Z18K1": "Z36785K2"
},
"Z6894K2": {
"Z1K1": "Z26934",
"Z26934K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
}
},
"Z802K2": "Z36783",
"Z802K3": "Z36784"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z6894",
"Z6894K1": {
"Z1K1": "Z18",
"Z18K1": "Z36785K2"
},
"Z6894K2": {
"Z1K1": "Z26934",
"Z26934K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
}
},
"Z802K2": "Z36781",
"Z802K3": "Z36782"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "if enum, twice"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ioxxtffexg0d70rv6chsdxc0kapkwfy
Z36791
0
86356
285678
2026-06-22T17:11:03Z
Denny
81
285678
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36791"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "some"
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English determiner some"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
4pwps63usoddfal2f7ekgzashqkv644
285684
285678
2026-06-22T17:13:16Z
Denny
81
285684
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36791"
},
"Z2K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "some"
}
]
}
]
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English determiner some"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\"some\""
}
]
}
}
lhajsp4inu9svnev7onmjnnu3qah8fq
Z36792
0
86357
285685
2026-06-22T17:17:42Z
Denny
81
285685
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36792"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z36792K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36792"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English determiner from number"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "turns a natural number into an English determiner"
}
]
}
}
lxmcsbamzl5hyg7f7koox6ilvoe0wey
285687
285685
2026-06-22T17:18:45Z
Denny
81
Added Z36793 to the approved list of test cases
285687
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36792"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z36792K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36793"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36792"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English determiner from number"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "turns a natural number into an English determiner"
}
]
}
}
epy36q5ryavhv655ya9wcprhzvzmdeo
285689
285687
2026-06-22T17:19:35Z
Denny
81
Added Z36794 to the approved list of test cases
285689
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36792"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z36792K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36793",
"Z36794"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36792"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English determiner from number"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "turns a natural number into an English determiner"
}
]
}
}
ssh8ug1g6hyv2nr4ehibqmpos9kvvbf
285691
285689
2026-06-22T17:20:35Z
Denny
81
Added Z36795 to the approved list of test cases
285691
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36792"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z36792K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36793",
"Z36794",
"Z36795"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36792"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English determiner from number"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "turns a natural number into an English determiner"
}
]
}
}
pgn5yumlqmtpc36l5i07v936watbd6o
285693
285691
2026-06-22T17:22:12Z
Denny
81
Added Z36796 to the approved list of test cases
285693
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36792"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z36792K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36793",
"Z36794",
"Z36795",
"Z36796"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36792"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English determiner from number"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "turns a natural number into an English determiner"
}
]
}
}
i6s4w1fx28w1rlupu4kh044f53xgovo
285696
285693
2026-06-22T17:24:26Z
Denny
81
Added Z36797 to the approved list of implementations
285696
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36792"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z13518",
"Z17K2": "Z36792K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "number"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36793",
"Z36794",
"Z36795",
"Z36796"
],
"Z8K4": [
"Z14",
"Z36797"
],
"Z8K5": "Z36792"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "English determiner from number"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "turns a natural number into an English determiner"
}
]
}
}
qyxf9nl2fum8tlmobzrmm38b61y55q3
Z36793
0
86358
285686
2026-06-22T17:18:35Z
Denny
81
285686
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36793"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36792",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36792",
"Z36792K1": {
"Z1K1": "Z13518",
"Z13518K1": "0"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "zero"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "0 = zero (plural)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
mmjru5t3cm99q9pgsivzyguyy30il6d
Z36794
0
86359
285688
2026-06-22T17:19:21Z
Denny
81
285688
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36794"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36792",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36792",
"Z36792K1": {
"Z1K1": "Z13518",
"Z13518K1": "1"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "one"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "1 = one (singular)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
tndmbvlj81uzm99mfo2i0og849t1wa3
Z36795
0
86360
285690
2026-06-22T17:20:27Z
Denny
81
285690
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36795"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36792",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36792",
"Z36792K1": {
"Z1K1": "Z13518",
"Z13518K1": "2"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "two"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "2 = two (plural)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
7p714vw7hd3cxqdpy6agur6jize7y1n
Z36796
0
86361
285692
2026-06-22T17:22:03Z
Denny
81
285692
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36796"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36792",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36792",
"Z36792K1": {
"Z1K1": "Z13518",
"Z13518K1": "42"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "forty-two"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "42 = forty-two (plural)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
sgreawi4rq7maexful2o4grpawthd3f
Z36797
0
86362
285695
2026-06-22T17:24:13Z
Denny
81
285695
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36797"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36792",
"Z14K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q576271"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z31547",
"Z31547K1": {
"Z1K1": "Z18",
"Z18K1": "Z36792K1"
}
},
"Z802K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
"Z802K3": {
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z27868",
"Z27868K1": {
"Z1K1": "Z7",
"Z7K1": "Z13587",
"Z13587K1": {
"Z1K1": "Z18",
"Z18K1": "Z36792K1"
}
}
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "singular if 1, else plural; English cardinal"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
3ufr61d2qj2ifhrxx8m68rfuny4zy8v
Translations:Wikifunctions:Status updates/2026-06-19/29/de
1198
86363
285697
2026-06-22T17:41:09Z
Ameisenigel
44
Created page with "Diese Woche haben wir einige Verbesserungen daran vorgenommen, wie Artikel der Abstrakten Wikipedia und eingebettete Ausgaben von Wikifunctions wikiübergreifend dargestellt werden."
285697
wikitext
text/x-wiki
Diese Woche haben wir einige Verbesserungen daran vorgenommen, wie Artikel der Abstrakten Wikipedia und eingebettete Ausgaben von Wikifunctions wikiübergreifend dargestellt werden.
r46i9xy39kcqcsqr68fchsbnwpdhqim
Translations:Wikifunctions:Status updates/2026-06-19/15/de
1198
86364
285699
2026-06-22T17:43:51Z
Ameisenigel
44
Created page with "In der Abstrakten Wikipedia erscheinen leere Artikel nun als Rotlinks im lokalen Wikitext sowie in gerenderten Fragmenten, übereinstimmend damit, wie Wikipedia mit noch nicht erstellten Seiten verfährt ($1). Zudem greift das System beim Abrufen von Bezeichnungen für Objekte der Abstrakten Wikipedia auf $3 (sprachunabhängige Bezeichnung) zurück, sofern keine sprachspezifische Bezeichnung vorliegt ($2)."
285699
wikitext
text/x-wiki
In der Abstrakten Wikipedia erscheinen leere Artikel nun als Rotlinks im lokalen Wikitext sowie in gerenderten Fragmenten, übereinstimmend damit, wie Wikipedia mit noch nicht erstellten Seiten verfährt ($1). Zudem greift das System beim Abrufen von Bezeichnungen für Objekte der Abstrakten Wikipedia auf $3 (sprachunabhängige Bezeichnung) zurück, sofern keine sprachspezifische Bezeichnung vorliegt ($2).
fnvn0pk4ewd5gf7lz5mbeb4bv2ts0dk
Translations:Wikifunctions:Status updates/2026-06-19/16/de
1198
86365
285701
2026-06-22T17:44:32Z
Ameisenigel
44
Created page with "Für eingebettete Wikifunctions haben wir einen Fehler behoben, der dazu führte, dass die Vorschau der HTML-Ausgabe eingebetteter Wikifunctions – außer auf Wikifunctions.org selbst – nicht funktionierte ($1)."
285701
wikitext
text/x-wiki
Für eingebettete Wikifunctions haben wir einen Fehler behoben, der dazu führte, dass die Vorschau der HTML-Ausgabe eingebetteter Wikifunctions – außer auf Wikifunctions.org selbst – nicht funktionierte ($1).
8g61gmbg6664dxpcxmsnsnkhknw88sf
Translations:Wikifunctions:Status updates/2026-06-19/17/de
1198
86366
285703
2026-06-22T17:45:59Z
Ameisenigel
44
Created page with "Im Rahmen der allgemeinen Arbeiten zur Sprachunterstützung in MediaWiki haben wir $5 ($6) als neue [[$7|Sprache]] hinzugefügt und $8 an $9 zugewiesen, zusätzlich zu dem bereits vorhandenen Code $10 ($1, $2, $3 und $4)."
285703
wikitext
text/x-wiki
Im Rahmen der allgemeinen Arbeiten zur Sprachunterstützung in MediaWiki haben wir $5 ($6) als neue [[$7|Sprache]] hinzugefügt und $8 an $9 zugewiesen, zusätzlich zu dem bereits vorhandenen Code $10 ($1, $2, $3 und $4).
32f0gqss0shg69c1zrcmfemgyzafmmy
Z36798
0
86367
285707
2026-06-22T17:56:21Z
Denny
81
285707
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36798"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "determiner"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36798"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun phrase from determiner and noun"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "creates noun phrases such as \"a house\", \"the cat\", \"seven little dwarves\", etc."
}
]
}
}
a2l34t88nk85ydtp8bcamch63hcis9r
285710
285707
2026-06-22T18:00:44Z
Denny
81
Added Z36799 to the approved list of test cases
285710
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36798"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "determiner"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36799"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36798"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun phrase from determiner and noun"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "creates noun phrases such as \"a house\", \"the cat\", \"seven little dwarves\", etc."
}
]
}
}
7836xlfo60onldpfappi8xtyx2jpr55
285712
285710
2026-06-22T18:02:19Z
Denny
81
Added Z36800 to the approved list of test cases
285712
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36798"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "determiner"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36799",
"Z36800"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36798"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun phrase from determiner and noun"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "creates noun phrases such as \"a house\", \"the cat\", \"seven little dwarves\", etc."
}
]
}
}
32wooblno5a4la7eegsjq93x6y510er
285715
285712
2026-06-22T18:03:40Z
Denny
81
Added Z36801 to the approved list of test cases
285715
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36798"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "determiner"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36799",
"Z36800",
"Z36801"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36798"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun phrase from determiner and noun"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "creates noun phrases such as \"a house\", \"the cat\", \"seven little dwarves\", etc."
}
]
}
}
ii1qiqty68lwm9nbghyk9j7n7d5ibx0
285719
285715
2026-06-22T18:05:08Z
Denny
81
Added Z36802 to the approved list of test cases
285719
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36798"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "determiner"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36799",
"Z36800",
"Z36801",
"Z36802"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36798"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun phrase from determiner and noun"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "creates noun phrases such as \"a house\", \"the cat\", \"seven little dwarves\", etc."
}
]
}
}
3uttlkxxi93tuccjdd57zjy1yhpff3w
285789
285719
2026-06-22T21:31:14Z
Denny
81
Added Z36830 to the approved list of test cases
285789
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36798"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "determiner"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36799",
"Z36800",
"Z36801",
"Z36802",
"Z36830"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36798"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun phrase from determiner and noun"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "creates noun phrases such as \"a house\", \"the cat\", \"seven little dwarves\", etc."
}
]
}
}
g1vrnp3ct9w0mvepxuhozb8wv1aovym
285897
285789
2026-06-23T08:57:39Z
Denny
81
Added Z36861 to the approved list of test cases
285897
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36798"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "determiner"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36799",
"Z36800",
"Z36801",
"Z36802",
"Z36830",
"Z36861"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36798"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun phrase from determiner and noun"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "creates noun phrases such as \"a house\", \"the cat\", \"seven little dwarves\", etc."
}
]
}
}
f318pilshif20jymfakpdabkoabldkv
285899
285897
2026-06-23T08:59:21Z
Denny
81
Added Z36803 to the approved list of implementations
285899
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36798"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "determiner"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36798K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun"
}
]
}
}
],
"Z8K2": "Z36462",
"Z8K3": [
"Z20",
"Z36799",
"Z36800",
"Z36801",
"Z36802",
"Z36830",
"Z36861"
],
"Z8K4": [
"Z14",
"Z36803"
],
"Z8K5": "Z36798"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "noun phrase from determiner and noun"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "creates noun phrases such as \"a house\", \"the cat\", \"seven little dwarves\", etc."
}
]
}
}
mitlykdibqo54sqf2029qktsd0hzseu
Z36799
0
86368
285709
2026-06-22T17:59:17Z
Denny
81
285709
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36799"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36798",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36798",
"Z36798K1": "Z36781",
"Z36798K2": "Z36617"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "a goose"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "a goose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
o4jqj2ofaaop1g9zazun1ce0jijoogk
Z36800
0
86369
285711
2026-06-22T18:02:08Z
Denny
81
285711
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36800"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36798",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36798",
"Z36798K1": {
"Z1K1": "Z7",
"Z7K1": "Z36785",
"Z36785K1": {
"Z1K1": "Z28516",
"Z28516K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q53997851"
}
},
"Z36785K2": {
"Z1K1": "Z26934",
"Z26934K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
}
},
"Z36798K2": {
"Z1K1": "Z7",
"Z7K1": "Z36607",
"Z36607K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L7"
}
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "the cat"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "the cat"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
p53jseyg6zlfujy1f1dnupjpg9gw7l0
Z36801
0
86370
285714
2026-06-22T18:03:29Z
Denny
81
285714
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36801"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36798",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36798",
"Z36798K1": {
"Z1K1": "Z7",
"Z7K1": "Z36792",
"Z36792K1": {
"Z1K1": "Z13518",
"Z13518K1": "7"
}
},
"Z36798K2": {
"Z1K1": "Z7",
"Z7K1": "Z36607",
"Z36607K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L2135"
}
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "seven goats"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "seven goats"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
l552av1lq476apdwnz3wtwtzm811ct9
Z36802
0
86371
285718
2026-06-22T18:04:58Z
Denny
81
285718
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36802"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36798",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36798",
"Z36798K1": {
"Z1K1": "Z7",
"Z7K1": "Z36792",
"Z36792K1": {
"Z1K1": "Z13518",
"Z13518K1": "0"
}
},
"Z36798K2": {
"Z1K1": "Z7",
"Z7K1": "Z36607",
"Z36607K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L3429"
}
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "zero ideas"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "zero ideas"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ax898p1fw8b51580wu6lhxdf2ujdjre
Z36803
0
86372
285729
2026-06-22T18:10:09Z
Denny
81
285729
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36803"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36798",
"Z14K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": {
"Z1K1": "Z7",
"Z7K1": "Z36644",
"Z36644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
},
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "a goose"
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "(wip) det++N{det.number}"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
62hlcmmgv2aly1mjciobwnc9q506h9h
285756
285729
2026-06-22T20:27:35Z
Denny
81
285756
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36803"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36798",
"Z14K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": {
"Z1K1": "Z7",
"Z7K1": "Z36644",
"Z36644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
},
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z36810",
"Z36810K1": {
"Z1K1": "Z7",
"Z7K1": "Z36747",
"Z36747K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
},
"Z36810K2": {
"Z1K1": "Z7",
"Z7K1": "Z36747",
"Z36747K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K2"
}
}
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "(wip) det++N{det.number}"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
18ei9rw8cxxjeo0zbf3r4ow7lonionc
285787
285756
2026-06-22T21:27:57Z
Denny
81
285787
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36803"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36798",
"Z14K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": {
"Z1K1": "Z7",
"Z7K1": "Z36644",
"Z36644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
},
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z36810",
"Z36810K1": {
"Z1K1": "Z7",
"Z7K1": "Z36747",
"Z36747K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
},
"Z36810K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z36827",
"Z36827K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K2"
},
"Z36827K2": {
"Z1K1": "Z7",
"Z7K1": "Z36644",
"Z36644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
}
}
}
}
]
}
]
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "(wip) det++N{det.number}"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
7p2jrt80i90gkfwfw4arpyo5vhen7rg
285790
285787
2026-06-22T21:36:22Z
Denny
81
285790
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36803"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36798",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z40",
"Z40K1": "Z42"
},
"Z802K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z27849",
"Z27849K1": {
"Z1K1": "Z89",
"Z89K1": "an "
},
"Z27849K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z36827",
"Z36827K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K2"
},
"Z36827K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
]
}
}
}
]
}
]
},
"Z802K3": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": {
"Z1K1": "Z7",
"Z7K1": "Z36644",
"Z36644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
},
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z36810",
"Z36810K1": {
"Z1K1": "Z7",
"Z7K1": "Z36747",
"Z36747K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
},
"Z36810K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z36827",
"Z36827K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K2"
},
"Z36827K2": {
"Z1K1": "Z7",
"Z7K1": "Z36644",
"Z36644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
}
}
}
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "(wip) det++N{det.number}"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
bjcgj68bk4y5hvhsbbwrkpttj35p9xf
285792
285790
2026-06-22T21:44:09Z
Denny
81
285792
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36803"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36798",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z10174",
"Z10174K1": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
},
"Z36717K2": "Z36781"
},
"Z10174K2": {
"Z1K1": "Z7",
"Z7K1": "Z32314",
"Z32314K1": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z36827",
"Z36827K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K2"
},
"Z36827K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
]
}
}
}
}
},
"Z802K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z27849",
"Z27849K1": {
"Z1K1": "Z89",
"Z89K1": "an "
},
"Z27849K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z36827",
"Z36827K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K2"
},
"Z36827K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
]
}
}
}
]
}
]
},
"Z802K3": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": {
"Z1K1": "Z7",
"Z7K1": "Z36644",
"Z36644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
},
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z36810",
"Z36810K1": {
"Z1K1": "Z7",
"Z7K1": "Z36747",
"Z36747K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
},
"Z36810K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z36827",
"Z36827K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K2"
},
"Z36827K2": {
"Z1K1": "Z7",
"Z7K1": "Z36644",
"Z36644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
}
}
}
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "(wip) det++N{det.number}"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
9nuwi0ynpqwv2flyt1hsrp9rvsipv3j
285898
285792
2026-06-23T08:59:08Z
Denny
81
285898
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36803"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36798",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z10174",
"Z10174K1": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
},
"Z36717K2": "Z36781"
},
"Z10174K2": {
"Z1K1": "Z7",
"Z7K1": "Z32314",
"Z32314K1": {
"Z1K1": "Z7",
"Z7K1": "Z36839",
"Z36839K1": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z36827",
"Z36827K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K2"
},
"Z36827K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
]
}
}
}
}
},
"Z802K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z27849",
"Z27849K1": {
"Z1K1": "Z89",
"Z89K1": "an "
},
"Z27849K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z36827",
"Z36827K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K2"
},
"Z36827K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
]
}
}
}
]
}
]
},
"Z802K3": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": {
"Z1K1": "Z7",
"Z7K1": "Z36644",
"Z36644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
},
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z7",
"Z7K1": "Z36810",
"Z36810K1": {
"Z1K1": "Z7",
"Z7K1": "Z36747",
"Z36747K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
},
"Z36810K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z36827",
"Z36827K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K2"
},
"Z36827K2": {
"Z1K1": "Z7",
"Z7K1": "Z36644",
"Z36644K1": {
"Z1K1": "Z18",
"Z18K1": "Z36798K1"
}
}
}
}
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "(wip) det++N{det.number}"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
jpelkkvidrj3p225qzz0almieovrmrb
Z36804
0
86373
285730
2026-06-22T18:18:20Z
Denny
81
285730
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36804"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36804K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36804K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36804"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two strings with space unless empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If one string is empty, return the other. If both are empty, return empty. Otherwise join the two strings with a space in between."
}
]
}
}
c5nfmht038jsj7xg8qpnklh488loxvv
285732
285730
2026-06-22T18:18:52Z
Denny
81
Added Z36805 to the approved list of test cases
285732
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36804"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36804K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36804K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z36805"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36804"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two strings with space unless empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If one string is empty, return the other. If both are empty, return empty. Otherwise join the two strings with a space in between."
}
]
}
}
bsjpl92rkcbuf4lwy8six5l2cui0bxg
285735
285732
2026-06-22T18:19:25Z
Denny
81
Added Z36806 to the approved list of test cases
285735
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36804"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36804K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36804K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z36805",
"Z36806"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36804"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two strings with space unless empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If one string is empty, return the other. If both are empty, return empty. Otherwise join the two strings with a space in between."
}
]
}
}
1bstggz89jkp8qrirwvs7qq33qcfgdi
285738
285735
2026-06-22T18:20:06Z
Denny
81
Added Z36807 to the approved list of test cases
285738
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36804"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36804K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36804K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z36805",
"Z36806",
"Z36807"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36804"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two strings with space unless empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If one string is empty, return the other. If both are empty, return empty. Otherwise join the two strings with a space in between."
}
]
}
}
3aiz07gb1ko06ja731oagyn2yzjrmfp
285740
285738
2026-06-22T18:20:28Z
Denny
81
Added Z36808 to the approved list of test cases
285740
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36804"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36804K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36804K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z36805",
"Z36806",
"Z36807",
"Z36808"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36804"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two strings with space unless empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If one string is empty, return the other. If both are empty, return empty. Otherwise join the two strings with a space in between."
}
]
}
}
89hm3cznphhexdm7cruezfewicc7c52
285742
285740
2026-06-22T18:23:40Z
Denny
81
Added Z36809 to the approved list of implementations
285742
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36804"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36804K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6",
"Z17K2": "Z36804K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z36805",
"Z36806",
"Z36807",
"Z36808"
],
"Z8K4": [
"Z14",
"Z36809"
],
"Z8K5": "Z36804"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two strings with space unless empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If one string is empty, return the other. If both are empty, return empty. Otherwise join the two strings with a space in between."
}
]
}
}
6kd0apxmv0cmfblnfxq6v3ohbix63x6
Z36805
0
86374
285731
2026-06-22T18:18:44Z
Denny
81
285731
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36805"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36804",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36804",
"Z36804K1": "ab",
"Z36804K2": "cd"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "ab cd"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "ab cd"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
1wc1g3uxoe3khy41otbwjz1fk0opfz5
285736
285731
2026-06-22T18:19:36Z
Denny
81
285736
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36805"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36804",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36804",
"Z36804K1": "ab",
"Z36804K2": "cd"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "ab cd"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "none empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
eksd7uoruzs089me338bqzuyf4qglvb
Z36806
0
86375
285733
2026-06-22T18:19:07Z
Denny
81
285733
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36806"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36804",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36804",
"Z36804K1": "ab",
"Z36804K2": ""
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "ab"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "ab"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
m6n6uiyi5qqux3dn95kgp8ytqot9hcz
285734
285733
2026-06-22T18:19:17Z
Denny
81
285734
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36806"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36804",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36804",
"Z36804K1": "ab",
"Z36804K2": ""
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "ab"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
6gd7mhvph3p5ng26m0ddd2daehh3pzv
Z36807
0
86376
285737
2026-06-22T18:19:57Z
Denny
81
285737
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36807"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36804",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36804",
"Z36804K1": "",
"Z36804K2": "cd"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "cd"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
0ptwu6zuimw9hso2oeuo8a48oxp035c
Z36808
0
86377
285739
2026-06-22T18:20:19Z
Denny
81
285739
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36808"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36804",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36804",
"Z36804K1": "",
"Z36804K2": ""
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": ""
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "both empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
9ea120huyrhqle2yoeqj80jedsd29am
Z36809
0
86378
285741
2026-06-22T18:23:27Z
Denny
81
285741
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36809"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36804",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z10008",
"Z10008K1": {
"Z1K1": "Z18",
"Z18K1": "Z36804K1"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z10008",
"Z10008K1": {
"Z1K1": "Z18",
"Z18K1": "Z36804K2"
}
},
"Z802K2": "",
"Z802K3": {
"Z1K1": "Z18",
"Z18K1": "Z36804K2"
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z10008",
"Z10008K1": {
"Z1K1": "Z18",
"Z18K1": "Z36804K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z36804K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z27182",
"Z27182K1": {
"Z1K1": "Z18",
"Z18K1": "Z36804K1"
},
"Z27182K2": {
"Z1K1": "Z18",
"Z18K1": "Z36804K2"
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two ifs, is empty string, else join with space"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
8gq37sou4fdgj938e46hbi6ide7jtov
Z36810
0
86379
285744
2026-06-22T20:16:00Z
Denny
81
285744
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36810"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36810K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36810K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36810"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two HTML fragments with space unless empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If one fragment is empty, return the other. If both are empty, return empty. Otherwise join the two fragments with a space in between."
}
]
}
}
j1pal5exog5vkkfb6c5qat7ag93e1cw
285746
285744
2026-06-22T20:16:55Z
Denny
81
Added Z36811 to the approved list of test cases
285746
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36810"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36810K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36810K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36811"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36810"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two HTML fragments with space unless empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If one fragment is empty, return the other. If both are empty, return empty. Otherwise join the two fragments with a space in between."
}
]
}
}
kfdm8uhbn1qntye5jdfdpz8siwrftri
285748
285746
2026-06-22T20:17:33Z
Denny
81
Added Z36812 to the approved list of test cases
285748
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36810"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36810K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36810K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36811",
"Z36812"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36810"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two HTML fragments with space unless empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If one fragment is empty, return the other. If both are empty, return empty. Otherwise join the two fragments with a space in between."
}
]
}
}
hn4zxnrl4rg6j4rvpefc3fhfek5zzmd
285750
285748
2026-06-22T20:18:03Z
Denny
81
Added Z36813 to the approved list of test cases
285750
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36810"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36810K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36810K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36811",
"Z36812",
"Z36813"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36810"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two HTML fragments with space unless empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If one fragment is empty, return the other. If both are empty, return empty. Otherwise join the two fragments with a space in between."
}
]
}
}
1bngujema5glqn2ic8v5qnzlo4602iw
285752
285750
2026-06-22T20:18:32Z
Denny
81
Added Z36814 to the approved list of test cases
285752
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36810"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36810K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36810K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36811",
"Z36812",
"Z36813",
"Z36814"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36810"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two HTML fragments with space unless empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If one fragment is empty, return the other. If both are empty, return empty. Otherwise join the two fragments with a space in between."
}
]
}
}
pvic92b91fjxqw0fcng7i938pefesfp
285754
285752
2026-06-22T20:23:48Z
Denny
81
Added Z36815 to the approved list of implementations
285754
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36810"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36810K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36810K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36811",
"Z36812",
"Z36813",
"Z36814"
],
"Z8K4": [
"Z14",
"Z36815"
],
"Z8K5": "Z36810"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "join two HTML fragments with space unless empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If one fragment is empty, return the other. If both are empty, return empty. Otherwise join the two fragments with a space in between."
}
]
}
}
d2kqv16y3g4746np8tyzjpcobd8bpjb
Z36811
0
86380
285745
2026-06-22T20:16:46Z
Denny
81
285745
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36811"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36810",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36810",
"Z36810K1": {
"Z1K1": "Z89",
"Z89K1": "aa"
},
"Z36810K2": {
"Z1K1": "Z89",
"Z89K1": "aa"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "aa aa"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "no fragment empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ip22dix2i5zr5bsaun0cswvqa16bs99
Z36812
0
86381
285747
2026-06-22T20:17:21Z
Denny
81
285747
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36812"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36810",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36810",
"Z36810K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z36810K2": {
"Z1K1": "Z89",
"Z89K1": "aa"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "aa"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first fragment empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
i70vys1wwmcsvscn70pp8xxojamt6xf
Z36813
0
86382
285749
2026-06-22T20:17:51Z
Denny
81
285749
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36813"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36810",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36810",
"Z36810K1": {
"Z1K1": "Z89",
"Z89K1": "aa"
},
"Z36810K2": {
"Z1K1": "Z89",
"Z89K1": ""
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "aa"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "second fragment empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
2g88pihedipiudesdnnr716i2o7ygjd
Z36814
0
86383
285751
2026-06-22T20:18:21Z
Denny
81
285751
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36814"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36810",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36810",
"Z36810K1": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z36810K2": {
"Z1K1": "Z89",
"Z89K1": ""
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": ""
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "both fragments empty"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ijr1b37z7dvziz5dk5bhd9tgjdzh790
Z36815
0
86384
285753
2026-06-22T20:23:31Z
Denny
81
285753
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36815"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36810",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z35737",
"Z35737K1": {
"Z1K1": "Z18",
"Z18K1": "Z36810K1"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z35737",
"Z35737K1": {
"Z1K1": "Z18",
"Z18K1": "Z36810K2"
}
},
"Z802K2": {
"Z1K1": "Z89",
"Z89K1": ""
},
"Z802K3": {
"Z1K1": "Z18",
"Z18K1": "Z36810K2"
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z35737",
"Z35737K1": {
"Z1K1": "Z18",
"Z18K1": "Z36810K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z36810K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z27926",
"Z27926K1": [
"Z89",
{
"Z1K1": "Z18",
"Z18K1": "Z36810K1"
},
{
"Z1K1": "Z89",
"Z89K1": " "
},
{
"Z1K1": "Z18",
"Z18K1": "Z36810K2"
}
]
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "is empty, else join multiple HTML fragments"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
91edozgu1kdfgmgces48kizuhgzw0yh
Z36816
0
86385
285757
2026-06-22T20:36:51Z
Denny
81
285757
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36816"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36816K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36816"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first fragment of Option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the first fragment of the given Syntactic option"
}
]
}
}
ndhtdvmzitqpq3mucb0nxaxlin92u0t
285760
285757
2026-06-22T20:39:00Z
Denny
81
Added Z36817 and Z36818 to the approved list of test cases
285760
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36816"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36816K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36817",
"Z36818"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36816"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first fragment of Option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the first fragment of the given Syntactic option"
}
]
}
}
th1zlufxugtqvqdte6asvhjgye34c8k
285763
285760
2026-06-22T20:40:01Z
Denny
81
Added Z36819 to the approved list of implementations
285763
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36816"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36463",
"Z17K2": "Z36816K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36817",
"Z36818"
],
"Z8K4": [
"Z14",
"Z36819"
],
"Z8K5": "Z36816"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first fragment of Option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the first fragment of the given Syntactic option"
}
]
}
}
4le8ee7laxpoftxotozwmznkcfitjto
Z36817
0
86386
285758
2026-06-22T20:37:44Z
Denny
81
285758
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36817"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36816",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36816",
"Z36816K1": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q131105"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Haus"
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "Haus"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Haus (de, sg, nom) is \"Haus\""
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
8v114lsbfrprmvrxr6jg3taaclacgpa
Z36818
0
86387
285759
2026-06-22T20:38:50Z
Denny
81
285759
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36818"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36816",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36816",
"Z36816K1": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "zeichne"
},
{
"Z1K1": "Z89",
"Z89K1": "auf"
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "zeichne"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "two fragments"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
1k8kf6xuvzx7fknambbir67iv1e9fhv
Z36819
0
86388
285761
2026-06-22T20:39:32Z
Denny
81
285761
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36819"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36816",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z7",
"Z7K1": "Z36666",
"Z36666K1": {
"Z1K1": "Z18",
"Z18K1": "Z36816K1"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "first element of fragments of option"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
3dtzj505nxyf5vlwxdgzq6vvc6l2s6e
Z36820
0
86389
285764
2026-06-22T20:46:38Z
Denny
81
285764
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36820"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36820K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36820K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "features"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36820"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option by features"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the single Syntactic option from the Syntactic table that has all the given features"
}
]
}
}
qlbfy7lzub2x3tdn5gp7trfqjrcttrn
285766
285764
2026-06-22T21:02:22Z
Denny
81
Added Z36821 to the approved list of test cases
285766
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36820"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36820K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36820K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "features"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20",
"Z36821"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36820"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option by features"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the single Syntactic option from the Syntactic table that has all the given features"
}
]
}
}
1cgl1enscuzx6uz5hmk5garwku7ilbq
285768
285766
2026-06-22T21:03:51Z
Denny
81
Added Z36822 to the approved list of test cases
285768
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36820"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36820K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36820K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "features"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20",
"Z36821",
"Z36822"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36820"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option by features"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the single Syntactic option from the Syntactic table that has all the given features"
}
]
}
}
axq5xhvb06xymp2p1ksuv6iawhnzf9s
285777
285768
2026-06-22T21:14:56Z
Denny
81
Added Z36826 to the approved list of implementations
285777
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36820"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36820K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36820K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "features"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20",
"Z36821",
"Z36822"
],
"Z8K4": [
"Z14",
"Z36826"
],
"Z8K5": "Z36820"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option by features"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the single Syntactic option from the Syntactic table that has all the given features"
}
]
}
}
inf2m63mpaig1i75h8f5q5ikdek1e62
Z36821
0
86390
285765
2026-06-22T21:02:06Z
Denny
81
285765
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36821"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36820",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36820",
"Z36820K1": "Z36617",
"Z36820K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "geese"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "plural from goose is geese"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
okv6cm9liox2308o4ue5b18swoz1ks2
Z36822
0
86391
285767
2026-06-22T21:03:32Z
Denny
81
285767
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36822"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36820",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36820",
"Z36820K1": "Z36645",
"Z36820K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146078"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146078"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "Gänse"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "accusative plural of Gans (de) is Gänse"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
g0l33fjp7sxwzi8f4ol99qxatgqovdi
Z36823
0
86392
285769
2026-06-22T21:06:15Z
Denny
81
285769
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36823"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z36463"
},
"Z17K2": "Z36823K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of options"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36823K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "features"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36823"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option by features from list of options"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the Syntactic option from a list of options that has exactly the list of features"
}
]
}
}
2i83oxhrg6uifr7hffaefrilx0ds3we
285771
285769
2026-06-22T21:07:45Z
Denny
81
Added Z36824 to the approved list of test cases
285771
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36823"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z36463"
},
"Z17K2": "Z36823K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of options"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36823K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "features"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20",
"Z36824"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36823"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option by features from list of options"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the Syntactic option from a list of options that has exactly the list of features"
}
]
}
}
hs8das9hzr7s7hcw5ku10jbnvj0ank6
285774
285771
2026-06-22T21:12:32Z
Denny
81
Added Z36825 to the approved list of implementations
285774
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36823"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z36463"
},
"Z17K2": "Z36823K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of options"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36823K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "features"
}
]
}
}
],
"Z8K2": "Z36463",
"Z8K3": [
"Z20",
"Z36824"
],
"Z8K4": [
"Z14",
"Z36825"
],
"Z8K5": "Z36823"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "option by features from list of options"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "returns the Syntactic option from a list of options that has exactly the list of features"
}
]
}
}
cqtxwqrhj565lbrt1jlhkkc73r173o2
Z36824
0
86393
285770
2026-06-22T21:07:36Z
Denny
81
285770
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36824"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36823",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36823",
"Z36823K1": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "word"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "words"
}
]
}
],
"Z36823K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36670",
"Z36670K2": {
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "words"
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "find words (plural)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
tinmbh02s40rwznpn33fd7lfwc74i5v
Z36825
0
86394
285772
2026-06-22T21:12:12Z
Denny
81
285772
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36825"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36823",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z34270",
"Z34270K1": {
"Z1K1": "Z7",
"Z7K1": "Z36662",
"Z36662K1": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z18",
"Z18K1": "Z36823K1"
}
}
},
"Z34270K2": {
"Z1K1": "Z18",
"Z18K1": "Z36823K2"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z18",
"Z18K1": "Z36823K1"
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z36823",
"Z36823K1": {
"Z1K1": "Z7",
"Z7K1": "Z812",
"Z812K1": {
"Z1K1": "Z18",
"Z18K1": "Z36823K1"
}
},
"Z36823K2": {
"Z1K1": "Z18",
"Z18K1": "Z36823K2"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "If f=features(option), first, else recurse rest"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
r4qe0w3ii646x76xsx1dappsmqwb24a
Z36826
0
86395
285776
2026-06-22T21:14:29Z
Denny
81
285776
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36826"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36820",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z36823",
"Z36823K1": {
"Z1K1": "Z7",
"Z7K1": "Z36650",
"Z36650K1": {
"Z1K1": "Z18",
"Z18K1": "Z36820K1"
}
},
"Z36823K2": {
"Z1K1": "Z18",
"Z18K1": "Z36820K2"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "options by features from list of options(table, f)"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
sc7l79trggm0ij5lllziviy76ila9hc
Z36827
0
86396
285779
2026-06-22T21:22:08Z
Denny
81
285779
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36827"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36827K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36827K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "features"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36827"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragments from Table by beatures"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "given a Syntactic table, return the fragments of the Syntactic options with exactly the given features"
}
]
}
}
jhp809m1554xtro4528otyhxgcjkc1w
285780
285779
2026-06-22T21:22:26Z
Denny
81
285780
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36827"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36827K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36827K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "features"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36827"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragments from Table by features"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "given a Syntactic table, return the fragments of the Syntactic options with exactly the given features"
}
]
}
}
qj21dzpdg9n2x2u0qgxkalaxh7qfem1
285782
285780
2026-06-22T21:24:07Z
Denny
81
Added Z36828 to the approved list of test cases
285782
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36827"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36827K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36827K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "features"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z8K3": [
"Z20",
"Z36828"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36827"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragments from Table by features"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "given a Syntactic table, return the fragments of the Syntactic options with exactly the given features"
}
]
}
}
l4glb7n0j34vkmwftmh026jys8ysksk
285784
285782
2026-06-22T21:25:35Z
Denny
81
Added Z36829 to the approved list of implementations
285784
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36827"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z36462",
"Z17K2": "Z36827K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "table"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36827K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "features"
}
]
}
}
],
"Z8K2": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z89"
},
"Z8K3": [
"Z20",
"Z36828"
],
"Z8K4": [
"Z14",
"Z36829"
],
"Z8K5": "Z36827"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragments from Table by features"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "given a Syntactic table, return the fragments of the Syntactic options with exactly the given features"
}
]
}
}
do45m6cjplsd30jlcd927as1p0t1oe9
Z36828
0
86397
285781
2026-06-22T21:23:54Z
Denny
81
285781
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36828"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36827",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36827",
"Z36827K1": "Z36617",
"Z36827K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z889",
"Z889K2": [
"Z1",
{
"Z1K1": "Z89",
"Z89K1": "geese"
}
],
"Z889K3": "Z877"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "from table goose plural we get \"geese\""
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
8ipediqh4c1z2scqysubgk24m9w2dpe
Z36829
0
86398
285783
2026-06-22T21:25:07Z
Denny
81
285783
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36829"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36827",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z36666",
"Z36666K1": {
"Z1K1": "Z7",
"Z7K1": "Z36820",
"Z36820K1": {
"Z1K1": "Z18",
"Z18K1": "Z36827K1"
},
"Z36820K2": {
"Z1K1": "Z18",
"Z18K1": "Z36827K2"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "fragments of option by features"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
le20zozubrowsy7eicerkt7wqr72m7j
Z36830
0
86399
285788
2026-06-22T21:30:50Z
Denny
81
285788
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36830"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36798",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36798",
"Z36798K1": "Z36781",
"Z36798K2": {
"Z1K1": "Z7",
"Z7K1": "Z36607",
"Z36607K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L4713"
}
}
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "an ant"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "an ant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
4y8fq5fblkta0ekzhruugzipbf2fl38
Z36831
0
86400
285795
2026-06-23T00:03:46Z
99of9
1622
285795
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36831"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36831K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36831K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of QIDs to remove links to"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36831"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove links to these QIDs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
cxr639in9okq0oxb2uou98zqyja868q
285797
285795
2026-06-23T00:06:34Z
99of9
1622
Added Z36832 to the approved list of test cases
285797
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36831"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36831K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36831K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of QIDs to remove links to"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36832"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36831"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove links to these QIDs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
n9crkoii6ciux12b08ev82xwds76ott
285799
285797
2026-06-23T00:08:03Z
99of9
1622
Added Z36833 to the approved list of test cases
285799
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36831"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36831K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36831K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of QIDs to remove links to"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36832",
"Z36833"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36831"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove links to these QIDs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
f8xesd6nzbp60g3a0bf2v3cnkunyc66
285800
285799
2026-06-23T00:09:25Z
99of9
1622
285800
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36831"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36831K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36831K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of QIDs to remove links to"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36832",
"Z36833"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36831"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove in-text links to these QIDs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
troo3pw2t56arzianqwa7c7w7yb8c6b
285801
285800
2026-06-23T00:11:52Z
99of9
1622
285801
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36831"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36831K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36831K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of QIDs to remove links to"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36832",
"Z36833"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36831"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia links to these QIDs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
hmecd0emsaiamrh4iu7473q9wd1jwsp
285803
285801
2026-06-23T00:13:33Z
99of9
1622
Added Z36834 to the approved list of test cases
285803
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36831"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36831K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36831K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of QIDs to remove links to"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36832",
"Z36833",
"Z36834"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36831"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia links to these QIDs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
1lrerhxn3f581t0earmjuajyi936uxe
285809
285803
2026-06-23T00:19:12Z
99of9
1622
Added Z36837 to the approved list of implementations
285809
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36831"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36831K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36831K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of QIDs to remove links to"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36832",
"Z36833",
"Z36834"
],
"Z8K4": [
"Z14",
"Z36837"
],
"Z8K5": "Z36831"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia links to these QIDs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
iigpe1cfw1r75msnmq0yfjj9ynmlmv4
285857
285809
2026-06-23T05:58:01Z
99of9
1622
285857
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36831"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36831K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36831K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of QIDs to remove links to"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36832",
"Z36833",
"Z36834"
],
"Z8K4": [
"Z14",
"Z36837"
],
"Z8K5": "Z36831"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove all Abstract Wikipedia links to these QIDs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"remove Abstract Wikipedia links to these QIDs"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
kax8hljm7rey44e7p47q6qqmuj6m329
Z36832
0
86401
285796
2026-06-23T00:06:21Z
99of9
1622
285796
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36832"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36831",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36831",
"Z36831K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Cdiv role=\"note\" class=\"hatnote navigation-not-searchable\"\u003E\u003Ci\u003EMain articles: \u003C/i\u003E\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q174825\"\u003EHistory of Australia\u003C/a\u003E and \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q4501797\"\u003ETimeline of Australian history\u003C/a\u003E\u003C/div\u003E"
},
"Z36831K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q4501797"
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Cdiv role=\"note\" class=\"hatnote navigation-not-searchable\"\u003E\u003Ci\u003EMain articles: \u003C/i\u003E\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q174825\"\u003EHistory of Australia\u003C/a\u003E and Timeline of Australian history\u003C/div\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove specific link from pair of \"Main articles\""
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
rd8lwzcixs0rk4jdtwp1ky3286ojh9t
Z36833
0
86402
285798
2026-06-23T00:07:49Z
99of9
1622
285798
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36833"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36831",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36831",
"Z36831K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Cdiv role=\"note\" class=\"hatnote navigation-not-searchable\"\u003E\u003Ci\u003EMain articles: \u003C/i\u003E\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q174825\"\u003EHistory of Australia\u003C/a\u003E and \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q4501797\"\u003ETimeline of Australian history\u003C/a\u003E\u003C/div\u003E"
},
"Z36831K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q4501797"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q174825"
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Cdiv role=\"note\" class=\"hatnote navigation-not-searchable\"\u003E\u003Ci\u003EMain articles: \u003C/i\u003EHistory of Australia and Timeline of Australian history\u003C/div\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove both links from fragment with 2"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ogwone2ve4uj1zo7nkeanx5z05h7r5j
Z36834
0
86403
285802
2026-06-23T00:13:02Z
99of9
1622
285802
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36834"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36831",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36831",
"Z36831K1": {
"Z1K1": "Z89",
"Z89K1": "The legislature of \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E is the \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q382118\"\u003EParliament of Australia\u003C/a\u003E.\u003Csup class=\"ext-wikilambda-reference\"\u003E\u003Ca href=\"https://www.wikidata.org/wiki/Q408#P194\"\u003EWikidata: Australia (Q408#P194)\u003C/a\u003E\u003C/sup\u003E"
},
"Z36831K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q408"
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "The legislature of Australia is the \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q382118\"\u003EParliament of Australia\u003C/a\u003E.\u003Csup class=\"ext-wikilambda-reference\"\u003E\u003Ca href=\"https://www.wikidata.org/wiki/Q408#P194\"\u003EWikidata: Australia (Q408#P194)\u003C/a\u003E\u003C/sup\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove AW link but not WD link"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
870oqmk5zhn2dtr48poo6rcxs182c7e
Z36835
0
86404
285804
2026-06-23T00:15:10Z
99of9
1622
285804
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36835"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36835K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36835K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "QID to remove links to"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36835K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove all?"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36835"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia link(s) to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
c1hbt6tl0xzmdeakcx70mnpoodmyac2
285805
285804
2026-06-23T00:15:30Z
99of9
1622
285805
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36835"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36835K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36835K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "QID to remove links to"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36835K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove all? (otherwise removes last)"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36835"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia link(s) to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
irt1247y7osfnzzfprzkp0pr4eb8qrq
285807
285805
2026-06-23T00:16:57Z
99of9
1622
Added Z36836 to the approved list of test cases
285807
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36835"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36835K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36835K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "QID to remove links to"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36835K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove all? (otherwise removes last)"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36836"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36835"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia link(s) to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
rs09437fsps04oimh1squl0k05lqk4v
285823
285807
2026-06-23T02:50:05Z
99of9
1622
Added Z36843 to the approved list of implementations
285823
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36835"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36835K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36835K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "QID to remove links to"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36835K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove all? (otherwise removes last)"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36836"
],
"Z8K4": [
"Z14",
"Z36843"
],
"Z8K5": "Z36835"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia link(s) to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
05zdcmnyd6nvary02e241t5s2iu4uxz
285826
285823
2026-06-23T03:16:45Z
99of9
1622
Added Z36845 to the approved list of test cases
285826
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36835"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36835K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36835K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "QID to remove links to"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36835K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove all? (otherwise removes last)"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36836",
"Z36845"
],
"Z8K4": [
"Z14",
"Z36843"
],
"Z8K5": "Z36835"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia link(s) to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
gs221w0xgdjykfipk23m08ctmmf0hhm
285828
285826
2026-06-23T03:17:58Z
99of9
1622
Added Z36844 and Z36846 to the approved list of test cases
285828
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36835"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36835K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36835K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "QID to remove links to"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36835K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove all? (otherwise removes last)"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36836",
"Z36845",
"Z36844",
"Z36846"
],
"Z8K4": [
"Z14",
"Z36843"
],
"Z8K5": "Z36835"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia link(s) to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
rsr0b87wigh64mcurcp0a995dnfsyeg
285829
285828
2026-06-23T03:19:01Z
99of9
1622
currently always removes all
285829
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36835"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36835K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36835K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "QID to remove links to"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36835K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[#] remove all? [# otherwise removes last]"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36836",
"Z36845",
"Z36844",
"Z36846"
],
"Z8K4": [
"Z14",
"Z36843"
],
"Z8K5": "Z36835"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia link(s) to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
thc7fewfobq9bavfnnprwxub3eeaajt
285838
285829
2026-06-23T04:17:13Z
99of9
1622
nudge
285838
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36835"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36835K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36835K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "QID to remove links to"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36835K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[#] remove all? [# otherwise removes last]"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36836",
"Z36845",
"Z36844",
"Z36846"
],
"Z8K4": [
"Z14",
"Z36843"
],
"Z8K5": "Z36835"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia link(s) to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"strip link"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
9npuwukd2z345vm0fxbpmoxycj4ejlp
285850
285838
2026-06-23T05:18:59Z
99of9
1622
285850
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36835"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36835K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36835K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "QID to remove links to"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36835K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove all? (otherwise removes last)"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36836",
"Z36845",
"Z36844",
"Z36846"
],
"Z8K4": [
"Z14",
"Z36843"
],
"Z8K5": "Z36835"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia link(s) to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"strip link"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
jaxl7mmxiz9x0wiwvbdg87rj60mtdti
285852
285850
2026-06-23T05:49:18Z
99of9
1622
more like a wiki sentence
285852
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36835"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36835K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36835K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "QID to remove links to"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36835K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove all? (otherwise leaves first)"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36836",
"Z36845",
"Z36844",
"Z36846"
],
"Z8K4": [
"Z14",
"Z36843"
],
"Z8K5": "Z36835"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia link(s) to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"strip link"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
15x9v0yxyjzcv2ejelsr8ioz8luolxk
285856
285852
2026-06-23T05:56:19Z
99of9
1622
Added Z36852 to the approved list of test cases
285856
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36835"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36835K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z6091",
"Z17K2": "Z36835K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "QID to remove links to"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36835K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove all? (otherwise leaves first)"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36836",
"Z36845",
"Z36844",
"Z36846",
"Z36852"
],
"Z8K4": [
"Z14",
"Z36843"
],
"Z8K5": "Z36835"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove Abstract Wikipedia link(s) to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31",
{
"Z1K1": "Z31",
"Z31K1": "Z1002",
"Z31K2": [
"Z6",
"strip link"
]
}
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
pspnb8ng9vcea8x3nltcmkv5mf6ldyf
Z36836
0
86405
285806
2026-06-23T00:16:41Z
99of9
1622
285806
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36836"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36835",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36835",
"Z36835K1": {
"Z1K1": "Z89",
"Z89K1": "The legislature of \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E is the \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q382118\"\u003EParliament of Australia\u003C/a\u003E.\u003Csup class=\"ext-wikilambda-reference\"\u003E\u003Ca href=\"https://www.wikidata.org/wiki/Q408#P194\"\u003EWikidata: Australia (Q408#P194)\u003C/a\u003E\u003C/sup\u003E"
},
"Z36835K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36835K3": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "The legislature of Australia is the \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q382118\"\u003EParliament of Australia\u003C/a\u003E.\u003Csup class=\"ext-wikilambda-reference\"\u003E\u003Ca href=\"https://www.wikidata.org/wiki/Q408#P194\"\u003EWikidata: Australia (Q408#P194)\u003C/a\u003E\u003C/sup\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove link to AW Q408 from fragment with others"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
icyahqlxhn6uo2tv1e5gjl6ols8gu5c
Z36837
0
86406
285808
2026-06-23T00:19:00Z
99of9
1622
285808
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36837"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36831",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z813",
"Z813K1": {
"Z1K1": "Z18",
"Z18K1": "Z36831K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z36831K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z36831",
"Z36831K1": {
"Z1K1": "Z7",
"Z7K1": "Z36835",
"Z36835K1": {
"Z1K1": "Z18",
"Z18K1": "Z36831K1"
},
"Z36835K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z18",
"Z18K1": "Z36831K2"
}
},
"Z36835K3": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
},
"Z36831K2": {
"Z1K1": "Z7",
"Z7K1": "Z812",
"Z812K1": {
"Z1K1": "Z18",
"Z18K1": "Z36831K2"
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove AW links per list, recursive"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
kri25kcclmxpglztken7bbmb61h30jj
Z36839
0
86408
285811
2026-06-23T01:57:22Z
Denny
81
285811
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36839"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36839K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "HTML"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36839"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "text content of HTML fragment"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "removes all tags and returns escaped sequences "
}
]
}
}
sv0mtyajin5uu9py5qb8rw1tqaxy2bs
285813
285811
2026-06-23T02:00:23Z
Denny
81
Added Z36840 to the approved list of test cases
285813
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36839"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36839K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "HTML"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z36840"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36839"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "text content of HTML fragment"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "removes all tags and returns escaped sequences "
}
]
}
}
a9hmfsijq8b965mvh9odmjf63gqxim0
285815
285813
2026-06-23T02:01:55Z
Denny
81
Added Z36841 to the approved list of test cases
285815
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36839"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36839K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "HTML"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z36840",
"Z36841"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36839"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "text content of HTML fragment"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "removes all tags and returns escaped sequences "
}
]
}
}
cg8xs9f44cdr2b3e770ewcbr4slvgt9
285819
285815
2026-06-23T02:11:31Z
Denny
81
Added Z36842 to the approved list of test cases
285819
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36839"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36839K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "HTML"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z36840",
"Z36841",
"Z36842"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36839"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "text content of HTML fragment"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "removes all tags and returns escaped sequences "
}
]
}
}
fyvfsj3gu2u8dri3b6ta94q82za9p9a
285893
285819
2026-06-23T08:52:21Z
Denny
81
Added Z36860 to the approved list of implementations
285893
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36839"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36839K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "HTML"
}
]
}
}
],
"Z8K2": "Z6",
"Z8K3": [
"Z20",
"Z36840",
"Z36841",
"Z36842"
],
"Z8K4": [
"Z14",
"Z36860"
],
"Z8K5": "Z36839"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "text content of HTML fragment"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "removes all tags and returns escaped sequences "
}
]
}
}
my6duzq8zl5biiqaws0q7so1g9av03h
Z36840
0
86409
285812
2026-06-23T02:00:14Z
Denny
81
285812
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36840"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36839",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36839",
"Z36839K1": {
"Z1K1": "Z89",
"Z89K1": "to each according to their needs"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "Clarkson murder, imprisonment, and death"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "text only"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
c4vv6j3sauwvtu94v2o1jqplptkhk8e
285891
285812
2026-06-23T08:51:53Z
Denny
81
copy and paste error
285891
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36840"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36839",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36839",
"Z36839K1": {
"Z1K1": "Z89",
"Z89K1": "to each according to their needs"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "to each according to their needs"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "text only"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
5zxnmzkaiymsut9yya4mvbl4oppcdkc
Z36841
0
86410
285814
2026-06-23T02:01:40Z
Denny
81
285814
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36841"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36839",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36839",
"Z36839K1": {
"Z1K1": "Z89",
"Z89K1": "by the \u003Cstrong\u003Estrength\u003C/strong\u003E of the people"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "by the strength of the people"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "tag removal"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
f0jrxhahudm2348zbe7klwq550jqe0d
Z36842
0
86411
285818
2026-06-23T02:10:38Z
Denny
81
285818
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36842"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36839",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36839",
"Z36839K1": {
"Z1K1": "Z89",
"Z89K1": "we need to exchange \u0026lt; and \u0026amp; and \u0026gt;, that's all"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "we need to exchange \u003C and \u0026 and \u003E, that's all"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "HTML entities"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
clqythvhyvjnllxwi5bcx1r9dtvl6z5
Z36843
0
86412
285820
2026-06-23T02:44:47Z
99of9
1622
something like this
285820
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36843"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36835",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27861",
"Z27861K1": {
"Z1K1": "Z7",
"Z7K1": "Z12316",
"Z12316K1": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([\\s\\S]*?)\u003C\\/a\u003E"
]
},
"Z12316K2": {
"Z1K1": "Z7",
"Z7K1": "Z25833",
"Z25833K1": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z25833K2": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([\\s\\S]*?)\u003C\\/a\u003E"
]
},
"Z25833K3": ""
},
"Z12316K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z12316K4": "gi"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove specific AW link(s), compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
8fw2w8udeto11wrjrfzl74h3qnkj646
285822
285820
2026-06-23T02:49:50Z
99of9
1622
this!
285822
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36843"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36835",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27861",
"Z27861K1": {
"Z1K1": "Z7",
"Z7K1": "Z12316",
"Z12316K1": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([\\s\\S]*?)\u003C\\/a\u003E"
]
},
"Z12316K2": "$1",
"Z12316K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z12316K4": "gi"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove specific AW link(s), compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
h5larbjpxardos0qsiilv5t2if92gha
285834
285822
2026-06-23T04:02:12Z
99of9
1622
rearrange to deal with boolean option
285834
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36843"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36835",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27861",
"Z27861K1": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K3"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z12316",
"Z12316K1": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([\\s\\S]*?)\u003C\\/a\u003E"
]
},
"Z12316K2": "$1",
"Z12316K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z12316K4": "gi"
},
"Z802K3": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove specific AW link(s), compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
tr2mg0eptp0gm80zxjxhonv8229bww5
285835
285834
2026-06-23T04:03:05Z
99of9
1622
match types
285835
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36843"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36835",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27861",
"Z27861K1": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K3"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z12316",
"Z12316K1": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([\\s\\S]*?)\u003C\\/a\u003E"
]
},
"Z12316K2": "$1",
"Z12316K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z12316K4": "gi"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove specific AW link(s), compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
p51z5vv5im5kws63gvny2nqnuhjbp5n
285836
285835
2026-06-23T04:06:29Z
99of9
1622
negative lookahead for last match
285836
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36843"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36835",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27861",
"Z27861K1": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K3"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z12316",
"Z12316K1": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([\\s\\S]*?)\u003C\\/a\u003E"
]
},
"Z12316K2": "$1",
"Z12316K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z12316K4": "gi"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z12316",
"Z12316K1": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([\\s\\S]*?)\u003C\\/a\u003E",
"(?!.*",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([\\s\\S]*?)\u003C\\/a\u003E)"
]
},
"Z12316K2": "$1",
"Z12316K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z12316K4": "gi"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove specific AW link(s), compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
5q4ssxfap319h6ioek0bqr3imcw97tp
285837
285836
2026-06-23T04:16:27Z
99of9
1622
something like this
285837
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36843"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36835",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27861",
"Z27861K1": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K3"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z12316",
"Z12316K1": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([\\s\\S]*?)\u003C\\/a\u003E"
]
},
"Z12316K2": "$1",
"Z12316K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z12316K4": "gi"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z12316",
"Z12316K1": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([\\s\\S]*?)\u003C\\/a\u003E",
"(?!.*",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E[\\s\\S]*?\u003C\\/a\u003E)"
]
},
"Z12316K2": "$1",
"Z12316K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z12316K4": "i"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove specific AW link(s), compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
22fshppu7vk51mz3xen1sus6dwz2kaw
285849
285837
2026-06-23T05:17:33Z
99of9
1622
improve
285849
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36843"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36835",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27861",
"Z27861K1": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K3"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z12316",
"Z12316K1": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([\\s\\S]*?)\u003C\\/a\u003E"
]
},
"Z12316K2": "$1",
"Z12316K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z12316K4": "gi"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z12316",
"Z12316K1": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([^\u003C]*?)\u003C\\/a\u003E",
"(?!.*",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E[^\u003C]*?\u003C\\/a\u003E)"
]
},
"Z12316K2": "$1",
"Z12316K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z12316K4": "i"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove specific AW link(s), compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
czoemgocxatokj5xllpc61pnocbfumk
285851
285849
2026-06-23T05:48:38Z
99of9
1622
leave first only
285851
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36843"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36835",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z27861",
"Z27861K1": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K3"
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z12316",
"Z12316K1": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([\\s\\S]*?)\u003C\\/a\u003E"
]
},
"Z12316K2": "$1",
"Z12316K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z12316K4": "gi"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z12316",
"Z12316K1": {
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
"(?\u003C=",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E[^\u003C]*?\u003C\\/a\u003E.*)",
"\u003Ca\\s+[^\u003E]*href=[\"\\']https:\\/\\/abstract\\.wikipedia\\.org\\/wiki\\/",
{
"Z1K1": "Z7",
"Z7K1": "Z20041",
"Z20041K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K2"
}
},
"[\"\\'][^\u003E]*\u003E([^\u003C]*?)\u003C\\/a\u003E"
]
},
"Z12316K2": "$1",
"Z12316K3": {
"Z1K1": "Z7",
"Z7K1": "Z27854",
"Z27854K1": {
"Z1K1": "Z18",
"Z18K1": "Z36835K1"
}
},
"Z12316K4": "ig"
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove specific AW link(s), compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
gn433r9cz7cyumxu52shf7xwytxzamv
Z36844
0
86413
285824
2026-06-23T02:53:13Z
99of9
1622
285824
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36844"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36835",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36835",
"Z36835K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E"
},
"Z36835K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36835K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E Australia"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove only the last of 3 links to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
l1tlfd7nftnut8pdfhn5vx0ulot3gcz
285853
285824
2026-06-23T05:53:17Z
99of9
1622
285853
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36844"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36835",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36835",
"Z36835K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E"
},
"Z36835K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36835K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E Australia Australia"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove all but the first of 3 links to this QID"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
qdyr4b22q38xkuc4b28zcxc5sbx3ndz
Z36845
0
86414
285825
2026-06-23T03:16:23Z
99of9
1622
285825
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36845"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36835",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36835",
"Z36835K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAust.\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAUS\u003C/a\u003E"
},
"Z36835K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36835K3": {
"Z1K1": "Z40",
"Z40K1": "Z41"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "Australia Aust. AUS"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "3 links with different texts, remove all links"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
17qw78w820flrx1vdg2gc9m21ekkpek
Z36846
0
86415
285827
2026-06-23T03:17:27Z
99of9
1622
285827
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36846"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36835",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36835",
"Z36835K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAust.\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAUS\u003C/a\u003E"
},
"Z36835K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36835K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAust.\u003C/a\u003E AUS"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "3 links with different texts, remove only the last"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
fr2mlcvx07fzss2vcuud86guyk6qikt
285854
285827
2026-06-23T05:54:05Z
99of9
1622
285854
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36846"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36835",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36835",
"Z36835K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAust.\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAUS\u003C/a\u003E"
},
"Z36835K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36835K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E Aust. AUS"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "3 links with different texts, remove all but first"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
hw7nzh6tozsgjxo5c4xb6bd91sna9rz
Z36847
0
86416
285830
2026-06-23T03:41:58Z
Davoryunsavory
91108
Added a niche test case to showing how standard methods won't always produce accurate results
285830
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36847"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z10012",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z10012",
"Z10012K1": "🇺🇸👨👩👧👦"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "👨👩👧👦🇺🇸"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Emoji sequences and combined characters"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ey5foi9323vq1j7le9i7ou18hatiljl
Z36848
0
86417
285831
2026-06-23T03:50:13Z
Davoryunsavory
91108
Added a solution to the testcase testing for combined characters and emoji sequences
285831
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36848"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z10012",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z600",
"Z16K2": "function Z10012( Z10012K1 ) {\n\tif (!Intl.Segmenter) return [...Z10012K1].reverse().join(\"\");\n\tconst segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\n\tconst segments = [...segmenter.segment(Z10012K1)].map(s =\u003E s.segment);\n\treturn segments.reverse().join(\"\");\n}"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "Combined characters and emoji sequences"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "This function will handle combined characters and emoji sequences"
}
]
}
}
dai67jzfupq77ugpuur5vkm84upbdfj
Z36849
0
86418
285839
2026-06-23T04:53:17Z
Jsamwrites
938
285839
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36849"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36849K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36849"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "French pronouns table"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
eg16yq934436qdf0sh293l1jpu5ee1t
285841
285839
2026-06-23T04:59:49Z
Jsamwrites
938
Added Z36850 to the approved list of implementations
285841
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36849"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36849K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36850"
],
"Z8K5": "Z36849"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "French pronouns table"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
k6p49xkqdo6cw4hsq871u41hdaeio3s
285848
285841
2026-06-23T05:08:19Z
Jsamwrites
938
Added Z36851 to the approved list of test cases
285848
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36849"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36849K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "language"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36851"
],
"Z8K4": [
"Z14",
"Z36850"
],
"Z8K5": "Z36849"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "French pronouns table"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
kcpfk3q5lezdmz89w1eltm4jceeumak
Z36850
0
86419
285840
2026-06-23T04:59:36Z
Jsamwrites
938
285840
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36850"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36849",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z30232",
"Z30232K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
[
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q21714344"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q51929049"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q51929074"
}
],
[
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
]
],
"Z30232K2": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9094"
}
},
"Z21806K2": "Z1004"
},
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9288"
}
},
"Z21806K2": "Z1004"
}
],
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L750761"
}
},
"Z21806K2": "Z1004"
},
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9289"
}
},
"Z21806K2": "Z1004"
}
],
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9257"
}
},
"Z21806K2": "Z1004"
},
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9290"
}
},
"Z21806K2": "Z1004"
}
]
],
"Z30232K3": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q468801"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36849K1"
}
},
"Z30232K4": {
"Z1K1": "Z18",
"Z18K1": "Z36849K1"
},
"Z30232K5": "Z1004",
"Z30232K6": {
"Z1K1": "Z40",
"Z40K1": "Z42"
},
"Z30232K7": {
"Z1K1": "Z89",
"Z89K1": ""
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "French pronouns table, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
gn3x3pie51vspkrg5gac0tuapo89tuu
285842
285840
2026-06-23T05:02:09Z
Jsamwrites
938
285842
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36850"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36849",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z30232",
"Z30232K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
[
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q21714344"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q51929049"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q51929074"
}
],
[
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
]
],
"Z30232K2": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9094"
}
},
"Z21806K2": "Z1004"
},
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9288"
}
},
"Z21806K2": "Z1004"
}
],
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9096"
}
},
"Z21806K2": "Z1004"
},
",",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9289"
}
},
"Z21806K2": "Z1004"
}
]
},
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9289"
}
},
"Z21806K2": "Z1004"
}
],
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9257"
}
},
"Z21806K2": "Z1004"
},
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9290"
}
},
"Z21806K2": "Z1004"
}
]
],
"Z30232K3": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q468801"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36849K1"
}
},
"Z30232K4": {
"Z1K1": "Z18",
"Z18K1": "Z36849K1"
},
"Z30232K5": "Z1004",
"Z30232K6": {
"Z1K1": "Z40",
"Z40K1": "Z42"
},
"Z30232K7": {
"Z1K1": "Z89",
"Z89K1": ""
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "French pronouns table, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
oibzw4667pmd9yy08rhguhkvj632ado
285844
285842
2026-06-23T05:04:34Z
Jsamwrites
938
285844
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36850"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36849",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z30232",
"Z30232K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
[
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q21714344"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q51929049"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q51929074"
}
],
[
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
]
],
"Z30232K2": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9094"
}
},
"Z21806K2": "Z1004"
},
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9096"
}
},
"Z21806K2": "Z1004"
},
", ",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9289"
}
},
"Z21806K2": "Z1004"
}
]
}
],
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L2926"
}
},
"Z21806K2": "Z1004"
},
", ",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9288"
}
},
"Z21806K2": "Z1004"
}
]
},
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9289"
}
},
"Z21806K2": "Z1004"
}
],
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9257"
}
},
"Z21806K2": "Z1004"
},
", ",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9188"
}
},
"Z21806K2": "Z1004"
}
]
},
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9290"
}
},
"Z21806K2": "Z1004"
},
", ",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9435"
}
},
"Z21806K2": "Z1004"
}
]
}
]
],
"Z30232K3": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q468801"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36849K1"
}
},
"Z30232K4": {
"Z1K1": "Z18",
"Z18K1": "Z36849K1"
},
"Z30232K5": "Z1004",
"Z30232K6": {
"Z1K1": "Z40",
"Z40K1": "Z42"
},
"Z30232K7": {
"Z1K1": "Z89",
"Z89K1": ""
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "French pronouns table, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
fcc8bkhpbz6ivhm04lm6sgzmae6jzaq
285845
285844
2026-06-23T05:05:56Z
Jsamwrites
938
285845
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36850"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36849",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z30232",
"Z30232K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
[
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q21714344"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q51929049"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q51929074"
}
],
[
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
]
],
"Z30232K2": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9094"
}
},
"Z21806K2": "Z1004"
},
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L2260"
}
},
"Z21806K2": "Z1004"
},
", ",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9288"
}
},
"Z21806K2": "Z1004"
}
]
}
],
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9096"
}
},
"Z21806K2": "Z1004"
},
", ",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9289"
}
},
"Z21806K2": "Z1004"
}
]
},
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9289"
}
},
"Z21806K2": "Z1004"
}
],
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9257"
}
},
"Z21806K2": "Z1004"
},
", ",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9188"
}
},
"Z21806K2": "Z1004"
}
]
},
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9290"
}
},
"Z21806K2": "Z1004"
},
", ",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9435"
}
},
"Z21806K2": "Z1004"
}
]
}
]
],
"Z30232K3": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q468801"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36849K1"
}
},
"Z30232K4": {
"Z1K1": "Z18",
"Z18K1": "Z36849K1"
},
"Z30232K5": "Z1004",
"Z30232K6": {
"Z1K1": "Z40",
"Z40K1": "Z42"
},
"Z30232K7": {
"Z1K1": "Z89",
"Z89K1": ""
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "French pronouns table, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
i8avf1w9noftz3zrodjlg3d63x085gi
285846
285845
2026-06-23T05:06:45Z
Jsamwrites
938
285846
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36850"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36849",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z30232",
"Z30232K1": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
[
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q21714344"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q51929049"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q51929074"
}
],
[
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
},
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
]
],
"Z30232K2": [
{
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6"
},
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9094"
}
},
"Z21806K2": "Z1004"
},
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L2926"
}
},
"Z21806K2": "Z1004"
},
", ",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9288"
}
},
"Z21806K2": "Z1004"
}
]
}
],
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9096"
}
},
"Z21806K2": "Z1004"
},
", ",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9289"
}
},
"Z21806K2": "Z1004"
}
]
},
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9289"
}
},
"Z21806K2": "Z1004"
}
],
[
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9257"
}
},
"Z21806K2": "Z1004"
},
", ",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9188"
}
},
"Z21806K2": "Z1004"
}
]
},
{
"Z1K1": "Z7",
"Z7K1": "Z21394",
"Z21394K1": [
"Z6",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9290"
}
},
"Z21806K2": "Z1004"
},
", ",
{
"Z1K1": "Z7",
"Z7K1": "Z21806",
"Z21806K1": {
"Z1K1": "Z7",
"Z7K1": "Z6825",
"Z6825K1": {
"Z1K1": "Z6095",
"Z6095K1": "L9435"
}
},
"Z21806K2": "Z1004"
}
]
}
]
],
"Z30232K3": {
"Z1K1": "Z7",
"Z7K1": "Z24766",
"Z24766K1": {
"Z1K1": "Z6091",
"Z6091K1": "Q468801"
},
"Z24766K2": {
"Z1K1": "Z18",
"Z18K1": "Z36849K1"
}
},
"Z30232K4": {
"Z1K1": "Z18",
"Z18K1": "Z36849K1"
},
"Z30232K5": "Z1004",
"Z30232K6": {
"Z1K1": "Z40",
"Z40K1": "Z42"
},
"Z30232K7": {
"Z1K1": "Z89",
"Z89K1": ""
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "French pronouns table, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
r4j4jar8uvyoylg93up99z08hcadjct
Z36851
0
86420
285847
2026-06-23T05:08:04Z
Jsamwrites
938
285847
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36851"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36849",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36849",
"Z36849K1": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z29045",
"Z29045K2": "vous"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "French pronouns table has \"vous\""
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
a2695ay3g3tz749fnb87bumdgv5xtk4
Z36852
0
86421
285855
2026-06-23T05:55:08Z
99of9
1622
285855
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36852"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36835",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36835",
"Z36835K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E"
},
"Z36835K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q408"
},
"Z36835K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "only one (at the start), so leave it"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
k36iuif85dsfmnojhtdt3gtz1g01dh1
Z36853
0
86422
285858
2026-06-23T05:59:26Z
99of9
1622
285858
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36853"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36853K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36853K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of QIDs to remove links to"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36853"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove duplicate Abstract Wikipedia links to QIDs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
cokc9nawxe0ay1tixsenekvct8chbhs
285861
285858
2026-06-23T06:01:47Z
99of9
1622
Added Z36854 to the approved list of implementations
285861
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36853"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36853K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36853K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of QIDs to remove links to"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36854"
],
"Z8K5": "Z36853"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove duplicate Abstract Wikipedia links to QIDs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
az6bldjrw5mw67cchuov6l7k0imrkhe
285863
285861
2026-06-23T06:02:45Z
99of9
1622
Added Z36855 to the approved list of test cases
285863
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36853"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36853K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36853K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of QIDs to remove links to"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36855"
],
"Z8K4": [
"Z14",
"Z36854"
],
"Z8K5": "Z36853"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove duplicate Abstract Wikipedia links to QIDs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
rd5b2umuyrek947x4tm4h9jlvhlwzlc
285865
285863
2026-06-23T06:04:37Z
99of9
1622
Added Z36856 to the approved list of test cases
285865
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36853"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": "Z89",
"Z17K2": "Z36853K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "initial fragment"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36853K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of QIDs to remove links to"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20",
"Z36855",
"Z36856"
],
"Z8K4": [
"Z14",
"Z36854"
],
"Z8K5": "Z36853"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove duplicate Abstract Wikipedia links to QIDs"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
985m9wm5vd6na6f57tc6t09m1w68mr9
Z36854
0
86423
285859
2026-06-23T06:00:36Z
99of9
1622
285859
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36854"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36853",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z813",
"Z813K1": {
"Z1K1": "Z18",
"Z18K1": "Z36853K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": ""
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z36831",
"Z36831K1": {
"Z1K1": "Z7",
"Z7K1": "Z36835",
"Z36835K1": {
"Z1K1": "Z18",
"Z18K1": "Z36853K1"
},
"Z36835K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z18",
"Z18K1": "Z36853K2"
}
},
"Z36835K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z36831K2": {
"Z1K1": "Z7",
"Z7K1": "Z812",
"Z812K1": {
"Z1K1": "Z18",
"Z18K1": "Z36853K2"
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove duplicate AW links, recursive compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ocbn2yumev5qnhxihp0009pi922j515
285860
285859
2026-06-23T06:00:59Z
99of9
1622
fix
285860
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36854"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36853",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z813",
"Z813K1": {
"Z1K1": "Z18",
"Z18K1": "Z36853K2"
}
},
"Z802K2": {
"Z1K1": "Z18",
"Z18K1": "Z36853K1"
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z36831",
"Z36831K1": {
"Z1K1": "Z7",
"Z7K1": "Z36835",
"Z36835K1": {
"Z1K1": "Z18",
"Z18K1": "Z36853K1"
},
"Z36835K2": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z18",
"Z18K1": "Z36853K2"
}
},
"Z36835K3": {
"Z1K1": "Z40",
"Z40K1": "Z42"
}
},
"Z36831K2": {
"Z1K1": "Z7",
"Z7K1": "Z812",
"Z812K1": {
"Z1K1": "Z18",
"Z18K1": "Z36853K2"
}
}
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove duplicate AW links, recursive compose"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
qyfwhepusp1dcd9jodrzuham5155m42
Z36855
0
86424
285862
2026-06-23T06:02:24Z
99of9
1622
285862
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36855"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36853",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36853",
"Z36853K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Cdiv role=\"note\" class=\"hatnote navigation-not-searchable\"\u003E\u003Ci\u003EMain articles: \u003C/i\u003E\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q174825\"\u003EHistory of Australia\u003C/a\u003E and \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q4501797\"\u003ETimeline of Australian history\u003C/a\u003E\u003C/div\u003E"
},
"Z36853K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q4501797"
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Cdiv role=\"note\" class=\"hatnote navigation-not-searchable\"\u003E\u003Ci\u003EMain articles: \u003C/i\u003E\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q174825\"\u003EHistory of Australia\u003C/a\u003E and \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q4501797\"\u003ETimeline of Australian history\u003C/a\u003E\u003C/div\u003E"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "no duplicates, return initial fragment"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
e2i4fpu415zh7p4q2ksbim6y7gnfj6c
Z36856
0
86425
285864
2026-06-23T06:04:18Z
99of9
1622
285864
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36856"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36853",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36853",
"Z36853K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E \u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E"
},
"Z36853K2": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q408"
}
]
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z877",
"Z877K2": {
"Z1K1": "Z89",
"Z89K1": "\u003Ca href=\"https://abstract.wikipedia.org/wiki/Q408\"\u003EAustralia\u003C/a\u003E Australia Australia"
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "remove all but first of three links"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
ss1kt7q4ynjsskot43a5jiemw3i8w7t
Z36857
0
86426
285871
2026-06-23T06:19:21Z
Jsamwrites
938
285871
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36857"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36857K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of subtopic article[s] (QIDs)"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z36857K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[#] list of subtopic label configurators"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36857K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[#] self reference?"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36857"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "main articles, French"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
9wvksiz3du3a0ot4g154sk6qiujkf1s
285873
285871
2026-06-23T06:24:19Z
Jsamwrites
938
Added Z36858 to the approved list of implementations
285873
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36857"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36857K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of subtopic article[s] (QIDs)"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z36857K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[#] list of subtopic label configurators"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36857K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[#] self reference?"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36858"
],
"Z8K5": "Z36857"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "main articles, French"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
s62f9f7ee71lv02c74d37zgiei38l3o
285876
285873
2026-06-23T06:34:47Z
Jsamwrites
938
Removed Z36858 from the approved list of implementations
285876
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36857"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36857K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of subtopic article[s] (QIDs)"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z36857K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[#] list of subtopic label configurators"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36857K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[#] self reference?"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36857"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "main articles, French"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
9wvksiz3du3a0ot4g154sk6qiujkf1s
285877
285876
2026-06-23T06:35:08Z
Jsamwrites
938
285877
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36857"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36857K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of subtopic article[s] (QIDs)"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z36857K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[#] list of subtopic label configurators"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36857K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[#] self reference?"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36857K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "variant of French"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14"
],
"Z8K5": "Z36857"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "main articles, French"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
qouqj3yg5t7s6d7wn8utn1261k2s8jo
285878
285877
2026-06-23T06:35:15Z
Jsamwrites
938
Added Z36858 to the approved list of implementations
285878
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36857"
},
"Z2K2": {
"Z1K1": "Z8",
"Z8K1": [
"Z17",
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z6091"
},
"Z17K2": "Z36857K1",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "list of subtopic article[s] (QIDs)"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": {
"Z1K1": "Z7",
"Z7K1": "Z881",
"Z881K1": "Z1"
},
"Z17K2": "Z36857K2",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[#] list of subtopic label configurators"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z40",
"Z17K2": "Z36857K3",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "[#] self reference?"
}
]
}
},
{
"Z1K1": "Z17",
"Z17K1": "Z60",
"Z17K2": "Z36857K4",
"Z17K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "variant of French"
}
]
}
}
],
"Z8K2": "Z89",
"Z8K3": [
"Z20"
],
"Z8K4": [
"Z14",
"Z36858"
],
"Z8K5": "Z36857"
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "main articles, French"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
dfrtfjeyxkb50rn93eoqkp18grwiwh3
Z36858
0
86427
285872
2026-06-23T06:23:40Z
Jsamwrites
938
285872
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36858"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36857",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z12755",
"Z12755K1": {
"Z1K1": "Z18",
"Z18K1": "Z36857K1"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z27849",
"Z27849K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Ci\u003EArticle détaillé : \u003C/i\u003E"
},
"Z27849K2": {
"Z1K1": "Z7",
"Z7K1": "Z33848",
"Z33848K1": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z18",
"Z18K1": "Z36857K1"
}
},
"Z33848K2": {
"Z1K1": "Z60",
"Z60K1": "fr",
"Z60K2": [
"Z6"
]
}
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z27926",
"Z27926K1": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "\u003Ci\u003EArticles détaillés : \u003C/i\u003E"
},
{
"Z1K1": "Z7",
"Z7K1": "Z35766",
"Z35766K1": {
"Z1K1": "Z7",
"Z7K1": "Z13464",
"Z13464K1": "Z33848",
"Z13464K2": {
"Z1K1": "Z7",
"Z7K1": "Z12967",
"Z12967K1": {
"Z1K1": "Z18",
"Z18K1": "Z36857K1"
}
},
"Z13464K3": "Z1004"
},
"Z35766K2": {
"Z1K1": "Z89",
"Z89K1": ", "
}
},
{
"Z1K1": "Z89",
"Z89K1": " and "
},
{
"Z1K1": "Z7",
"Z7K1": "Z33848",
"Z33848K1": {
"Z1K1": "Z7",
"Z7K1": "Z12964",
"Z12964K1": {
"Z1K1": "Z18",
"Z18K1": "Z36857K1"
}
},
"Z33848K2": {
"Z1K1": "Z60",
"Z60K1": "fr",
"Z60K2": [
"Z6"
]
}
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "main articles, French, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
qidtq901zdx8hc1dybtkdeur5nx91oe
285874
285872
2026-06-23T06:25:25Z
Jsamwrites
938
285874
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36858"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36857",
"Z14K2": {
"Z1K1": "Z7",
"Z7K1": "Z802",
"Z802K1": {
"Z1K1": "Z7",
"Z7K1": "Z12755",
"Z12755K1": {
"Z1K1": "Z18",
"Z18K1": "Z36857K1"
}
},
"Z802K2": {
"Z1K1": "Z7",
"Z7K1": "Z27849",
"Z27849K1": {
"Z1K1": "Z89",
"Z89K1": "\u003Ci\u003EArticle détaillé : \u003C/i\u003E"
},
"Z27849K2": {
"Z1K1": "Z7",
"Z7K1": "Z33848",
"Z33848K1": {
"Z1K1": "Z7",
"Z7K1": "Z811",
"Z811K1": {
"Z1K1": "Z18",
"Z18K1": "Z36857K1"
}
},
"Z33848K2": {
"Z1K1": "Z60",
"Z60K1": "fr",
"Z60K2": [
"Z6"
]
}
}
},
"Z802K3": {
"Z1K1": "Z7",
"Z7K1": "Z27926",
"Z27926K1": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "\u003Ci\u003EArticles détaillés : \u003C/i\u003E"
},
{
"Z1K1": "Z7",
"Z7K1": "Z35766",
"Z35766K1": {
"Z1K1": "Z7",
"Z7K1": "Z13464",
"Z13464K1": "Z33848",
"Z13464K2": {
"Z1K1": "Z7",
"Z7K1": "Z12967",
"Z12967K1": {
"Z1K1": "Z18",
"Z18K1": "Z36857K1"
}
},
"Z13464K3": "Z1004"
},
"Z35766K2": {
"Z1K1": "Z89",
"Z89K1": ", "
}
},
{
"Z1K1": "Z89",
"Z89K1": " et "
},
{
"Z1K1": "Z7",
"Z7K1": "Z33848",
"Z33848K1": {
"Z1K1": "Z7",
"Z7K1": "Z12964",
"Z12964K1": {
"Z1K1": "Z18",
"Z18K1": "Z36857K1"
}
},
"Z33848K2": {
"Z1K1": "Z60",
"Z60K1": "fr",
"Z60K2": [
"Z6"
]
}
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "main articles, French, comp"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
94hfyb39lywo0e18cf85c1bxz3zrs77
Z36859
0
86428
285885
2026-06-23T07:04:15Z
99of9
1622
285885
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36859"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z25326",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z25326",
"Z25326K1": {
"Z1K1": "Z6010",
"Z6010K1": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "999"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "100"
}
},
"Z6010K2": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "999"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "100"
}
},
"Z6010K3": {
"Z1K1": "Z19677",
"Z19677K1": {
"Z1K1": "Z16659",
"Z16659K1": "Z16660"
},
"Z19677K2": {
"Z1K1": "Z13518",
"Z13518K1": "999"
},
"Z19677K3": {
"Z1K1": "Z13518",
"Z13518K1": "100"
}
},
"Z6010K4": {
"Z1K1": "Z6091",
"Z6091K1": "Q259502"
}
},
"Z25326K2": "Z1002"
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z866",
"Z866K2": "AU$9.99"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "\"AU$9.99\" currency units before value"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
2jfg9l9dtpuw4xqe5xn9lesr1gs8qmn
Z36860
0
86429
285892
2026-06-23T08:52:10Z
Denny
81
285892
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36860"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36839",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z36839(Z36839K1):\n\timport re\n\ttext = Z36839K1.Z89K1\n\ttext = re.sub('\u003C[^\u003C]+\u003E', '', text)\n\ttext = re.sub('\u0026lt;', '\u003C', text)\n\ttext = re.sub('\u0026gt;', '\u003E', text)\n\ttext = re.sub('\u0026amp;', '\u0026', text)\n\treturn text"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
bxgh7lmp6q7leph1kno6khu9mlwf00q
285894
285892
2026-06-23T08:52:45Z
Denny
81
285894
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36860"
},
"Z2K2": {
"Z1K1": "Z14",
"Z14K1": "Z36839",
"Z14K3": {
"Z1K1": "Z16",
"Z16K1": "Z610",
"Z16K2": "def Z36839(Z36839K1):\n\timport re\n\ttext = Z36839K1.Z89K1\n\ttext = re.sub('\u003C[^\u003C]+\u003E', '', text)\n\ttext = re.sub('\u0026lt;', '\u003C', text)\n\ttext = re.sub('\u0026gt;', '\u003E', text)\n\ttext = re.sub('\u0026amp;', '\u0026', text)\n\treturn text"
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "python regular expressions for tags and entities"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
awk5hbs6e3zxjpbr4daidpw71o3ft28
Z36861
0
86430
285896
2026-06-23T08:57:21Z
Denny
81
285896
zobject
text/plain
{
"Z1K1": "Z2",
"Z2K1": {
"Z1K1": "Z6",
"Z6K1": "Z36861"
},
"Z2K2": {
"Z1K1": "Z20",
"Z20K1": "Z36798",
"Z20K2": {
"Z1K1": "Z7",
"Z7K1": "Z36798",
"Z36798K1": "Z36781",
"Z36798K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1084"
},
"Z36462K3": [
"Z6091"
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "\u003Cstrong\u003EAfrican elephant\u003C/strong\u003E"
}
]
},
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q146786"
}
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "\u003Cstrong\u003EAfrican elephants\u003C/strong\u003E"
}
]
}
]
}
},
"Z20K3": {
"Z1K1": "Z7",
"Z7K1": "Z36717",
"Z36717K2": {
"Z1K1": "Z36462",
"Z36462K1": "Z1002",
"Z36462K2": {
"Z1K1": "Z6091",
"Z6091K1": "Q1401131"
},
"Z36462K3": [
"Z6091",
{
"Z1K1": "Z6091",
"Z6091K1": "Q110786"
}
],
"Z36462K4": [
"Z36463",
{
"Z1K1": "Z36463",
"Z36463K1": [
"Z6091"
],
"Z36463K2": [
"Z89",
{
"Z1K1": "Z89",
"Z89K1": "an \u003Cstrong\u003EAfrican elephant\u003C/strong\u003E"
}
]
}
]
}
}
},
"Z2K3": {
"Z1K1": "Z12",
"Z12K1": [
"Z11",
{
"Z1K1": "Z11",
"Z11K1": "Z1002",
"Z11K2": "an African elephant"
}
]
},
"Z2K4": {
"Z1K1": "Z32",
"Z32K1": [
"Z31"
]
},
"Z2K5": {
"Z1K1": "Z12",
"Z12K1": [
"Z11"
]
}
}
qay6akofpuyrlvmfqhughtrvx77r4eu