Abstract Wikipedia

Project

This project consists of two parts: Abstract Wikipedia and Wikifunctions.

The goal of Abstract Wikipedia is to let more people share more knowledge in more languages. Abstract Wikipedia is a conceptual extension of Wikidata.[1] In Abstract Wikipedia, people can create and maintain Wikipedia articles in a language-independent way. A particular language Wikipedia can translate this language-independent article into its language. Code does the translation.

Wikifunctions is a new Wikimedia project that allows anyone to create and maintain code. This is useful in many different ways. It provides a catalog of all kinds of functions that anyone can call, write, maintain, and use. It also provides code that translates the language-independent article from Abstract Wikipedia into the language of a Wikipedia. This allows everyone to read the article in their language. Wikifunctions will use knowledge about words and entities from Wikidata.

This will get us closer to a world where everyone can share in the sum of all knowledge.

What is a function?

A "function" is a sequence of computer program instructions that makes a calculation based on data you provide. Functions are a form of knowledge that can answer questions, such as how many days have passed between two dates or the distance between two cities. More complicated functions can answer more complicated questions, such as the volume of a three dimensional shape, the distance between Mars and Venus on a certain date, or whether two species were alive at the same time. We already use functions in many types of knowledge inquiries, such as asking a question to a search engine. The templates known as {{convert}} and {{age}} in English are also examples of functionalities that are already used in many Wikipedias, written in wikitext and Lua and manually copied to each wiki where it's wanted.

More examples of functions are at Early function examples, and very rough sketches of how the interface might look are at Early mockups.

In short, functions make a calculation on the data you provide, and answer a question you have about it.

This new Wikimedia project will build a library of functions, written by volunteers, to help answer questions like these across languages. By building out our library of functions, we can enable more people to access and explore free knowledge in new ways.

What is Abstract Wikipedia?

A visual explanation of the Abstract Wikipedia project and Wikifunctions

The term “Abstract Wikipedia” itself refers to the long-term goal – that this library of functions will someday enable the creation of language-independent articles. Once more pieces of this project are in place, this will mean that any wiki – especially small to medium wikis – will be able to dramatically increase the number of articles available in their language. It also means that editors can share knowledge from their culture and contexts with a larger and more global audience.

The new wiki of functions, Wikifunctions, will develop the coding infrastructure to make this vision possible. The Abstract Wikipedia part of the project has started with our shared work on natural language generation functions, such as morphological functions.

In other words: we will be able to combine the functions from the new wiki, with the data and linguistic-information in Wikidata, in order to generate natural language sentences in any supported languages. These sentences can then be used by any Wikipedia (or elsewhere).

Timeline

Participate

Background

An article in the Signpost provides a more detailed introduction to the idea. The material below – research papers, videos of talks, prototype software – offers a lot of detail. A detailed draft plan for the development of Abstract Wikipedia is also available.

See the Historic proposal page for the long list of related discussions, papers, videos, and comparable proposals.

Originally, the project was code-named Wikilambda, derived from Lambda calculus. The name is still referenced in the name of Extension:WikiLambda and in the Wikifunctions logo which contains a lambda character.

Highlights include:

Further reading

Project plan

  1. Summary: overview of the project plan
  2. Name: discussion on the name of the project
  3. Goals: what are we trying to achieve? Primary and secondary goals
  4. Organization: how the development team would be set up
  5. Requirements: overall conditions that the project needs to fulfill
  6. Architecture: an overview of how the project components would work together
  7. Components: individual software components the project needs to deliver
  8. Tasks: individual tasks that need to be done by the projects
(single page version)

References

  1. The new components (listed in the development plan for Abstract Wikipedia) include extensions to Wikidata, whose integration (in the second year of the project) requires the agreement of the Wikidata community before storing the “abstract content” there or on another wiki (such as the new Wikifunctions wiki developed in the first part of the project, or another multilingual wiki).