Program for Cooperative Cataloging (PCC), Standing ...



20001549402000200660Program for Cooperative Cataloging (PCC), Standing Committee on Standards (SCS), BIBFRAME And MARC Bibliographic Encoding for Languages (BABEL) Task GroupMay 1, 20206900096000Program for Cooperative Cataloging (PCC), Standing Committee on Standards (SCS), BIBFRAME And MARC Bibliographic Encoding for Languages (BABEL) Task GroupMay 1, 2020730005673725centerInterim Report2420096000Interim ReportContents TOC \o "1-3" \h \z \u Introduction PAGEREF _Toc39220135 \h 2General Report PAGEREF _Toc39220136 \h 2MARC language codes PAGEREF _Toc39220137 \h 2ISO 639-2 PAGEREF _Toc39220138 \h 2ISO 639-3 PAGEREF _Toc39220139 \h 3ISO 639-5 PAGEREF _Toc39220140 \h 3IETF BCP-47 PAGEREF _Toc39220141 \h 3Glottolog PAGEREF _Toc39220142 \h 4VIVO language ontology PAGEREF _Toc39220143 \h 4Stakeholders PAGEREF _Toc39220144 \h 4Feasibility Report PAGEREF _Toc39220145 \h 5Non-MARC Language Schemes in MARC Records PAGEREF _Toc39220146 \h 5Language of Cataloging or Metadata PAGEREF _Toc39220147 \h 5Language of the Resource PAGEREF _Toc39220148 \h 5Potential Issues to Address PAGEREF _Toc39220149 \h 6Mapping MARC Language Codes and ISO 639-3 PAGEREF _Toc39220150 \h 6Matching codes PAGEREF _Toc39220151 \h 7Complexities with matching codes PAGEREF _Toc39220152 \h 7Unmatched codes PAGEREF _Toc39220153 \h 9Codes only in ISO 639-3 PAGEREF _Toc39220154 \h 9Coexistence of MARC language codes and ISO 639-3 codes PAGEREF _Toc39220155 \h 9Non-MARC language schemes in BIBFRAME records PAGEREF _Toc39220156 \h 10Potential problems PAGEREF _Toc39220157 \h 10Existent integrated library systems buy-in PAGEREF _Toc39220158 \h 10Resources required for mapping and policy establishment PAGEREF _Toc39220159 \h 11Requirement for IRI availability PAGEREF _Toc39220160 \h 11Carrying out the Charge PAGEREF _Toc39220161 \h 11Appendix: MARC Documentation Related to Non-MARC Language Schemes PAGEREF _Toc39220162 \h 12Examples PAGEREF _Toc39220163 \h 12Language Code and Term Source Codes PAGEREF _Toc39220164 \h 13IntroductionThe BIBFRAME And MARC Bibliographic Encoding for Languages (BABEL) Task Group members include Charlene Morrison, Kelley McGrath, TJ Kao, Elaine Kim, and Robert Rendall. The BABEL Task Group was charged on March 1, 2020 to make recommendations on language vocabularies for use in both BIBFRAME and MARC standards while taking into consideration the various language communities and their needs and identifying and reaching out to the appropriate stakeholders.Per the charge laid out, this interim report will describe the work done so far. It will also include an analysis on how feasible the task group thinks it will be to incorporate a different standard other than the current MARC language codes into the cataloging workflow to account for the needs in linked data cataloging of BIBFRAME and will note any difficulties and blockers it expects to encounter along the way.General ReportDue to the breadth of the charge, the task group focused its early efforts on becoming acquainted with the vocabularies identified along with adding a few more to the list. Within the charge, three vocabularies were identified, ISO 639-2, ISO 639-3, and IETF. Along with these three the group also looked into ISO 639-5, VIVO language ontology, and Glottolog. MARC language codesMARC language codes are currently being used by libraries in the MARC and BIBFRAME cataloging environments. There are 516 codes, which include 31 discontinued codes. The codes correspond to ISO 369-2. Where there are both bibliographic and terminology codes for a single language in ISO 639-2, the MARC language codes use the bibliographic codes. With labels only in English (which in some cases differ slightly from ISO 639-2’s English labels), the focus of the MARC code set is on languages most commonly found in library collections, and the vocabulary groups languages without their own code under collective codes. One example is that many Baltic languages are grouped under the code “bat” instead of having their own code. The treatment of languages considered to be macro-languages in ISO 639-3 varies; sometimes MARC has only a code for the macro-language (Chinese), sometimes only for the individual languages (Serbian, Croatian, etc.) and sometimes both (Norwegian and its variants). This vocabulary provides coding for what it considers the major languages of the world and groups other languages together to cover everything else.ISO 639-2ISO 639-2 includes 547 codes, some of which are duplicate codes that allow the use of different codes for the same language for bibliographic and terminology purposes. These codes provide a basis for the MARC language codes. With labels in English, French, and German, this set also focuses on languages most commonly found in library collections, with collective codes used to cover less common languages. As with MARC language codes, one example of a collective code is “bat”, the code representing Baltic languages, although only the German label clarifies that this code is for other Baltic languages not covered by individual codes. The treatment of languages considered to be macro-languages in ISO 639-3 varies; sometimes ISO 639-2 has only a code for the macro-language (Chinese), sometimes only for the individual languages (Serbian, Croatian, etc) and sometimes both (Norwegian and its variants). Like the MARC language codes, this vocabulary provides coding for what is considered major world languages and groups other languages together to cover everything else.ISO 639-3ISO 639-3 contains 7,868 codes including all of the individual language codes already accounted for in ISO 639-2. It also provides codes for macro-languages (Serbo-Croatian) or individual languages within macro-languages (Mandarin Chinese) not included in ISO 639-2. In addition to this, it also includes codes derived from Ethnologue and LinguistList covering thousands of other living languages as well as extinct, ancient, historic, and constructed languages. With labels for these codes in English, it maps macro-language codes to individual language codes, however, it does not include any collection of related languages, so any new language not already included would need to be added. While related to the MARC language codes and the ISO 639-2 codes, this vocabulary does not have a 1 to 1 mapping with some languages that changed over time, for example Old Spanish and Old Tamil. Unlike the other two vocabularies, this one has a greater breadth and coverage of past and present languages.ISO 639-5ISO 639-5 contains 115 codes and supplements the coding of language groups and families in ISO 639-2. Out of the 115 codes, 65 match ISO 639-2/MARC language codes and are either language group codes or remainder group codes. The former groups two or more individual languages as a unit, while the latter groups languages with the exclusion of specific languages that have separate identifiers. The intent is to support the current ISO 639 standards instead of providing a scientific classification of the languages of the world. With labels for these codes in English, the codes are hierarchical in nature and are intended to identify membership in language families.IETF BCP-47IETF/BCP-47 language tags are made up of a combination of language codes separated by hyphens. The structure includes primary subtags, extended language subtags, script subtags, region subtags, variant subtags, extension subtags, and private use subtags. Subtags are based on various other standards such as ISO 639 (i.e. 639-1, 639-2, 639-3, and 639-5), ISO 15924, ISO 3166-1, and UN_M.49. Language, extended language, script, region, and variant subtags are listed in the IANA Language Subtag Registry. While capitalization is not significant, capitalization conventions are used. Language, extended language, and variant codes are lower case, while script codes capitalize the first letter followed by lower case letters, and two-letter country codes are in upper case. The intent is to utilize current language codes to create more meaningful tags that can be either simple or complex.GlottologGlottolog provides codes for all languoids. This would include language families, languages, and dialects. While it does match up the ISO-639-3 code to the Glottocode, there is not always a 1 to 1 correlation. Glottocodes are composed of a combination of 4 letters and numbers followed by 4 more numbers. Its focus seems to be on lesser known languages, including modern languages that are endangered and assumed languages but does not provide coding for historical languages. VIVO language ontologyVIVO language ontology also relies on ISO 639-1, 639-2, and 639-3 language codes as its sources. The intent of this ontology is to allow for identification of both written and spoken languages. Labels are already in English, French, and German, and the ontology supports the addition of labels in native languages. While not a vocabulary itself, this ontology provides a model to convert ISO 639 language codes into a linked data framework.StakeholdersThe task group identified the following as stakeholders in the MARC, language, and linked data communities:Charles Riley, African language expertLarisa Walsh, Cyrillic language expertALA ALCTS CaMMS Committee on Cataloging: Asian and African Materials LD4P2 Non-Latin Script Materials Affinity Group CORMOSEA (Committee on Research Materials on Southeast Asia), Southeast Asian language experts CEAL (Council of East Asian Libraries), East Asian language expertMELA Committee on Cataloging - Middle Eastern languages VIVO Ontology Group / Violeta Ilik Linked Data Advisory Committee (LDAC)ILS VendorsFeasibility ReportAfter reviewing the standards above, the task group’s early assessment is that while it should be feasible to move to another standard other than the current MARC language codes there are many challenges related to this transition. Taking into consideration both MARC and BIBFRAME environments, the task group considers ISO 639-3 the best option. The following is a preliminary analysis of implementing non-MARC language schemes in MARC records and touching briefly on BIBFRAME records.Non-MARC Language Schemes in MARC RecordsThis discussion is limited to the most common places that MARC language codes can currently be used in the MARC 21 bibliographic and authority formats.Language of Cataloging or MetadataLanguage of cataloging or language of metadata is recorded in field 040 and field 242 in the MARC bibliographic record. In MARC authority records, it is recorded in field 040.Language of cataloging can be recorded at the record level in field 040 subfield $b of both the MARC bibliographic and authority formats. The language code must be taken from the MARC Code List for Languages. Although it is theoretically possible to define $2 in 040 for the source of language code in $b, there is not a compelling use case for expanding the options here from a PCC perspective. A more comprehensive list might be more useful in BIBFRAME or another linked data environment where “language of cataloging” could be tied to individual statements (e.g., bibliographic notes, summaries, reviews), but it is unlikely that that level of granularity could be effectively incorporated into MARC.Field 242 subfield $y can contain the MARC code for the language of a title that has been translated by the cataloging agency. This field is not widely used in PCC cataloging and is not likely to be used to provide translations into less common languages.Language of the ResourceThe language of the resource is recorded in 008/35-37, field 041, and field 377 in the MARC bibliographic record.Non-MARC language codes can be used in addition to or instead of MARC language codes in the 041 field in the bibliographic format and the 377 field in the bibliographic and authority formats. The source of the language term is identified in $2 and both ISO 639-3 and RFC 5646 already have codes defined. Since the infrastructure is in place, the remaining difficulties are related to the ways that existing systems handle language data in MARC records.Potential Issues to AddressFill characters in 008/35-37 (language fixed field)Codes from non-MARC language schemes can only be used in 041; they cannot be used in the language fixed field (008/35-37). If only non-MARC language codes are used, the MARC format says to use fill characters in 008. Although most systems likely use a combination of language codes from 008 and 041, it is possible that there are systems that only make use of the language code in 008.Codes with more or fewer than three lettersPrior to the introduction of a method for encoding non-MARC language codes in MARC in 2001, only three-letter codes from the MARC list of languages were permitted and multiple languages were coded in a single subfield.041 0# $d engfregerrus $e engfregerrus $h engfregerrus $g engfreger $h engSystems parsing these codes for display relied on the standard length of the codes to split out multiple codes in a single subfield. Many library databases may contain instances of this older method of language coding. Some systems still incorporate an expectation of three-letter codes into their parsing algorithm. Codes such as those in IETF may cause problems as well on when to use two letter codes and when to use three letter codes (i.e. en vs. eng). Regional information is also often not available in IEFT. Because ISO 639-3 contains only three-letter codes, it will be easier for some existing MARC-based systems to integrate.Number of language codesLanguage codes are generally mapped to labels for use in discovery interfaces. A switch to ISO 639-3 or RFC 5646 would increase the size of this mapping table significantly. There are 485 currently valid MARC language codes, but over 7800 in ISO 639-3. This may be an issue for maintenance or for processing in some systems (e.g., Ex Libris’ Primo has a limit on the number of unique values that can be defined for a “static” facet).The task group’s initial assessment is that ISO 639-3 is the most practical non-MARC language scheme to incorporate into MARC cataloging. Issues related to mapping and integration of ISO 639-3 codes specifically are described in the following section.Mapping MARC Language Codes and ISO 639-3There are 485 currently valid MARC language codes and 7867 currently valid ISO 639-3 codes.Matching codesExact matches419 of the 485 MARC language codes (86%) directly or indirectly match ISO 639-3 codes. In 306 cases, both the code and the label match. In 93 cases, the code matches, but the label does not. Most of these variations involve order or parenthetical qualifications and are obviously not substantive (e.g., "Ainu (Japan)" vs. "Ainu" or "Old English (ca. 450-1100)" vs. "English, Old (ca. 450-1100)"). The rest are intended to have equivalent meanings, although this possibly should be reviewed.ISO 639-2B vs. ISO 639-T termsISO-639-2 has two flavors: ISO 639-2B (bibliographic) and ISO 639-2T (terminology). The MARC language code list is the same as ISO 639-2B. The two ISO 639-2 lists are intended to be equivalent, but there are twenty cases where they use different codes for the same language. For example, the ISO 639-2B/MARC code for Chinese is “chi” while ISO 639-2T uses “zho.” In the cases where the language codes vary, ISO 639-3 uses the ISO 639-2T value. Therefore, although there is a 1:1 relationship between the MARC language code and the ISO 639-3 code, the values are not the same. This does not present a problem for display, but may be a challenge for search and indexing in some systems if they have to deal with databases that include values from both schemes. Systems would need a mechanism to collapse the equivalent ISO 639-2B/MARC and ISO 639-3 codes into a single value. There are a couple of machine-readable sources that could help with these mappings. SIL International, the organization that maintains ISO 639-3, provides tab-delimited, UTF-8 text files that include mappings of ISO 639-3 to the other ISO 639 standards for download. Wikidata also appears to provide links between the two vocabularies (e.g., ).Complexities with matching codesThere are a couple of situations where naive matching of equivalent ISO 639-3 and MARC language codes is potentially sub-optimal.MacrolanguagesISO 639-3 includes 62 codes for “macro” languages. 58 of these have an equivalent MARC language code. Macrolanguage codes are used to identify “clusters of closely-related language varieties that ... can be considered distinct individual languages, yet in certain usage contexts a single language identity for all is needed.” Examples of macrolanguage codes include ara (Arabic), zho (Chinese), nor (Norwegian) and hbs (Serbo-Croatian).These are three possible types of matches between MARC language codes and ISO 639-3 macrolanguages: MARC includes only the equivalent for the macrolanguage (e.g., Arabic, Chinese)MARC includes both the equivalent for the macrolanguage and some or all of the individual languages contained in the macrolanguage (e.g., Norwegian)MARC includes only the equivalent for the individual languages contained in the macrolanguage (e.g., Serbo-Croatian)There are three issues related to macrolanguages that need to be considered.Impact on systemsIndividual languages that are part of macrolanguages need to search and facet both as individual languages and as part of the macrolanguage for optimal usability. Users should be able to find things with the ISO 639-3 code “cmn” both when limiting to Mandarin (e.g., if they are searching for videos with Mandarin soundtracks) and when limiting to Chinese (e.g., if they want to see all the Chinese language resources recently acquired by the library or that address a certain topic). This collocation problem is similar to that discussed in the previous section on ISO 639-2B vs. ISO 639-2T except that it requires a single value to be mapped to multiple values rather than multiple values mapping to a single value.Policies for cataloging practicePolicies would need to be developed for when to use macrolanguage codes and when to use individual language codes and, possibly, when to use both.ConversionBecause there are no MARC language code equivalents for most of the individual languages that are part of ISO 639-3 macrolanguages, any attempts to automate incorporating the more specific codes into existing MARC records will be more complex.Historic languagesISO 639-3 includes 83 languages that it classifies as “historic.” These languages are “considered to be distinct from any modern languages that are descended from [them]: for instance, Old English and Middle English.” Only sixteen of these codes are also present in the MARC language list. Many of the remaining 67 ISO 639-3 historic languages are currently coded in MARC using the code that ISO 639-3 defines only for the modern, living language. For example, some things that are coded “spa” for Spanish in MARC should be coded “osp” (Old Spanish) in ISO 639-3. This is another area where conversion is not straightforward. However, this is not a new problem. Many current MARC bibliographic records, especially those retroconned from cards, fail to use the existing MARC codes for historic languages when they should. It would also be useful to have a machine-actionable way to group the temporal variants for retrieval (e.g., Korean, Middle Korean, Old Korean). A potential issue for consistently applying these codes is that only the ones that match the MARC codes include date ranges in their labels.Unmatched codesThere are 66 MARC codes that do not match ISO 639-3 codes. 65 of these match codes in ISO 639-5, which contains language families and groups. However, despite the fact that the same codes are used in both lists, some of them are defined differently and thus cannot be used interchangeably. Each of the ISO 639-5 codes describes a language grouping as a whole, including all of its members. Some of the matching MARC codes are also defined this way and thus, presumably semantically equivalent (e.g., “aus” for Australian languages). However, some of the MARC language codes are defined to include only those languages in a group that don’t have their own individual code. The MARC language code “fiu” (Finno-Ugrian (Other)) is a collective code for Ingrian, Khanty, Livonian, Ludic, Mansi, Mordvin and Veps. The ISO 639-5 code “fiu” is labeled “Finno-Ugrian languages” and covers all the languages in this family, including not just the obscure ones, but also more well-known examples like Finnish and Hungarian.Ideally, the MARC codes for language groupings would be converted to ISO 639-3 codes for the appropriate individual languages. However, this is challenging to do in an automated, scalable fashion. In some cases, specific languages could be identified in notes or subject headings, but some records will require manual review. Databases that include mixed practices where some records are coded for the specific language and some only for language groups will be frustrating and confusing for users. This could possibly be mitigated by the method suggested for macro languages where a search for the group code is designed to include the component languages.One MARC language code (“him” for Western Pahari languages) lacks a corresponding code in 639-3 or 639-5, but this seems likely to be an oversight and it should have been mapped to 639-5.Codes only in ISO 639-3There are 7448 codes in ISO 639-3 that do not have an exact match in the MARC language code list. We have not identified any potential problems with adding these to MARC records other than the issues discussed above.Coexistence of MARC language codes and ISO 639-3 codesBased on the analysis above, the task group has the following outstanding questions:Is it desirable to proactively convert language codes to ISO 639-3 in MARC records in shared databases such as WorldCat? The codes that are easier to convert in an automated process are those where the new codes provide the least benefit. On the other hand, a wholesale shift to ISO 639-3 would be easier for training and documentation.What should the policy be on records that include both MARC and ISO 639-3 language codes?Should double coding be encouraged or required for the use of legacy systems?Will using different language codes cause problems with user experience for ILS and vendors?Could the use of scripts be brought out with supplemental codes? Non-MARC language schemes in BIBFRAME recordsThe task group’s preliminary work looked at the ISO codes converted to URIs by both the LC Linked Data Service and the VIVO Language Ontology.LC Linked Data Service includes URIs for MARC Language codes, ISO 639-1, ISO 639-2, and ISO 639-5. While it doesn’t include the ISO 639-3, a URI was created to represent the ISO 639-3 code source. Using only this service for BIBFRAME and other linked data applications would currently exclude the ISO 639-3 standard. Because SILS, the organization that maintains ISO 639-3, has not published that vocabulary as linked data, many providers of linked data use the URIs published by Lexvo.VIVO Language Ontology was created to represent the languages in the ISO standards 639-1, 639-2, and 639-3. This ontology models language under two major classes, “continuants” and “occurants”. Continuants are “recorded text or media,” while occurants are performed works. The ontology acknowledges that an occurant could result in a continuant. The use of this ontology might work if ISO 639-3 is incorporated into bibliographic data, however the task group will need to look into this further. Potential problemsThe task group also identified some potential issues with implementing new language codes. Existent integrated library systems buy-inExistent integrated library systems are not able to process language codes that are more or less than 3 letters. The use of MARC language codes appears in numerous MARC fields, including 008/35-37, 040, 041 242, and 377. While some of these tags easily accommodate non-MARC language codes that are less or more than three letters, others don’t. The most critical one in the latter category is 008/35-37, which only allows three letters. Although most integrated library systems use a combination of language codes from 008 and 041 for indexing and display, it is possible that there are systems that only make use of the language code in 008. In addition, most systems can easily parse multiple MARC language codes stringed in one subfield, e.g. parsing 041 $d engfregerrus into 041 $d eng $d fre $d ger $d rus, based on the expectation that all language codes consist of three letters. In both cases, if an alternative vocabulary that employs codes more or less than 3 letters, it will be challenging for some libraries to adopt it.Resources required for mapping and policy establishmentDuring the investigation, the group discovered several vocabularies that show great promise to replace MARC language codes because they are much more comprehensive and flexible, for instance, ISO 639-3 and IETF/BCP-47. However, it is inevitable that efforts are required to map the MARC language codes to any alternative. Since the alternative vocabulary will have a much larger code pool than that of MARC language codes, automation alone will not be able to take on this task. Human intervention is essential to disentangle conflated languages in MARC codes. Also, adopting a new vocabulary requires establishing new community policies and getting buy-in from libraries. All these actions require resources. Given the current state of the library community, it will be a hard sell.Requirement for IRI availabilityAt this moment, the library metadata community is at the crossroad of transitioning from MARC21 to BIBFRAME. Any change to the current practices needs to take into consideration the interoperability between MARC21 and BIBFRAME. In the case of replacing MARC language codes, the alternative should have RDF IRIs ready for consumption or easily generated. It is highly possible that there will be resistance to adopting a new code if such a requirement is not met. Carrying out the ChargeWhile other problems may be encountered along the way, the task group identified the following potential difficulties in carrying out the charge. These are time, scope, and technical knowledge. The language codes and linked data ontologies each offered their own flavor. To determine the best fit for our current and future needs, the task group devoted a substantial amount of time to sift through the options. However, due to scope of the charge, time may become a factor in the resolution of all of the points.The scope of this charge is very large and given the time frame the task group is concerned that there may not be enough time to resolve all of the points in the charge. It’s highly likely that some points will require future work.While the task group has knowledge of linked data and BibFrame, the work done on the charge would benefit from input from an expert who is deeply immersed in the technical architecture.Appendix: MARC Documentation Related to Non-MARC Language SchemesExamples$2 - Source of code: Source of the language code scheme used in the field. Code from: Language Code and Term Source Codes.If a non-MARC code is used to express the predominant language in an item, field 008/35-37 is coded with three fill characters (| | |).If more than one code scheme is used in a record, repeat the field.008/35-37|||04107 $a en $a fr $a it $2 iso639-1008/35-37eng0410# $a eng $a fre04107 $a en $a fr $2 iso639-1[Two language code schemes are used and field 041 is repeated.]$r - Language code of accessible visual language (non-textual)Language codes for visual language (non-textual) used to provide alternative access to the audio content of a resource. For example, signed languages.0410# $a eng $r sgn04107 $r ase $2 iso639-3[An English language resource where audio is the primary mode of access, but alternate access is provided with picture-in-picture American Sign Language.]For resources where signed language is the primary mode of access, subfield $a should be used to record the language code for signed language.0410# $a sgn04107 $a ase $2 iso639-3[A resource where American Sign Language is the primary mode of access.]Language Code and Term Source Codes (Australian Institute of Aboriginal and Torres Strait Islander Studies (AIATSIS)) din2335Sprachenzeichen: DIN 2335 (Berlin: Beuth)glottoGlottolog iso639-1Codes for the representation of names of languages--Part 1: Alpha-2 code (ISO 639-1:2002) (Geneva: International Organization for Standardization) iso639-2bCodes for the representation of names of languages--Part 2: Alpha-3 code (ISO 639-2B:2002) (Geneva: International Organization for Standardization). [The bibliographic language codes are identical to both NISO Z39.53 and the MARC Code List for Languages.] iso639-3Codes for the representation of names of languages--Part 3: Alpha-3 code for comprehensive coverage of languages (Geneva: International Organization for Standardization) kniaKody naimenovanii íàzykov: GOST 7.75-97 (Minsk: Mezhgosudarstvennyi sovet po standartizatsii, metrologii i sertifikatsii)rfc3066Tags for the identification of languages (January 2001) (The Internet Society) [replaced by RFC 4646 and RFC 4647]rfc4646Tags for identifying languages (September 2006) (The Internet Society) [In combination with RFC 4647, replaces RFC 3066. A language identifier as specified by the Internet Best Current Practice specification RFC4646 . This document gives guidance on the use of ISO 639-1, ISO 639-2, and ISO 639-3 language identifiers with optional secondary subtags and extensions. Replaced by RFC 5646.]rfc5646Tags for Identifying Languages (September 2009) (The Internet Society) [In combination with RFC 5645, replaces RFC 4646. A language identifier as specified by the Internet Best Current Practice specification RFC5646 . This document gives guidance on the use of ISO 639-1, ISO 639-2, ISO 639-3, and ISO-639-5 language identifiers.]walsoThe World atlas of language structures online ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download