text:
Talk:Josephus on Jesus

Shlomo Pines
Someone to add the findings and biblography of Shlomo Pines along with his translations of Josephus' testimony. Tuxzos22 (talk) 13:48, 28 September 2021 (UTC)

Please. Tuxzos22 (talk) 13:48, 28 September 2021 (UTC)

Two suggestions
-sche (talk) 22:30, 16 January 2022 (UTC)
 * Dunn's reconstruction of the Testimonium is quoted via quote box (fullwidth, in contrast to the quote-boxes that are right-aligned like pictures), Vermes's version is quoted via <blockquote>. It's odd to have such different formatting only a few paragraphs apart, on the same screen; can we pick a consistent format?
 * That most modern scholars accept that the Testimonium is partially authentic and had an authntic kernel is repeated 6+ times, sometimes in adjacent paragraphs: It is broadly agreed that while the Testimonium Flavianum cannot be authentic in its entirety, it originally consisted of an authentic nucleus, followed in the next section by most modern scholars accept the position that the Testimonium is partially authentic, had a kernel with an authentic reference to Jesus, and that the analysis of its content and style support this conclusion.[51][9] While before the advent of literary criticism most scholars considered the Testimonium entirely authentic, thereafter the number of supporters of full authenticity declined.[52] However, most scholars now accept partial authenticity and many attempt to reconstruct their own version of the authentic kernel, and shortly thereafter While early scholars considered the Testimonium to be a total forgery, the majority of modern scholars consider it partially authentic, despite some clear Christian interpolations in the text and a few sections further down Almost all modern scholars reject the total authenticity of the Testimonium, while the majority of scholars still hold that it includes an authentic kernel and a few sections after that most modern scholars believe that the Testimonium is partially authentic, and has a reference to Jesus. Can (should?) this be made any less repetitive?

 * If it can be improved then it should be. Perhaps your real question is whether these thin opinions belong here at all. Since "Some people say" is the most common example of weasel words, I support removing them or at least adding citation-needed to each instance. Cutelyaware (talk) 08:35, 2 February 2022 (UTC)

ISBN error
The Google search for the ISBN 0-8146-5152-6 leads to a different book (James of Jerusalem: Heir to Jesus of Nazareth) not The Brother of Jesus: James the Just and His Mission.-- İskender  Balas 💬 20:46, 12 February 2022 (UTC)

Academic consensus
Please obey WP:RS/AC. tgeorgescu (talk) 07:27, 14 October 2022 (UTC)

 * I was manually reverting an edit (i.e. from "Almost all" BACK to "some" as I interpreted that as itself a violation of WP:RS/AC. I was patrolling new edits on WikiLoop Doublecheck and closed the page by accident so went back to do it manually. Shouldn't it be reverted (again!) back to "some"? Eggventura (talk) 07:44, 14 October 2022 (UTC)

 * Every scholar worth his salt will say that it is impossible that Josephus wrote that piece of Christian propaganda, simply because he wasn't a Christian. Only a Christian would write that Jesus is the Messiah, or that Jesus was resurrected the third day. tgeorgescu (talk) 10:37, 14 October 2022 (UTC)
 * While I doubt that Josephus wrote anything of the sort about Jesus, it is possible that the apocryphal text replaced or embellished one of Josephus' original texts. Some copyist simply altered the text to fit his/her pious bias. Dimadick (talk) 11:23, 14 October 2022 (UTC)
 * Point taken, you're right and we should leave it as "some"-- I'm just hardwired to be put off by hard-and-fast near definitive wording like "almost all" and saw it as a necessary reversion; will be more cautious in the future Eggventura (talk) 00:47, 15 October 2022 (UTC)

Arabic Testimonium
It would be beneficial, I think, to include the translation made by Shlomo Pines of the Arabic version of the Testimonium:
 * "At this time there was a wise man who was called Jesus. And his conduct was good, and [he] was known to be virtuous. And many people from among the Jews and the other nations became his disciples. Pilate condemned him to be crucified and to die. And those who had become his disciples did not abandon his discipleship. They reported that he had appeared to them three days after his crucifixion and that he was alive; accordingly he was perhaps the Messiah concerning whom the prophets have recounted wonders."

 Catfish  Jim  and the soapdish  20:41, 28 January 2023 (UTC)

Bogus
is just bogus. First, Josephus did not believe in the resurrection of Jesus, we know full well that Josephus wasn't Christian. Second, even if he did, that nucleus could never pass for authentic historical fact among modern historians. Third, the edit by the IP distorted the majority view of mainstream Bible scholars, who do consider that the passage was altered/interpolated by Christians. Perhaps it does not distort it in a blatant way, but it distorts it by implication (suggestion). Fourth, it leaves the words utterly unexplained. tgeorgescu (talk) 15:22, 22 October 2023 (UTC)

title: Talk:Josephus on Jesus


text:
International Ski and Snowboard Federation

The International Ski and Snowboard Federation, also known as FIS (Fédération Internationale de Ski et de Snowboard), is the highest international governing body for skiing and snowboarding. It was previously known as the International Ski Federation (Fédération Internationale de Ski) until 26 May 2022 when the name was changed to include snowboard.

Founded on 2 February 1924 in Chamonix, France during the inaugural Winter Olympic Games, FIS is responsible for the Olympic skiing disciplines, namely Alpine skiing, cross-country skiing, ski jumping, Nordic combined, freestyle skiing, and snowboarding. The FIS is also responsible for setting the international competition rules. The organization has a membership of 132 national ski associations, and is based in Oberhofen am Thunersee, Switzerland.

Most World Cup wins
At least 50 World Cup wins in all disciplines run by the International Ski and Snowboard Federation for men and women:

Updated as of 3 February 2024

Ski disciplines
The federation organises the following ski sport disciplines, for which it oversees the FIS Games as well as World Cup competitions and World Championships:

Founding and the first years
After ski club federations and national associations were created in Norway (1883 and 1908), Russia (1896), Bohemia and Great Britain (1903), Switzerland (1904), United States, Austria and Germany (all in 1905) and Sweden, Finland and Italy (all in 1908), and competitions had begun such as the Nordic Games, early international cross-country races (Adelboden, 1903), international participation at Holmenkollen (1903) and Club Alpin Français (CAF) International Winter Sports Weeks, an international Ski Congress was convened to develop standard rules for international competitive skiing.

The founding of a predecessor association, the International Ski Commission (CIS), was decided on February 18, 1910, in Christiania, Norway by delegates from ten countries to the first International Ski Congress. This Congress then met every year or so to hear from the CIS and refine and adopt rule changes. The commission was to consist of two members - a representative of Scandinavia and Central Europe. Ultimately, two Scandinavians sat on the commission. A year later, in March 1911, the first internationally valid set of rules was approved. At that time, the commission was enlarged to five members, and Oslo was elected as headquarters.

In 1913, the number of members of the commission was increased to seven: two Norwegians, two Swedes, a Swiss, a German and an Austrian.

On February 2, 1924, in Chamonix as part of the "International Winter Sports Week", which was later to be recognized as the first Olympic Winter Games, 36 delegates from 14 countries (Great Britain, Austria, Czechoslovakia, Finland, France, Yugoslavia, Norway, Poland, Romania, US, Switzerland, Sweden, Hungary and Italy) decided to found the FIS, which replaced the CIS.

Initially, the FIS was only responsible for Nordic skiing. FIS Nordic World Ski Championships 1925 in Janské Lázně, Czechoslovakia, were given status as the first official World Championships. After the Scandinavian countries had relented, it was decided at the 11th FIS Congress (February 24–26, 1930 in Oslo) to also include alpine skiing (downhill, slalom and alpine combined) in the rules. This was upon a proposal by Great Britain, in which the British ski pioneer Arnold Lunn played a major role as co-founder of the Arlberg-Kandahar races. The simple sentence "Downhill and slalom races may be organized" was written into the rules - a sentence that was to change skiing in the long term. The first FIS Alpine World Ski Championships were held 19–23 February 1931 in Mürren, Switzerland.

Ski flying, a variation of ski jumping, was recognized as a discipline in 1938, but rules were not finalized until after World War II.

List of Ski Congresses
• 1910 – Christiania (I)

• 1911 – Stockholm (II)

• 1912 – Munich (III)

• 1913 – Bern/Interlaken (IV)

• 1914 – Christiania (V)

• 1922 – Stockholm (VI)

• 1923 – Prague (VII)

• 1924 – Chamonix (VIII)

• 1926 – Lahti (IX)

• 1928 – St. Moritz (X)

• 1930 – Oslo (XI)

• 1932 – Paris (XII)

• 1934 – Sollefteå (XIII)

• 1936 – Garmisch-Partenkirchen (XIV)

• 1938 – Helsinki (XV)

• 1946 – Pau (XVI)

• 1949 – Oslo (XVII)

• 1951 – Venice (XVIII)

• 1953 – Igls (XIX)

• 1955 – Montreux (XX)

• 1957 – Dubrovnik (XXI)

• 1959 – Stockholm (XXII)

• 1961 – Madrid (XXIII)

• 1963 – Athens (XXIV)

• 1965 – Mamaia (XXV)

• 1967 – Beirut (XVI)

• 1968 – Barcelona (XVII)

• 1971 – Opatija (XVIII)

• 1973 – Nicosie (XIX)

• 1975 – San Francisco (XXX)

• 1977 – Bariloche (XXXI)

• 1979 – Nice (XXXII)

• 1981 – Puerto de la Cruz (XXXIII)

• 1983 – Sydney (XXXIV)

• 1985 – Vancouver (XXXV)

• 1988 – Istanbul (XXXVI)

• 1990 – Montreux (XXXVII)

• 1992 – Budapest (XXXVIII)

• 1994 – Rio de Janeiro (XXXIX)

• 1996 – Christchurch (XL)

• 1998 – Prague (XLI)

• 2000 – Melbourne (XLII)

• 2002 – Portorož (XLIII)

• 2004 – Miami (XLIV)

• 2006 – Vilamoura (XLV)

• 2008 – Cape Town (XLVI)

• 2010 – Antalya (XLVII)

• 2012 – Kangwonland (XLVIII)

• 2014 – Barcelona (XLIX)

• 2016 – Cancún (L)

• 2018 – Costa Navarino (LI)

• 2021 – Online (LII)

• 2022 – Vilamoura (LIII)

Members

 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}
 * {{subst:undefined}}

Official FIS ski museums
As of 2017, there are 31 official FIS Ski Museums worldwide in 13 countries which are devoted to the history of skiing, taking into account the region's own history of skiing and tourism.

List of FIS ski museums

 * FIS Skimuseum Damüls, Vorarlberg (Austria)
 * FIS-Winter!Sport!Museum! Mürzzuschlag (Austria)
 * FIS-Landes-Skimuseum Werfenweng (Austria)
 * FIS-Ski-Museum Vaduz (Liechtenstein)

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Mesoamerican ballgame

The Mesoamerican ballgame (ōllamalīztli,, ) was a sport with ritual associations played since at least 1650 BC by the pre-Columbian people of Ancient Mesoamerica. The sport had different versions in different places during the millennia, and a modernized version of the game, ulama, is still played by the indigenous populations in some places.

The rules of the Mesoamerican ballgame are not known, but judging from its descendant, ulama, they were probably similar to racquetball, where the aim is to keep the ball in play. The stone ballcourt goals are a late addition to the game.

In the most common theory of the game, the players struck the ball with their hips, although some versions allowed the use of forearms, rackets, bats, or handstones. The ball was made of solid rubber and weighed as much as 4 kg (9 lbs), and sizes differed greatly over time or according to the version played.

The Mesoamerican ballgame had important ritual aspects, and major formal ballgames were held as ritual events. Late in the history of the game, some cultures occasionally seem to have combined competitions with religious human sacrifice. The sport was also played casually for recreation by children and may have been played by women as well.

Pre-Columbian ballcourts have been found throughout Mesoamerica, as for example at Copán, as far south as modern Nicaragua, and possibly as far north as what is now the U.S. state of Arizona. These ballcourts vary considerably in size, but all have long narrow alleys with slanted side-walls against which the balls could bounce.

Name
The Mesoamerican ballgame is known by a wide variety of names. In English, it is often called pok-ta-pok (or pok-a-tok). This term originates from a 1932 article by Danish archaeologist Frans Blom, who adapted it from the Yucatec Maya word pokolpok.

In Nahuatl, the language of the Aztecs, it was called ōllamaliztli or tlachtli. In Classical Maya, it was known as pitz. In modern Spanish, it is called juego de pelota maya ('Maya ballgame'), juego de pelota mesoamericano ('Mesoamerican ballgame'), or simply pelota maya ('Maya ball').

Origins

It is not known precisely when or where the Mesoamerican ballgame originated, although it is likely that it originated earlier than 2000 BC in the low-lying tropical zones home to the rubber tree.

One candidate for the birthplace of the ballgame is the Soconusco coastal lowlands along the Pacific Ocean. Here, at Paso de la Amada, archaeologists have found the oldest ballcourt yet discovered, dated to approximately 1400 BC.

The other major candidate is the Olmec heartland, across the Isthmus of Tehuantepec along the Gulf Coast. The Aztecs referred to their Postclassic contemporaries who then inhabited the region as the Olmeca (i.e. "rubber people") since the region was strongly identified with latex production. The earliest-known rubber balls in the world come from the sacrificial bog at El Manatí, an early Olmec-associated site located in the hinterland of the Coatzacoalcos River drainage system.

Villagers, and archaeologists, have recovered a dozen balls ranging in diameter from 10 to 22 cm from the freshwater spring there. Five of these balls have been dated to the earliest-known occupational phase for the site, approximately 1700–1600 BC. These rubber balls were found with other ritual offerings buried at the site, indicating that even at this early date the game had religious and ritual connotations. A stone "yoke" of the type frequently associated with Mesoamerican ballcourts was also reported to have been found by local villagers at the site, leaving open the distinct possibility that these rubber balls were related to the ritual ballgame, and not simply an independent form of sacrificial offering.

Excavations at the nearby Olmec site of San Lorenzo Tenochtitlán have also uncovered a number of ballplayer figurines, radiocarbon-dated as far back as 1250–1150 BC. A rudimentary ballcourt, dated to a later occupation at San Lorenzo, 600–400 BC, has also been identified.

From the tropical lowlands, the game apparently moved into central Mexico. Starting around 1000 BC or earlier, ballplayer figurines were interred with burials at Tlatilco and similarly styled figurines from the same period have been found at the nearby Tlapacoya site. It was about this period, as well, that the so-called Xochipala-style ballplayer figurines were crafted in Guerrero. Although no ballcourts of similar age have been found in Tlatilco or Tlapacoya, it is possible that the ballgame was indeed played in these areas, but on courts with perishable boundaries or temporary court markers.

By 300 BC, evidence for the game appears throughout much of the Mesoamerican archaeological record, including ballcourts in the Central Chiapas Valley (the next oldest ballcourts discovered, after Paso de la Amada), and in the Oaxaca Valley, as well as ceramic ballgame tableaus from Western Mexico (see photo below).

Material and formal aspects

As might be expected with a game played over such a long period of time by many cultures, details varied over time and place, so the Mesoamerican ballgame might be more accurately seen as a family of related games.

In general, the hip-ball version is most popularly thought of as the Mesoamerican ballgame, and researchers believe that this version was the primary—or perhaps only—version played within the masonry ballcourt. Ample archaeological evidence exists for games where the ball was struck by a wooden stick (e.g., a mural at Teotihuacan shows a game which resembles field hockey), racquets, bats and batons, handstones, and the forearm, perhaps at times in combination. Each of the various types of games had its own size of ball, specialized gear and playing field, and rules.

Games were played between two teams of players. The number of players per team could vary, from two to four. Some games were played on makeshift courts for simple recreation while others were formal spectacles on huge stone ballcourts leading to human sacrifice.

Even without human sacrifice, the game could be brutal and there were often serious injuries inflicted by the solid, heavy ball. Today's hip-ulama players are "perpetually bruised" while nearly 500 years ago Spanish chronicler Diego Durán reported that some bruises were so severe that they had to be  lanced open. He also reported that players were even killed when the ball "hit them in the mouth or the stomach or the intestines".

The rules of the Mesoamerican ballgame, regardless of the version, are not known in any detail. In modern-day ulama, the game resembles a netless volleyball, with each team confined to one half of the court. In the most widespread version of ulama, the ball is hit back and forth using only the hips until one team fails to return it or the ball leaves the court.

In the Postclassic period, the Maya began placing vertical stone rings on each side of the court, the object being to pass the ball through one, an innovation that continued into the later Toltec and Aztec cultures.

In the 16th-century Aztec ballgame that the Spaniards witnessed, points were lost by a player who let the ball bounce more than twice before returning it to the other team, who let the ball go outside the boundaries of the court, or who tried and failed to pass the ball through one of the stone rings placed on each wall along the center line. According to 16th-century Aztec chronicler Motolinia, points were gained if the ball hit the opposite end wall, while the decisive victory was reserved for the team that put the ball through a ring. However, placing the ball through the ring was a rare event—the rings at Chichen Itza, for example, were set 6 m off the playing field—and most games were likely won on points.

Clothing and gear
The game's paraphernalia—clothing, headdresses, gloves, all but the stone—are long gone, so knowledge on clothing relies on art—paintings and drawings, stone reliefs, and figurines—to provide evidence for pre-Columbian ballplayer clothing and gear, which varied considerably in type and quantity. Capes and masks, for example, are shown on several Dainzú reliefs, while Teotihuacan murals show men playing stick-ball in skirts.

The basic hip-game outfit consisted of a loincloth, sometimes augmented with leather hip guards. Loincloths are found on the earliest ballplayer figurines from Tlatilco, Tlapacoya, and the Olmec culture, are seen in the Weiditz drawing from 1528 (below), and, with hip guards, are the sole outfit of modern-day ulama players (above)—a span of nearly 3,000 years.

In many cultures, further protection was provided by a thick girdle, most likely of wicker or wood covered in fabric or leather. Made of perishable materials, none of these girdles have survived, although many stone "yokes" have been uncovered. Misnamed by earlier archaeologists due to its resemblance to an animal yoke, the stone yoke is thought to be too heavy for actual play and was likely used only before or after the game in ritual contexts. In addition to providing some protection from the ball, the girdle or yoke would also have helped propel the ball with more force than the hip alone. Additionally, some players wore chest protectors called palmas which were inserted into the yoke and stood upright in front of the chest.

Kneepads are seen on a variety of players from many areas and eras and are worn by forearm-ulama players today. A type of garter is also often seen, worn just below the knee or around the ankle—it is not known what function this served. Gloves appear on the purported ballplayer reliefs of Dainzú, roughly 500 BC, as well as the Aztec players are drawn by Weiditz 2,000 years later (see drawing below). Helmets, likely utilitarian, and elaborate headdresses, likely used only in ritual contexts, are common in ballplayer depictions. Headdresses are particularly prevalent on Maya painted vases or on Jaina Island figurines. Many ballplayers of the Classic era are seen with a right kneepad—no left—and a wrapped right forearm, as shown in the Maya image above.

Rubber black balls
The sizes or weights of the balls actually used in the ballgame are not known with any certainty. While several dozen ancient balls have been recovered, they were originally laid down as offerings in a sacrificial bog or spring, and there is no evidence that any of these were used in the ballgame. In fact, some of these extant votive balls were created specifically as offerings.

However, based on a review of modern-day game balls, ancient rubber balls, and other archaeological evidence, it is presumed by most researchers that the ancient hip-ball was made of a mix from one or another of the latex-producing plants found all the way from the southeastern rain forests to the northern desert. Most balls were made from latex sap of the lowland Castilla elastica tree. Someone discovered that by mixing latex with sap from the vine of a species of morning glory (Calonyction aculeatum) they could turn the slippery polymers in raw latex into a resilient rubber. The size varied between 10 and 12 in (measured in hand spans) and weighed 3 to 6 lb. The ball used in the ancient handball or stick-ball game was probably slightly larger and heavier than a modern-day baseball.

Some Maya depictions, such as this relief, show balls 1 m or more in diameter. Academic consensus is that these depictions are exaggerations or symbolic, as are, for example, the impossibly unwieldy headdresses worn in the same portrayals.

Ballcourt

The game was played within a large masonry structure. Built in a form that changed remarkably little during 2,700 years, over 1,300 Mesoamerican ballcourts have been identified, 60% in the last 20 years alone. All ballcourts have the same general shape, a long narrow playing alley flanked by walls with both horizontal and sloping (or, more rarely, vertical) surfaces. The walls were often plastered and brightly painted. In early ballcourts the alleys were open-ended; later ballcourts had enclosed end-zones, giving the structure an -shape when viewed from above.

While the length-to-width ratio remained relatively constant at about four-to-one, there was tremendous variation in ballcourt size: The playing field of the Great Ballcourt at Chichen Itza, by far the largest, measures 96.5 by, while the Ceremonial Court at Tikal was only 16 by.

Across Mesoamerica, ballcourts were built and used for many generations. Although ballcourts are found within most sizable Mesoamerican ruins, they are not equally distributed across time or geography. For example, the Late Classic site of El Tajín, the largest city of the ballgame-obsessed Classic Veracruz culture, has at least 18 ballcourts, and Cantona, a nearby contemporaneous site, sets the record with 24. In contrast, northern Chiapas and the northern Maya Lowlands have relatively few, and ballcourts are conspicuously absent at some major sites, including Teotihuacan, Bonampak, and Tortuguero, although Mesoamerican ballgame iconography has been found there.

Ancient cities with particularly fine ballcourts in good condition include Tikal, Yaxha, Copán, Coba, Iximche, Monte Albán, Uxmal, Chichen Itza, Yagul, Xochicalco, Mixco Viejo, and Zaculeu.

Ballcourts were public spaces used for a variety of elite cultural events and ritual activities like musical performances and festivals, and, of course, the ballgame. Pictorial depictions often show musicians playing at ballgames, and votive deposits buried at the Main Ballcourt at Tenochtitlan contained miniature whistles, ocarinas, and drums. A pre-Columbian ceramic from western Mexico shows what appears to be a wrestling match taking place on a ballcourt.

Proxy for warfare
The Mesoamerican ballgame was a ritual deeply ingrained in Mesoamerican cultures and served purposes beyond that of a mere sporting event. Fray Juan de Torquemada, a 16th-century Spanish missionary and historian, tells that the Aztec emperor Axayacatl played Xihuitlemoc, the leader of Xochimilco, wagering his annual income against several Xochimilco chinampas. Ixtlilxochitl, a contemporary of Torquemada, relates that Topiltzin, the Toltec king, played against three rivals, with the winner ruling over the losers.

These examples and others are cited by many researchers who have made compelling arguments that the game served as a way to defuse or resolve conflicts without genuine warfare, to settle disputes through a ballgame instead of a battle. Over time, then, the ballgame's role would expand to include not only external mediation, but also the resolution of competition and conflict within the society as well.

This "boundary maintenance" or "conflict resolution" theory would also account for some of the irregular distribution of ballcourts. Overall, there appears to be a negative correlation between the degree of political centralization and the number of ballcourts at a site. For example, the Aztec Empire, with a strong centralized state and few external rivals, had relatively few ballcourts while Middle Classic Cantona, with 24 ballcourts, had many diverse cultures residing there under a relatively weak state.

Other scholars support these arguments by pointing to the warfare imagery often found at ballcourts:

 * The southeast panel of the South Ballcourt at El Tajín shows the protagonist ballplayer being dressed in a warrior's garb.
 * Captives are a prominent part of ballgame iconography. For example:
 * Several ceramic figurines show war captives holding game balls.
 * The ballcourt at Toniná was decorated with sculptures of bound captives.
 * A captive-within-the-ball motif is seen on the Hieroglyphic Stairs at Structure 33 in Yaxchilan and on Altar 8 at Tikal.

 * The modern-day descendant of the ballgame, ulama, "until quite recently was connected with warfare and many reminders of that association remain".

Human sacrifice
The association between human sacrifice and the ballgame appears rather late in the archaeological record, no earlier than the Classic era. The association was particularly strong within the Classic Veracruz and the Maya cultures, where the most explicit depictions of human sacrifice can be seen on the ballcourt panels—for example at El Tajín (850–1100 CE) and at Chichen Itza (900–1200 CE)—as well as on the decapitated ballplayer stelae from the Classic Veracruz site of Aparicio (700–900 CE). The Postclassic Maya religious and quasi-historical narrative, the Popol Vuh, also links human sacrifice with the ballgame (see below).

Captives were often shown in Maya art, and it is assumed that these captives were sacrificed after losing a rigged ritual ballgame. Rather than nearly nude and sometimes battered captives, the ballcourts at El Tajín and Chichen Itza show the sacrifice of practiced ballplayers, perhaps the captain of a team. Decapitation is particularly associated with the ballgame—severed heads are featured in much Late Classic ballgame art and appear repeatedly in the Popol Vuh. There has been speculation that the heads and skulls were used as balls.

Symbolism
Little is known about the game's symbolic contents. Several themes recur in scholarly writing.

 * Astronomy. The bouncing ball is thought to have represented the sun. The stone scoring rings are speculated to signify sunrise and sunset, or equinoxes.
 * War. This is the most obvious symbolic aspect of the game (see also above, "Proxy for warfare"). Among the Mayas, the ball can represent the vanquished enemy, both in the late-Postclassic K'iche' kingdom (Popol Vuh), and in Classic kingdoms such as that of Yaxchilan.
 * Fertility. Formative period ballplayer figurines—most likely females—often wear maize icons. At El Tajín, the ballplayer sacrifice ensures the renewal of pulque, an alcoholic maguey beverage.
 * Cosmologic duality. The game is seen as a struggle between day and night, and/or a battle between life and the underworld. Courts were considered portals to the underworld and were built in key locations within the central ceremonial precincts. Playing ball engaged one in the maintenance of the cosmic order of the universe and the ritual regeneration of life.

Nahua
According to an important Nahua source, the Leyenda de los Soles, the Toltec king Huemac played ball against the Tlalocs, with precious stones and quetzal feathers at stake. Huemac won the game. When instead of precious stones and feathers, the rain deities offered Huemac their young maize ears and maize leaves, Huemac refused. As a consequence of this vanity, the Toltecs suffered a four-year drought. The same ball game match, with its unfortunate aftermath, signified the beginning of the end of the Toltec reign.

Maya
The Maya Twin myth of the Popol Vuh establishes the importance of the game (referred to in Classic Maya as pitz) as a symbol for warfare intimately connected to the themes of fertility and death. The story begins with the Hero Twins' father, Hun Hunahpu, and uncle, Vucub Hunahpu, playing ball near the underworld, Xibalba. The lords of the underworld became annoyed with the noise from the ball playing and so the primary lords of Xibalba, One Death and Seven Death, sent owls to lure the brothers to the ballcourt of Xibalba, situated on the western edge of the underworld.

Despite the danger the brothers fall asleep and are captured and sacrificed by the lords of Xibalba and then buried in the ballcourt. Hun Hunahpu is decapitated and his head hung in a fruit tree, which bears the first calabash gourds. Hun Hunahpu's head spits into the hands of a passing goddess who conceives and bears the Hero Twins, Hunahpu and Xbalanque. The Hero Twins eventually find the ballgame equipment in their father's house and start playing, again to the annoyance of the Lords of Xibalba, who summon the twins to play the ballgame amidst trials and dangers.

In one notable episode, Hunahpu is decapitated by bats. His brother uses a squash as Hunahpu's substitute head until his real one, now used as a ball by the Lords, can be retrieved and placed back on Hunahpu's shoulders. The twins eventually go on to play the ballgame with the Lords of Xibalba, defeating them. However, the twins are unsuccessful in reviving their father, so they leave him buried in the ball court of Xibalba.

Maya civilization

In Maya Ballgame the Hero Twins myth links ballcourts with death and its overcoming. The ballcourt becomes a place of transition, a liminal stage between life and death. The ballcourt markers along the centerline of the Classic playing field depicted ritual and mythical scenes of the ballgame, often bordered by a quatrefoil that marked a portal into another world. The Twins themselves, however, are usually absent from Classic ballgame scenes, with the Classic forerunner of Vucub Caquix of the Copán ball court, holding the severed arm of Hunahpu, as an important exception.

Teotihuacan
No ballcourt has yet been identified at Teotihuacan, making it by far the largest Classic era site without one. In fact, the ballgame seems to have been nearly forsaken not only in Teotihuacan, but in areas such as Matacapan or Tikal that were under Teotihuacano influence.

Despite the lack of a ballcourt, ball games were not unknown there. The murals of the Tepantitla compound at Teotihuacan show a number of small scenes that seem to portray various types of ball games, including:
 * A two-player game in an open-ended masonry ballcourt. (See third picture below.)
 * Teams using sticks on an open field whose end zones are marked by stone monuments.
 * Separate renditions of single players. (See first two details below.)

It has been hypothesized that, for reasons as yet unknown, the stick-game eclipsed the hip-ball game at Teotihuacan and at Teotihuacan-influenced cities, and only after the fall of Teotihuacan did the hip-ball game reassert itself.

Aztec
The Aztec version of the ballgame is called ōllamalitzli (sometimes spelled ullamaliztli) and are derived from the word ōlli "rubber" and the verb ōllama or "to play ball". The ball itself was called ōllamaloni and the ballcourt was called a tlachtli. In the Aztec capital Tenochtitlan the largest ballcourt was called Teotlachco ("in the holy ballcourt")—here several important rituals would take place on the festivals of the month Panquetzalitzli, including the sacrifice of four war captives to the honor of Huitzilopochtli and his herald Paynal.

For the Aztecs, the playing of the ballgame also had religious significance, but where the 16th-century K´iche´ Maya saw the game as a battle between the lords of the underworld and their earthly adversaries, their Aztec contemporaries may have seen it as a battle of the sun, personified by Huitzilopochtli, against the forces of night, led by the moon and the stars, and represented by the goddess Coyolxauhqui and Coatlicue's sons the 400 Huitznahuah. But apart from holding important ritual and mythical meaning, the ballgame for the Aztecs was a sport and a pastime played for fun, although in general, the Aztec game was a prerogative of the nobles. Young Aztecs would be taught ballplaying in the calmecac school—and those who were most proficient might become so famous that they could play professionally. Games would frequently be staged in the different city wards and markets—often accompanied by large-scale betting. Diego Durán, an early Spanish chronicler, said that "these wretches... sold their children in order to bet and even staked themselves and became slaves".

Since the rubber tree Castilla elastica was not found in the highlands of the Aztec Empire, the Aztecs generally received balls and rubber as tribute from the lowland areas where it was grown. The Codex Mendoza gives a figure of 16,000 lumps of raw rubber being imported to Tenochtitlan from the southern provinces every six months, although not all of it was used for making balls.

In 1528, soon after the Spanish conquest, Cortés sent a troupe of ōllamanime (ballplayers) to Spain to perform for Charles V where they were drawn by the German Christoph Weiditz. Besides the fascination with their exotic visitors, the Europeans were amazed by the bouncing rubber balls.

Pacific coast
Ballcourts, monuments with ballgame imagery and ballgame paraphernalia have been excavated at sites along the Pacific coast of Guatemala and El Salvador including the Cotzumalhuapa nuclear zone sites of Bilbao and El Baúl and sites right at the southeast periphery of the Mesoamerican region such as Quelepa.

Caribbean
Batey, a ball game played on many Caribbean islands in the West Indies, has been proposed as a descendant of the Mesoamerican ballgame, perhaps through the Maya.

In popular culture
The game has been depicted in films:

 * The Road to El Dorado, a 2000 animated film by Dreamworks Pictures.
 * Elena of Avalor, a 2016 animated TV series by The Disney Channel.

title: Mesoamerican ballgame


text:
Amerind

Amerind or Amerindian may refer to:
 * Amerindian or Amerind peoples, chiefly anthropological terms for indigenous peoples of the Americas
 * See: Native American name controversy
 * Amerind languages, a hypothetical higher-language family

title: Amerind


text:
Relational algebra

In database theory, relational algebra is a theory that uses algebraic structures for modeling data, and defining queries on it with a well founded semantics. The theory was introduced by Edgar F. Codd.

The main application of relational algebra is to provide a theoretical foundation for relational databases, particularly query languages for such databases, chief among which is SQL. Relational databases store tabular data represented as relations. Queries over relational databases often likewise return tabular data represented as relations.

The main purpose of relational algebra is to define operators that transform one or more input relations to an output relation. Given that these operators accept relations as input and produce relations as output, they can be combined and used to express complex queries that transform multiple input relations (whose data are stored in the database) into a single output relation (the query results).

Unary operators accept a single relation as input. Examples include operators to filter certain attributes (columns) or tuples (rows) from an input relation. Binary operators accept two relations as input and combine them into a single output relation. For example, taking all tuples found in either relation (union), removing tuples from the first relation found in the second relation (difference), extending the tuples of the first relation with tuples in the second relation matching certain conditions, and so forth.

Other more advanced operators can also be included, where the inclusion or exclusion of certain operators gives rise to a family of algebras.

Introduction
Relational algebra received little attention outside of pure mathematics until the publication of E.F. Codd's relational model of data in 1970. Codd proposed such an algebra as a basis for database query languages. (See section Implementations.)

Relational algebra operates on homogeneous sets of tuples $$S = \{(s_{j1},s_{j2}, ... s_{jn}) | j \in 1 ... m \} $$ where we commonly interpret m to be the number of rows in a table and n to be the number of columns. All entries in each column have the same type. Five primitive operators of Codd's algebra are the selection, the projection, the Cartesian product (also called the cross product or cross join), the set union, and the set difference.

Set operators
The relational algebra uses set union, set difference, and Cartesian product from set theory, but adds additional constraints to these operators.

For set union and set difference, the two relations involved must be union-compatible—that is, the two relations must have the same set of attributes. Because set intersection is defined in terms of set union and set difference, the two relations involved in set intersection must also be union-compatible.

For the Cartesian product to be defined, the two relations involved must have disjoint headers—that is, they must not have a common attribute name.

In addition, the Cartesian product is defined differently from the one in set theory in the sense that tuples are considered to be "shallow" for the purposes of the operation. That is, the Cartesian product of a set of n-tuples with a set of m-tuples yields a set of "flattened" $(n + m)$-tuples (whereas basic set theory would have prescribed a set of 2-tuples, each containing an n-tuple and an m-tuple). More formally, R × S is defined as follows:

$$R\times S:=\{(r_1,r_2,\dots,r_n,s_1,s_2,\dots,s_m)|(r_1,r_2,\dots,r_n)\in R, (s_1,s_2,\dots,s_m)\in S\}$$

The cardinality of the Cartesian product is the product of the cardinalities of its factors, that is, |R × S| = |R| × |S|.

Projection ($Π$)
A projection is a unary operation written as $$\Pi_{a_1, \ldots,a_n}( R )$$ where $$a_1,\ldots,a_n$$ is a set of attribute names. The result of such projection is defined as the set that is obtained when all tuples in R are restricted to the set $$\{a_1,\ldots,a_n\}$$.

Note: when implemented in SQL standard the "default projection" returns a multiset instead of a set, and the $Π$ projection to eliminate duplicate data is obtained by the addition of the  keyword.

Selection (σ)
A generalized selection is a unary operation written as $$\sigma_\varphi(R)$$ where is a propositional formula that consists of atoms as allowed in the normal selection and the logical operators 🇦🇩 (and),  (or) and  (negation). This selection selects all those tuples in R for which holds.

To obtain a listing of all friends or business associates in an address book, the selection might be written as $$\sigma_{\text{isFriend = true} \,\lor\, \text{isBusinessContact = true}}( \text{addressBook} )$$. The result would be a relation containing every attribute of every unique record where $isFriend$ is true or where $isBusinessContact$ is true.

Rename (ρ)
A rename is a unary operation written as $$\rho_{a / b}(R)$$ where the result is identical to R except that the b attribute in all tuples is renamed to an a attribute. This is simply used to rename the attribute of a relation or the relation itself.

To rename the "isFriend" attribute to "isBusinessContact" in a relation, $$\rho_{\text{isBusinessContact / isFriend} } ( \text{addressBook} )$$ might be used.

There is also the $$\rho_{x(A_1, \ldots,A_n)}(R)$$ notation, where R is renamed to x and the attributes $$\{a_1,\ldots,a_n\}$$ are renamed to $$\{A_1,\ldots,A_n\}$$.

Natural join (⨝)
Natural join (⨝) is a binary operator that is written as (R ⨝ S) where R and S are relations. The result of the natural join is the set of all combinations of tuples in R and S that are equal on their common attribute names. For an example consider the tables Employee and Dept and their natural join:

Note that neither the employee named Mary nor the Production department appear in the result.

This can also be used to define composition of relations. For example, the composition of Employee and Dept is their join as shown above, projected on all but the common attribute DeptName. In category theory, the join is precisely the fiber product.

The natural join is arguably one of the most important operators since it is the relational counterpart of the logical AND operator. Note that if the same variable appears in each of two predicates that are connected by AND, then that variable stands for the same thing and both appearances must always be substituted by the same value (this is a consequence of the idempotence of the logical AND). In particular, natural join allows the combination of relations that are associated by a foreign key. For example, in the above example a foreign key probably holds from Employee.DeptName to Dept.DeptName and then the natural join of Employee and Dept combines all employees with their departments. This works because the foreign key holds between attributes with the same name. If this is not the case such as in the foreign key from Dept.Manager to Employee.Name then these columns must be renamed before taking the natural join. Such a join is sometimes also referred to as an equijoin (see θ-join).

More formally the semantics of the natural join are defined as follows:

where Fun(t) is a predicate that is true for a relation t (in the mathematical sense) iff t is a function (that is, t does not map any attribute to multiple values). It is usually required that R and S must have at least one common attribute, but if this constraint is omitted, and R and S have no common attributes, then the natural join becomes exactly the Cartesian product.

The natural join can be simulated with Codd's primitives as follows. Assume that c1,...,cm are the attribute names common to R and S, r1,...,rn are the attribute names unique to R and s1,...,sk are the attribute names unique to S. Furthermore, assume that the attribute names x1,...,xm are neither in R nor in S. In a first step the common attribute names in S can be renamed:

Then we take the Cartesian product and select the tuples that are to be joined:

Finally we take a projection to get rid of the renamed attributes:

θ-join and equijoin
Consider tables Car and Boat which list models of cars and boats and their respective prices. Suppose a customer wants to buy a car and a boat, but she does not want to spend more money for the boat than for the car. The θ-join (⋈θ) on the predicate CarPrice ≥ BoatPrice produces the flattened pairs of rows which satisfy the predicate. When using a condition where the attributes are equal, for example Price, then the condition may be specified as Price=Price or alternatively (Price) itself.

In order to combine tuples from two relations where the combination condition is not simply the equality of shared attributes it is convenient to have a more general form of join operator, which is the θ-join (or theta-join). The θ-join is a binary operator that is written as $${R\ \bowtie\ S \atop a\ \theta\ b}$$ or $${R\ \bowtie\ S \atop a\ \theta\ v}$$ where a and b are attribute names, θ is a binary relational operator in the set ${<, ≤, =, ≠, >, ≥}$, υ is a value constant, and R and S are relations. The result of this operation consists of all combinations of tuples in R and S that satisfy θ. The result of the θ-join is defined only if the headers of S and R are disjoint, that is, do not contain a common attribute.

The simulation of this operation in the fundamental operations is therefore as follows:
 * R ⋈θ S = σθ(R × S)

In case the operator θ is the equality operator (=) then this join is also called an equijoin.

Note, however, that a computer language that supports the natural join and selection operators does not need θ-join as well, as this can be achieved by selection from the result of a natural join (which degenerates to Cartesian product when there are no shared attributes).

In SQL implementations, joining on a predicate is usually called an inner join, and the on keyword allows one to specify the predicate used to filter the rows. It is important to note: forming the flattened Cartesian product then filtering the rows is conceptually correct, but an implementation would use more sophisticated data structures to speed up the join query.

Semijoin (⋉ and ⋊)
The left semijoin is a joining similar to the natural join and written as R \ltimes S where R and S are relations. The result is the set of all tuples in R for which there is a tuple in S that is equal on their common attribute names. The difference from a natural join is that other columns of S do not appear. For example, consider the tables Employee and Dept and their semijoin:

More formally the semantics of the semijoin can be defined as follows:

where is as in the definition of natural join.

The semijoin can be simulated using the natural join as follows. If are the attribute names of R, then

Since we can simulate the natural join with the basic operators it follows that this also holds for the semijoin.

In Codd's 1970 paper, semijoin is called restriction.

Antijoin (▷)
The antijoin, written as R ▷ S where R and S are relations, is similar to the semijoin, but the result of an antijoin is only those tuples in R for which there is no tuple in S that is equal on their common attribute names.

For an example consider the tables Employee and Dept and their antijoin:

The antijoin is formally defined as follows:

or

where $R ▷ S = { t : t ∈ R ∧ ¬∃s ∈ S(Fun (t ∪ s)) }$ is as in the definition of natural join.

The antijoin can also be defined as the complement of the semijoin, as follows:

Given this, the antijoin is sometimes called the anti-semijoin, and the antijoin operator is sometimes written as semijoin symbol with a bar above it, instead of ▷.

In the case where the relations have the same attributes (union-compatible), antijoin is the same as minus.

Division (÷)
The division is a binary operation that is written as R ÷ S. Division is not implemented directly in SQL. The result consists of the restrictions of tuples in R to the attribute names unique to R, i.e., in the header of R but not in the header of S, for which it holds that all their combinations with tuples in S are present in R. For an example see the tables Completed, DBProject and their division:

If DBProject contains all the tasks of the Database project, then the result of the division above contains exactly the students who have completed both of the tasks in the Database project.

More formally the semantics of the division is defined as follows:where {a1,...,an} is the set of attribute names unique to R and t[a1,...,an] is the restriction of t to this set. It is usually required that the attribute names in the header of S are a subset of those of R because otherwise the result of the operation will always be empty.

The simulation of the division with the basic operations is as follows. We assume that a1,...,an are the attribute names unique to R and b1,...,bm are the attribute names of S. In the first step we project R on its unique attribute names and construct all combinations with tuples in S:
 * T := πa 1,...,an (R) × S

In the prior example, T would represent a table such that every Student (because Student is the unique key / attribute of the Completed table) is combined with every given Task. So Eugene, for instance, would have two rows, Eugene → Database1 and Eugene → Database2 in T.

 * EG: First, let's pretend that "Completed" has a third attribute called "grade". It's unwanted baggage here, so we must project it off always. In fact in this step we can drop "Task" from R as well; the multiply puts it back on.
 * T := πStudent(R) × S // This gives us every possible desired combination, including those that don't actually exist in R, and excluding others (eg Fred | compiler1, which is not a desired combination)

In the next step we subtract R from T relation:
 * U := T − R

In U we have the possible combinations that "could have" been in R, but weren't.
 * EG: Again with projections — T and R need to have identical attribute names/headers.
 * U := T − πStudent,Task(R) // This gives us a "what's missing" list.

So if we now take the projection on the attribute names unique to R then we have the restrictions of the tuples in R for which not all combinations with tuples in S were present in R:
 * V := πa 1,...,an (U)
 * EG: Project U down to just the attribute(s) in question (Student)
 * V := πStudent(U)

So what remains to be done is take the projection of R on its unique attribute names and subtract those in V:
 * W := πa 1,...,an (R) − V
 * EG: W := πStudent(R) − V.

Common extensions
In practice the classical relational algebra described above is extended with various operations such as outer joins, aggregate functions and even transitive closure.

Outer joins
Whereas the result of a join (or inner join) consists of tuples formed by combining matching tuples in the two operands, an outer join contains those tuples and additionally some tuples formed by extending an unmatched tuple in one of the operands by "fill" values for each of the attributes of the other operand. Outer joins are not considered part of the classical relational algebra discussed so far.

The operators defined in this section assume the existence of a null value, ω, which we do not define, to be used for the fill values; in practice this corresponds to the NULL in SQL. In order to make subsequent selection operations on the resulting table meaningful, a semantic meaning needs to be assigned to nulls; in Codd's approach the propositional logic used by the selection is extended to a three-valued logic, although we elide those details in this article.

Three outer join operators are defined: left outer join, right outer join, and full outer join. (The word "outer" is sometimes omitted.)

Left outer join (⟕)
The left outer join is written as R ⟕ S where R and S are relations. The result of the left outer join is the set of all combinations of tuples in R and S that are equal on their common attribute names, in addition (loosely speaking) to tuples in R that have no matching tuples in S.

For an example consider the tables Employee and Dept and their left outer join:

In the resulting relation, tuples in S which have no common values in common attribute names with tuples in R take a null value, ω.

Since there are no tuples in Dept with a DeptName of Finance or Executive, ωs occur in the resulting relation where tuples in Employee have a DeptName of Finance or Executive.

Let r1, r2, ..., rn be the attributes of the relation R and let {(ω, ..., ω)} be the singleton relation on the attributes that are unique to the relation S (those that are not attributes of R). Then the left outer join can be described in terms of the natural join (and hence using basic operators) as follows:

 * $$(R \bowtie S) \cup ((R - \pi_{r_1, r_2, \dots, r_n}(R \bowtie S)) \times \{(\omega, \dots, \omega)\})$$

Right outer join (⟖)
The right outer join behaves almost identically to the left outer join, but the roles of the tables are switched.

The right outer join of relations R and S is written as R ⟖ S. The result of the right outer join is the set of all combinations of tuples in R and S that are equal on their common attribute names, in addition to tuples in S that have no matching tuples in R.

For example, consider the tables Employee and Dept and their right outer join:

In the resulting relation, tuples in R which have no common values in common attribute names with tuples in S take a null value, ω.

Since there are no tuples in Employee with a DeptName of Production, ωs occur in the Name and EmpId attributes of the resulting relation where tuples in Dept had DeptName of Production.

Let s1, s2, ..., sn be the attributes of the relation S and let {(ω, ..., ω)} be the singleton relation on the attributes that are unique to the relation R (those that are not attributes of S). Then, as with the left outer join, the right outer join can be simulated using the natural join as follows:

 * $$(R \bowtie S) \cup (\{(\omega, \dots, \omega)\} \times (S - \pi_{s_1, s_2, \dots, s_n}(R \bowtie S)))$$

Full outer join (⟗)
The outer join or full outer join in effect combines the results of the left and right outer joins.

The full outer join is written as R ⟗ S where R and S are relations. The result of the full outer join is the set of all combinations of tuples in R and S that are equal on their common attribute names, in addition to tuples in S that have no matching tuples in R and tuples in R that have no matching tuples in S in their common attribute names.

For an example consider the tables Employee and Dept and their full outer join:

In the resulting relation, tuples in R which have no common values in common attribute names with tuples in S take a null value, ω. Tuples in S which have no common values in common attribute names with tuples in R also take a null value, ω.

The full outer join can be simulated using the left and right outer joins (and hence the natural join and set union) as follows:

 * R ⟗ S = (R ⟕ S) ∪ (R ⟖ S)

Operations for domain computations
There is nothing in relational algebra introduced so far that would allow computations on the data domains (other than evaluation of propositional expressions involving equality). For example, it is not possible using only the algebra introduced so far to write an expression that would multiply the numbers from two columns, e.g. a unit price with a quantity to obtain a total price. Practical query languages have such facilities, e.g. the SQL SELECT allows arithmetic operations to define new columns in the result, and a similar facility is provided more explicitly by Tutorial D's   keyword. In database theory, this is called extended projection.

Aggregation
Furthermore, computing various functions on a column, like the summing up of its elements, is also not possible using the relational algebra introduced so far. There are five aggregate functions that are included with most relational database systems. These operations are Sum, Count, Average, Maximum and Minimum. In relational algebra the aggregation operation over a schema (A1, A2, ... An) is written as follows:

 * $$G_1, G_2, \ldots, G_m\ g_{f_1({A_1}'), f_2({A_2}'), \ldots, f_k({A_k}')}\ (r)$$

where each Aj', 1 ≤ j ≤ k, is one of the original attributes Ai, 1 ≤ i ≤ n.

The attributes preceding the g are grouping attributes, which function like a "group by" clause in SQL. Then there are an arbitrary number of aggregation functions applied to individual attributes. The operation is applied to an arbitrary relation r. The grouping attributes are optional, and if they are not supplied, the aggregation functions are applied across the entire relation to which the operation is applied.

Let's assume that we have a table named Account with three columns, namely Account_Number, Branch_Name and Balance. We wish to find the maximum balance of each branch. This is accomplished by Branch_NameGMax(Balance)(Account). To find the highest balance of all accounts regardless of branch, we could simply write GMax(Balance)(Account).

Grouping is often written as Branch_NameɣMax(Balance)(Account) instead.

Transitive closure
Although relational algebra seems powerful enough for most practical purposes, there are some simple and natural operators on relations that cannot be expressed by relational algebra. One of them is the transitive closure of a binary relation. Given a domain D, let binary relation R be a subset of D×D. The transitive closure R+ of R is the smallest subset of D×D that contains R and satisfies the following condition:

 * $$\forall x \forall y \forall z \left( (x,y) \in R^+ \wedge (y,z) \in R^+ \Rightarrow (x,z) \in R^+ \right)$$

It can be proved using the fact that there is no relational algebra expression E(R) taking R as a variable argument that produces R+.

SQL however officially supports such fixpoint queries since 1999, and it had vendor-specific extensions in this direction well before that.

Use of algebraic properties for query optimization
Relational database management systems often include a query optimizer which attempts to determine the most efficient way to execute a given query. Query optimizers enumerate possible query plans, estimate their cost, and pick the plan with the lowest estimated cost. If queries are represented by operators from relational algebra, the query optimizer can enumerate possible query plans by rewriting the initial query using the algebraic properties of these operators.

Queries can be represented as a tree, where
 * the internal nodes are operators,
 * leaves are relations,
 * subtrees are subexpressions.

The primary goal of the query optimizer is to transform expression trees into equivalent expression trees, where the average size of the relations yielded by subexpressions in the tree is smaller than it was before the optimization. The secondary goal is to try to form common subexpressions within a single query, or if there is more than one query being evaluated at the same time, in all of those queries. The rationale behind the second goal is that it is enough to compute common subexpressions once, and the results can be used in all queries that contain that subexpression.

Here are a set of rules that can be used in such transformations.

Selection
Rules about selection operators play the most important role in query optimization. Selection is an operator that very effectively decreases the number of rows in its operand, so if the selections in an expression tree are moved towards the leaves, the internal relations (yielded by subexpressions) will likely shrink.

Basic selection properties
Selection is idempotent (multiple applications of the same selection have no additional effect beyond the first one), and commutative (the order selections are applied in has no effect on the eventual result).

 * 1) $$\sigma_{A}(R)=\sigma_{A}\sigma_{A}(R)\,\!$$
 * 2) $$\sigma_{A}\sigma_{B}(R)=\sigma_{B}\sigma_{A}(R)\,\!$$

Breaking up selections with complex conditions
A selection whose condition is a conjunction of simpler conditions is equivalent to a sequence of selections with those same individual conditions, and selection whose condition is a disjunction is equivalent to a union of selections. These identities can be used to merge selections so that fewer selections need to be evaluated, or to split them so that the component selections may be moved or optimized separately.

 * 1) $$\sigma_{A \land B}(R)=\sigma_{A}(\sigma_{B}(R))=\sigma_{B}(\sigma_{A}(R))$$
 * 2) $$\sigma_{A \lor B}(R)=\sigma_{A}(R)\cup\sigma_{B}(R)$$

Selection and cross product
Cross product is the costliest operator to evaluate. If the input relations have N and M rows, the result will contain $$NM$$ rows. Therefore, it is important to decrease the size of both operands before applying the cross product operator.

This can be effectively done if the cross product is followed by a selection operator, e.g. $$\sigma_{A}(R \times P)$$. Considering the definition of join, this is the most likely case. If the cross product is not followed by a selection operator, we can try to push down a selection from higher levels of the expression tree using the other selection rules.

In the above case the condition A is broken up in to conditions B, C and D using the split rules about complex selection conditions, so that $$A = B \wedge C \wedge D$$ and B contains attributes only from R, C contains attributes only from P, and D contains the part of A that contains attributes from both R and P. Note, that B, C or D are possibly empty. Then the following holds:
 * $$\sigma_{A}(R \times P) = \sigma_{B \wedge C \wedge D}(R \times P) = \sigma_{D}(\sigma_{B}(R) \times \sigma_{C}(P))$$

Selection and set operators
Selection is distributive over the set difference, intersection, and union operators. The following three rules are used to push selection below set operations in the expression tree. For the set difference and the intersection operators, it is possible to apply the selection operator to just one of the operands following the transformation. This can be beneficial where one of the operands is small, and the overhead of evaluating the selection operator outweighs the benefits of using a smaller relation as an operand.

 * 1) $$\sigma_{A}(R\setminus P)=\sigma_{A}(R)\setminus \sigma_{A}(P) =\sigma_{A}(R)\setminus P$$
 * 2) $$\sigma_{A}(R\cup P)=\sigma_{A}(R)\cup\sigma_{A}(P)$$
 * 3) $$\sigma_{A}(R\cap P)=\sigma_{A}(R)\cap\sigma_{A}(P)=\sigma_{A}(R)\cap P=R\cap \sigma_{A}(P)$$

Selection and projection
Selection commutes with projection if and only if the fields referenced in the selection condition are a subset of the fields in the projection. Performing selection before projection may be useful if the operand is a cross product or join. In other cases, if the selection condition is relatively expensive to compute, moving selection outside the projection may reduce the number of tuples which must be tested (since projection may produce fewer tuples due to the elimination of duplicates resulting from omitted fields).

 * $$\pi_{a_1, \ldots ,a_n}(\sigma_A( R )) = \sigma_A(\pi_{a_1, \ldots,a_n}( R ))\text{ where fields in }A \subseteq \{a_1,\ldots,a_n\}$$

Basic projection properties
Projection is idempotent, so that a series of (valid) projections is equivalent to the outermost projection.

 * $$\pi_{a_1, \ldots, a_n}(\pi_{b_1,\ldots , b_m}(R)) = \pi_{a_1, \ldots , a_n}(R)\text{ where }\{a_1, \ldots , a_n\} \subseteq \{b_1, \ldots , b_m\}$$

Projection and set operators
Projection is distributive over set union.

 * $$\pi_{a_1, \ldots, a_n}(R \cup P) = \pi_{a_1, \ldots, a_n}(R) \cup \pi_{a_1, \ldots, a_n}(P). \, $$

Projection does not distribute over intersection and set difference. Counterexamples are given by:

 * $$\pi_A(\{ \langle A=a, B=b \rangle \} \cap \{ \langle A=a, B=b' \rangle \}) = \emptyset$$

 * $$\pi_A(\{ \langle A=a, B=b \rangle \}) \cap \pi_A(\{ \langle A=a, B=b' \rangle \}) = \{ \langle A=a \rangle \}$$

and

 * $$\pi_A(\{ \langle A=a, B=b \rangle \} \setminus \{ \langle A=a, B=b' \rangle \}) = \{ \langle A=a\rangle \}$$

 * $$\pi_A(\{ \langle A=a, B=b \rangle \}) \setminus \pi_A(\{ \langle A=a, B=b' \rangle \}) = \emptyset\,,$$

where b is assumed to be distinct from b'.

Basic rename properties
Successive renames of a variable can be collapsed into a single rename. Rename operations which have no variables in common can be arbitrarily reordered with respect to one another, which can be exploited to make successive renames adjacent so that they can be collapsed.

 * 1) $$\rho_{a / b}(\rho_{b / c}(R)) = \rho_{a / c}(R)\,\!$$
 * 2) $$\rho_{a / b}(\rho_{c / d}(R)) = \rho_{c / d}(\rho_{a / b}(R))\,\!$$

Rename and set operators
Rename is distributive over set difference, union, and intersection.

 * 1) $$\rho_{a / b}(R \setminus P) = \rho_{a / b}(R) \setminus \rho_{a / b}(P)$$
 * 2) $$\rho_{a / b}(R \cup P) = \rho_{a / b}(R) \cup \rho_{a / b}(P)$$
 * 3) $$\rho_{a / b}(R \cap P) = \rho_{a / b}(R) \cap \rho_{a / b}(P)$$

Product and union
Cartesian product is distributive over union.

 * 1) $$(A \times B) \cup (A \times C) = A \times (B \cup C)$$

Implementations
The first query language to be based on Codd's algebra was Alpha, developed by Dr. Codd himself. Subsequently, ISBL was created, and this pioneering work has been acclaimed by many authorities as having shown the way to make Codd's idea into a useful language. Business System 12 was a short-lived industry-strength relational DBMS that followed the ISBL example.

In 1998 Chris Date and Hugh Darwen proposed a language called Tutorial D intended for use in teaching relational database theory, and its query language also draws on ISBL's ideas. Rel is an implementation of Tutorial D. Bmg is an implementation of relational algebra in Ruby which closely follows the principles of Tutorial D and The Third Manifesto.

Even the query language of SQL is loosely based on a relational algebra, though the operands in SQL (tables) are not exactly relations and several useful theorems about the relational algebra do not hold in the SQL counterpart (arguably to the detriment of optimisers and/or users). The SQL table model is a bag (multiset), rather than a set. For example, the expression $$(R \cup S) \setminus T = (R \setminus T) \cup (S \setminus T)$$ is a theorem for relational algebra on sets, but not for relational algebra on bags; for a treatment of relational algebra on bags see chapter 5 of the "Complete" textbook by Garcia-Molina, Ullman and Widom.

title: Relational algebra


text:
Tuple relational calculus

Tuple calculus is a calculus that was created and introduced by Edgar F. Codd as part of the relational model, in order to provide a declarative database-query language for data manipulation in this data model. It formed the inspiration for the database-query languages QUEL and SQL, of which the latter, although far less faithful to the original relational model and calculus, is now the de facto standard database-query language; a dialect of SQL is used by nearly every relational-database-management system. Michel Lacroix and Alain Pirotte proposed domain calculus, which is closer to first-order logic and together with Codd showed that both of these calculi (as well as relational algebra) are equivalent in expressive power. Subsequently, query languages for the relational model were called relationally complete if they could express at least all of these queries.

Relational database
Since the calculus is a query language for relational databases we first have to define a relational database. The basic relational building block is the domain (somewhat similar, but not equal to, a data type). A tuple is a finite sequence of attributes, which are ordered pairs of domains and values. A relation is a set of (compatible) tuples. Although these relational concepts are mathematically defined, those definitions map loosely to traditional database concepts. A table is an accepted visual representation of a relation; a tuple is similar to the concept of a row.

We first assume the existence of a set C of column names, examples of which are "name", "author", "address", etcetera. We define headers as finite subsets of C. A relational database schema is defined as a tuple S = (D, R, h) where D is the domain of atomic values (see relational model for more on the notions of domain and atomic value), R is a finite set of relation names, and

 * h : R → 2C

a function that associates a header with each relation name in R. (Note that this is a simplification from the full relational model where there is more than one domain and a header is not just a set of column names but also maps these column names to a domain.) Given a domain D we define a tuple over D as a partial function that maps some column names to an atomic value in D. An example would be (name : "Harry", age : 25).

 * t : C ⇸ D

The set of all tuples over D is denoted as TD. The subset of C for which a tuple t is defined is called the domain of t (not to be confused with the domain in the schema) and denoted as dom(t).

Finally we define a relational database given a schema S = (D, R, h) as a function

 * db : R → 2TD

that maps the relation names in R to finite subsets of TD, such that for every relation name r in R and tuple t in db(r) it holds that

 * dom(t) = h(r).

The latter requirement simply says that all the tuples in a relation should contain the same column names, namely those defined for it in the schema.

Atoms
For the construction of the formulas we will assume an infinite set V of tuple variables. The formulas are defined given a database schema S = (D, R, h) and a partial function type : V ⇸ 2C, called at type assignment, that assigns headers to some tuple variables. We then define the set of atomic formulas A[S,type] with the following rules:

 * 1) if v and w in V, a in type(v) and b in type(w) then the formula v.a = w.b is in A[S,type],
 * 2) if v in V, a in type(v) and k denotes a value in D then the formula v.a = k is in A[S,type], and
 * 3) if v in V, r in R and type(v) = h(r) then the formula r(v) is in A[S,type].

Examples of atoms are:

 * (t.age = s.age) — t has an age attribute and s has an age attribute with the same value
 * (t.name = "Codd") — tuple t has a name attribute and its value is "Codd"
 * Book(t) — tuple t is present in relation Book.

The formal semantics of such atoms is defined given a database db over S and a tuple variable binding val : V → TD that maps tuple variables to tuples over the domain in S:
 * 1)  v.a = w.b  is true if and only if val(v)(a) = val(w)(b)
 * 2)  v.a = k  is true if and only if val(v)(a) = k
 * 3)  r(v)  is true if and only if val(v) is in db(r)

Formulas
The atoms can be combined into formulas, as is usual in first-order logic, with the logical operators ∧ (and), ∨ (or) and ¬ (not), and we can use the existential quantifier (∃) and the universal quantifier (∀) to bind the variables. We define the set of formulas F[S,type] inductively with the following rules:
 * 1) every atom in A[S,type] is also in F[S,type]
 * 2) if f1 and f2 are in F[S,type] then the formula  f1 ∧ f2  is also in F[S,type]
 * 3) if f1 and f2 are in F[S,type] then the formula  f1 ∨ f2  is also in F[S,type]
 * 4) if f is in F[S,type] then the formula  ¬ f  is also in F[S,type]
 * 5) if v in V, H a header and f a formula in F[S,type[v->H]] then the formula  ∃ v : H ( f )  is also in F[S,type], where type[v->H] denotes the function that is equal to type except that it maps v to H,
 * 6) if v in V, H a header and f a formula in F[S,type[v->H]] then the formula  ∀ v : H ( f )  is also in F[S,type]

Examples of formulas:

Note that the last formula states that all books that are written by C. J. Date have as their subject the relational model. As usual we omit brackets if this causes no ambiguity about the semantics of the formula.
 * t.name = "C. J. Date" ∨ t.name = "H. Darwen"
 * Book(t) ∨ Magazine(t)
 * ∀ t : {author, title, subject} ( ¬ ( Book(t) ∧ t.author = "C. J. Date" ∧ ¬ ( t.subject = "relational model")))

We will assume that the quantifiers quantify over the universe of all tuples over the domain in the schema. This leads to the following formal semantics for formulas given a database db over S and a tuple variable binding val : V -> TD:

 * 1)  f1 ∧ f2  is true if and only if  f1  is true and  f2  is true,
 * 2)  f1 ∨ f2  is true if and only if  f1  is true or  f2  is true or both are true,
 * 3)  ¬ f  is true if and only if  f  is not true,
 * 4)  ∃ v : H ( f )  is true if and only if there is a tuple t over D such that dom(t) = H and the formula  f  is true for val[v->t], and
 * 5)  ∀ v : H ( f )  is true if and only if for all tuples t over D such that dom(t) = H the formula  f  is true for val[v->t].

Queries
Finally we define what a query expression looks like given a schema S = (D, R, h):

 * { v : H | f(v) }

where v is a tuple variable, H a header and f(v) a formula in F[S,type] where type = { (v, H) } and with v as its only free variable. The result of such a query for a given database db over S is the set of all tuples t over D with dom(t) = H such that f is true for db and val = { (v, t) }.

Examples of query expressions are:

 * { t : {name} | ∃ s : {name, wage} ( Employee(s) ∧ s.wage = 50.000 ∧ t.name = s.name ) }
 * { t : {supplier, article} | ∃ s : {s#, sname} ( Supplier(s) ∧ s.sname = t.supplier ∧ ∃ p : {p#, pname} ( Product(p) ∧ p.pname = t.article ∧ ∃ a : {s#, p#} ( Supplies(a) ∧ s.s# = a.s# ∧ a.p# = p.p# ))) }

Domain-independent queries
Because the semantics of the quantifiers is such that they quantify over all the tuples over the domain in the schema it can be that a query may return a different result for a certain database if another schema is presumed. For example, consider the two schemas S1 = ( D1, R, h ) and S2 = ( D2, R, h ) with domains D1 = { 1 }, D2 = { 1, 2 }, relation names R = { "r1" } and headers h = { ("r1", {"a"}) }. Both schemas have a common instance:
 * db = { ( "r1", { ("a", 1) } ) }

If we consider the following query expression
 * { t : {a} | t.a = t.a }

then its result on db is either { (a : 1) } under S1 or { (a : 1), (a : 2) } under S2. It will also be clear that if we take the domain to be an infinite set, then the result of the query will also be infinite. To solve these problems we will restrict our attention to those queries that are domain independent, i.e., the queries that return the same result for a database under all of its schemas.

An interesting property of these queries is that if we assume that the tuple variables range over tuples over the so-called active domain of the database, which is the subset of the domain that occurs in at least one tuple in the database or in the query expression, then the semantics of the query expressions does not change. In fact, in many definitions of the tuple calculus this is how the semantics of the quantifiers is defined, which makes all queries by definition domain independent.

Safe queries
In order to limit the query expressions such that they express only domain-independent queries a syntactical notion of safe query is usually introduced. To determine whether a query expression is safe we will derive two types of information from a query. The first is whether a variable-column pair t.a is bound to the column of a relation or a constant, and the second is whether two variable-column pairs are directly or indirectly equated (denoted t.v == s.w).

For deriving boundedness we introduce the following reasoning rules:

 * 1) in " v.a = w.b " no variable-column pair is bound,
 * 2) in " v.a = k " the variable-column pair v.a is bound,
 * 3) in " r(v) " all pairs v.a are bound for a in type(v),
 * 4) in " f1 ∧ f2 " all pairs are bound that are bound either in f1 or in f2,
 * 5) in " f1 ∨ f2 " all pairs are bound that are bound both in f1 and in f2,
 * 6) in " ¬ f " no pairs are bound,
 * 7) in " ∃ v : H ( f ) " a pair w.a is bound if it is bound in f and w <> v, and
 * 8) in " ∀ v : H ( f ) " a pair w.a is bound if it is bound in f and w <> v.

For deriving equatedness we introduce the following reasoning rules (next to the usual reasoning rules for equivalence relations: reflexivity, symmetry and transitivity):

 * 1) in " v.a = w.b " it holds that v.a == w.b,
 * 2) in " v.a = k " no pairs are equated,
 * 3) in " r(v) " no pairs are equated,
 * 4) in " f1 ∧ f2 " it holds that v.a == w.b if it holds either in f1 or in f2,
 * 5) in " f1 ∨ f2 " it holds that v.a == w.b if it holds both in f1 and in f2,
 * 6) in " ¬ f " no pairs are equated,
 * 7) in " ∃ v : H ( f ) " it holds that w.a == x.b if it holds in f and w<>v and x<>v, and
 * 8) in " ∀ v : H ( f ) " it holds that w.a == x.b if it holds in f and w<>v and x<>v.

We then say that a query expression { v : H | f(v) } is safe if
 * for every column name a in H we can derive that v.a is equated with a bound pair in f,
 * for every subexpression of f of the form " ∀ w : G ( g ) " we can derive that for every column name a in G we can derive that w.a is equated with a bound pair in g, and
 * for every subexpression of f of the form " ∃ w : G ( g ) " we can derive that for every column name a in G we can derive that w.a is equated with a bound pair in g.

The restriction to safe query expressions does not limit the expressiveness since all domain-independent queries that could be expressed can also be expressed by a safe query expression. This can be proven by showing that for a schema S = (D, R, h), a given set K of constants in the query expression, a tuple variable v and a header H we can construct a safe formula for every pair v.a with a in H that states that its value is in the active domain. For example, assume that K={1,2}, R={"r"} and h = { ("r", {"a, "b"}) } then the corresponding safe formula for v.b is:
 * v.b = 1 ∨ v.b = 2 ∨ ∃ w ( r(w) ∧ ( v.b = w.a ∨ v.b = w.b ) )

This formula, then, can be used to rewrite any unsafe query expression to an equivalent safe query expression by adding such a formula for every variable v and column name a in its type where it is used in the expression. Effectively this means that we let all variables range over the active domain, which, as was already explained, does not change the semantics if the expressed query is domain independent.

Systems

 * DES – An educational tool for working with Tuple Relational Calculus and other formal languages
 * WinRDBI – An educational tool for working with Tuple Relational Calculus and other formal languages

title: Tuple relational calculus


text:
Willem Drost

Willem Drost (baptized 19 April 1633 – buried 25 February 1659) was a Dutch Golden Age painter and printmaker of history paintings and portraits.

Biography
He is a mysterious figure, closely associated with Rembrandt, with very few paintings clearly attributable to him.

He was presumably born in Amsterdam, in what was then known as the United Provinces of the Netherlands, but when and where is unknown. Around 1650, according to the early art historian Houbraken, he became a student of Rembrandt, eventually developing a close working relationship, painting history scenes, biblical compositions, symbolic studies of a solitary figure, as well as portraits. As a student, his 1654 painting titled Bathsheba was inspired by Rembrandt's painting done in the same year on the same subject and given the same title, though their treatments are rather different; both Drost's and Rembrandt's paintings are in the Louvre in Paris.

Houbraken described him as a painter of historical allegories and a pupil of Rembrandt. Houbraken saw a Johannes Predicatie (Sermon of John) by him that was well composed and painted. He spent a long period in Rome where he became friends with Karel Lot and the well-to-do Utrecht painter Joan vander Meer, who had travelled to Italy in the company of the marine painter Lieve Verschuier in 1653 and became friends with him there. He was in Amsterdam until 1655 and then travelled to Italy. He influenced the painter Adolf Boy. Sometime in the mid-1650s, the young artist went to Rome, where, again according to Houbraken, he collaborated with the German artist Johann Carl Loth on a lost series of the Four Evangelists in Venice. He died in the latter city in 1659.

Willem Drost's recognized lifetime output of artwork is very small, while Rembrandt is credited with more than 2,000 paintings and etchings, the majority of which are not signed. In recent years, some paintings attributed to Rembrandt have had their authenticity come under question. The importance of these Rembrandt works is such that the Foundation Rembrandt Research Project was established in Amsterdam to review the attribution of all of his works. Scholars have now reattributed a number of Rembrandt's paintings to his pupils and associates.

Legacy
Drost was one of Rembrandt's most talented disciples, so much so that his 1654 painting titled: Portrait of a Young Woman with her Hands Folded on a Book was one of the ones attributed to Rembrandt for more than 300 years. As well, when the portrait of a young man on horseback titled The Polish Rider was discovered in 1897, it too was attributed to Rembrandt. Acquired by New York City's Frick Collection, The Polish Rider is one of the Frick Museum's most valued treasures. For years, the painting's subject matter and purpose was questioned by many scholars, led by the renowned expert Julius S. Held in 1944. Starting in 1984, in a movement led by Dr. Josua Bruyn of the Foundation Rembrandt Research Project, some began to believe this great painting may also be that of Willem Drost as may be several others. The Frick Collection has not changed the attribution, and today it is generally believed that Rembrandt initiated the painting but had others help him finish it. These attributions remain controversial, but a reattribution of a group of "Rembrandt" drawings to Drost is more widely accepted.

Selected works

 * 1651: Ruth and Naomi on the road to Bethlehem – Ashmolean Museum, Oxford, England
 * 1652: Self Portrait of the Artist
 * 1653: Portrait of a Man – (Metropolitan Museum of Art, New York City);
 * 1653: Portrait of a Woman – Museum Bredius, The Hague;
 * 1653:The Philosopher – National Gallery of Art, Washington, DC;
 * c.1654: Young Woman in a Brocade Gown – The Wallace Collection, London;
 * c.1654 Young Woman in a Pearl Necklace - Gemäldegalerie Alte Meister, Dresden, Germany;
 * 1654: Portrait of a Young Woman with her Hands Folded on a Book – National Gallery, London, England;
 * 1654: Portrait of an Officer in a Red Beret – David Findlay Galleries, New York City
 * 1654: Bathsheba – Louvre, Paris;
 * c. 1655: Self Portrait as Saint John the Evangelist – Agnes Etherington Art Centre, Kingston, Ontario, Canada
 * c.1655: Portrait d’homme feuilletant un livre, Louvre, Paris;
 * 1655: The Unmerciful Servant – The Wallace Collection, London, England;
 * 1655: "Flute Player" – Private Collection, Germany
 * 1655: Bust of man wearing a large-brimmed hat – (c.1655), National Gallery of Art, Dublin, Ireland;
 * c.1656 Young Man with a Flute – Scandinavia: Private Collection
 * c.1657: Old Woman Teaching a Child – Hermitage Museum, St. Petersburg, Russia
 * c.1658: Boy with a Recorder – Galleria Palatina, Florence, Italy;
 * c.1659 L'écaillère – Louvre, Paris;
 * c.1659: Mercury and Argus: Staatliche Kunstsammlungen – Gemäldegalerie Alte Meister, Dresden, Germany;
 * 1659: St. Matthew and the Angel – North Carolina Museum of Art, Raleigh, North Carolina
 * c.1659: Abraham Casting Out Hagar & Ishmael – Guilford College Collection, Greensboro, North Carolina
 * c.1650: Self Portrait of the Artist as John the Evangelist, Bader Collection, Milwaukee;

Other paintings, date and owner presently unknown:
 * Portrait of a woman at her window
 * Young Man, Half-Length Seated, in a Red Jacket and Broad-Brimmed Cap
 * Saint-John the Evangelist in a Landscape
 * A Young Woman, Bust Length, Wearing Traditional Costume
 * A soldier, buckling his belt, a helmet on a table nearby
 * Portrait of a Geographer with compass, angle and globe (attributed to Willem Drost)

title: Willem Drost