<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Denotational Semantics of the XML-λ Query Language</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Pavel</forename><surname>Loupal</surname></persName>
							<email>loupalp@fel.cvut.cz</email>
							<affiliation key="aff0">
								<orgName type="department">Department of Computer Science and Engineering</orgName>
								<orgName type="institution">FEL ČVUT</orgName>
								<address>
									<addrLine>Karlovo nám. 13</addrLine>
									<postCode>121 35</postCode>
									<settlement>Praha</settlement>
								</address>
							</affiliation>
							<affiliation key="aff2">
								<orgName type="department">Department of Computer Science and Engineering</orgName>
								<orgName type="institution">FEL ČVUT</orgName>
								<address>
									<addrLine>Karlovo nám. 13</addrLine>
									<postCode>121 35</postCode>
									<settlement>Praha</settlement>
								</address>
							</affiliation>
							<affiliation key="aff0">
								<orgName type="department">Department of Computer Science and Engineering</orgName>
								<orgName type="institution">FEL ČVUT</orgName>
								<address>
									<addrLine>Karlovo nám. 13</addrLine>
									<postCode>121 35</postCode>
									<settlement>Praha</settlement>
								</address>
							</affiliation>
							<affiliation key="aff2">
								<orgName type="department">Department of Computer Science and Engineering</orgName>
								<orgName type="institution">FEL ČVUT</orgName>
								<address>
									<addrLine>Karlovo nám. 13</addrLine>
									<postCode>121 35</postCode>
									<settlement>Praha</settlement>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Karel</forename><surname>Richta</surname></persName>
							<email>richta@ksi.mff.cuni.cz</email>
							<affiliation key="aff1">
								<orgName type="department">Department of Software Engineering MFF UK</orgName>
								<address>
									<addrLine>Malostranske nam. 25</addrLine>
									<postCode>118 00</postCode>
									<settlement>Praha</settlement>
								</address>
							</affiliation>
							<affiliation key="aff3">
								<orgName type="department">Department of Software Engineering MFF UK</orgName>
								<address>
									<addrLine>Malostranske nam. 25</addrLine>
									<postCode>118 00</postCode>
									<settlement>Praha</settlement>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="department">Department of Software Engineering MFF UK</orgName>
								<address>
									<addrLine>Malostranske nam. 25</addrLine>
									<postCode>118 00</postCode>
									<settlement>Praha</settlement>
								</address>
							</affiliation>
							<affiliation key="aff3">
								<orgName type="department">Department of Software Engineering MFF UK</orgName>
								<address>
									<addrLine>Malostranske nam. 25</addrLine>
									<postCode>118 00</postCode>
									<settlement>Praha</settlement>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Denotational Semantics of the XML-λ Query Language</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">42C40B7FAEC086EE339E45C6DD38623B</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T04:34+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>In this paper, we define formally the XML-λ Query Language, a query language for XML, that employs the functional data model. We describe its fundamental principles including the abstract syntax and denotational semantics. The paper basically aims for outlining of the language scope and capabilities.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>In this paper, we define formally the XML-λ Query Language, a query language for XML, that employs the functional data model. The first idea for such an attitude was published in <ref type="bibr" target="#b3">[4]</ref>. This research brought in the key idea of a functional query processing with a wide potential that was later proven by a simple prototype implementation <ref type="bibr" target="#b5">[6]</ref>.</p><p>We can imagine two scenarios for this language; firstly, the language plays a role of a full-featured query language for XML (it has both formal syntax and semantics and there is also an existing prototype that acts as a proof-ofthe-concept application). In the second scenario, the language is utilized as an intermediate language for the description of XQuery semantics. In <ref type="bibr" target="#b2">[3]</ref> we propose a novel method for XQuery evaluation based on the transformation of XQuery queries into their XML-λ equivalents and their subsequent evaluation. As an integral part of the work, we have designed and developed a prototype of an XML-λ query processor for validating the functional approach and experimenting with it.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">XML-λ Query Language</head><p>In this section, we describe the query language XML-λ, that is based on the simply typed lambda calculus. As a formal tool we use the approach published in Richta's overview of semantics <ref type="bibr" target="#b4">[5]</ref>. For listing of language syntax, we use the Extended Backus-Naur Form (EBNF) and for meaning of queries the denotational semantics <ref type="bibr" target="#b4">[5]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Language of Terms</head><p>Typical query expression has a query part -an expression to be evaluated over data -and a constructor part that wraps a query result and forms the output. The XML-λ Query Language is based on λ-terms defined over the type system T E as shown later. Lambda calculus, written also as λ-calculus, is a formal mathematical system for investigation of function definition and application. It was introduced by Alonzo Church and has been utilized in many ways. In this work, we use a variant of this formalism, the simply-typed λ-calculus, as a core for the XML-λ Query Language. We have gathered the knowledge from <ref type="bibr" target="#b6">[7]</ref> and <ref type="bibr" target="#b0">[1]</ref>. Our realization is enriched by usage of tuples.</p><p>The main constructs of the language are variables, constants, tuples, projections, and λ-calculus operations -applications and abstractions. The syntax is similar to λ-calculus expressions, thus the queries are structured as nested λexpressions, i.e., λ . . . (λ . . . (expression) . . .). In addition, there are also typical constructs such as logical connectives, constants, comparison predicates, and a set of built-in functions.</p><p>Language of terms is defined inductively as the least set containing all terms created by the application of the following rules. Let T, T 1 , . . . , T n , n ≥ 1 be members of T E . Let F be a set of typed constants. Then:</p><p>1. variable: each variable of type T is a term of type T 2. constant: each constant (member of F ) of type T is a term of type T 3. application: if M is a term of type ((T 1 , . . . , T n ) → T ) and N 1 , . . . , N n are terms of the types T 1 , . . . , T n ,then M (N 1 , . . . , N n ) is a term of the type T 4. λ-abstraction: if x 1 , . . . , x n are distinct variables of types T 1 , . . . , T n and M is a term of type T , then λx 1 : T 1 , . . . , x n :</p><formula xml:id="formula_0">T 1 .(M ) is a term of type ((T 1 , . . . , T n ) → T ) 5. n-tuple: if N 1 , . . . , N n are terms of types T 1 , . . . , T n , then (N 1 , . . . , N n ) is a term of type (T 1 , . . . , T n ) 6. projection: if (N 1 , . . . , N n ) is a term of type (T 1 , . . . , T n ), then N 1 , . . . , N n are terms of types T 1 , . . . , T n 7. tagged term: if N is a term of type N AM E and M is a term of type T then N : M is a term of type (E → T ).</formula><p>Terms can be interpreted in a standard way by means of an interpretation assigning to each constant from F an object of the same type, and by a semantic mapping from the language of terms to all functions and Cartesian products given by the type system T E . Speaking briefly, an application is evaluated as an application of of the associated function to given arguments, an abstraction 'constructs' a new function of the respective type. The tuple is a member of Cartesian product of sets of typed objects. A tagged term is interpreted as a function defined only for one e ∈ E. It returns again a function.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Abstract Syntax</head><p>As for evaluation of a query, we do not need its complete derivation tree; such information is too complex and superfluous. Therefore, in order to diminish the domain that needs to be described without any loss of precision, we employ the abstract syntax. With the abstract syntax, we break up the query into logical pieces that forming an abstract syntax tree carrying all original information constitute an internal representation suitable for query evaluation. We introduce syntactic domains for the language, i.e., logical blocks a query may consist of. Subsequently, we list all production rules. These definitions are later utilized in Section 4 within the denotational semantics.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Syntactic Domains</head><p>By the term syntactic domain, we understand a logical part of a language. In Table <ref type="table" target="#tab_0">1</ref>, we list all syntactic domains of the XML-λ Query Language with their informal meaning. Notation Q : Query stands for the symbol Q representing a member of the Query domain. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Abstract Production Rules</head><p>The abstract production rules listed in Table <ref type="table" target="#tab_1">2</ref> (written using EBNF) connect the terms of syntactic domains from the previous section into logical parts with suitable level of details for further processing. On the basis of these rules, we will construct the denotational semantics of the language.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Denotational Semantics</head><p>For description the meaning of each XML-λ query, we use denotational semantics. The approach is based on the idea that for each correct syntactic construct of the language we can define a respective meaning of it as a formal expression in  another, well-known, notation. We can say that the program is the denotation of its meaning. The validity of the whole approach is based on structural induction; i.e, that the meaning of more complex expressions is defined on the basis of their simpler parts. As the notation we employ the simply typed lambda calculus. It is a well-known and formally verified tool for such a purpose.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">Prerequisites</head><p>The denotational semantics utilizes a set of functions for the definition of the language meaning. For this purpose, we formulate all necessary mathematical definitions. We start with the data types and specification of the evaluation context followed by the outline of bindings to the T E type system. Then, all auxiliary and denotation functions are introduced.</p><p>Data Types. Each value computed during the process of the query evaluation is of a type from T ype. Let E be a type from the type system T E , we define T ype as: Primitive types, Boolean, String, and N umber, are defined with their set of allowed values as usual. The type SeqT ype is the type of all ordered sequences of elements of base types 3 . We do not permit sequences of sequences. The symbol ⊥ stands for the empty sequence of types -represents an unknown type. More precisely, we interpret types as algebraic structures, where for each type τ ∈ T ype there is exactly one carrier V τ , whose elements are the values of the respective type τ .</p><p>Variables. An XML-λ query can use an arbitrary (countable) number of variables. We model variables as pairs name : τ , where name refers to a variable name and τ is the data type of the variable -any member of T ype. Syntactically, variable name is always prepended by the dollar sign. Each expression in XML-λ has a recognizable type, otherwise both the type and the value are undefined.</p><p>Query Evaluation Context. During the process of query evaluation we need to store variables inside a working space known as a context. Formally, we denote this context as the State. We usually understand a state as the set of all active objects and their values at a given instance. We denote the semantic domain State of all states as a set of all functions from the set of identifiers Identif ier into their values of the type τ ∈ T ype. Obviously, one particular state σ : State represents an immediate snapshot of the evaluation process; i.e., values of all variables at a given time. We denote this particular value for the variable x as σ <ref type="bibr">[[x]</ref>]. Simply speaking, the state is the particular valuation of variables. We use the functor f [x ← v] for the definition of a function change in one point x to the value v.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2">Auxiliary Functions</head><p>For the sake of readability improvement, we propose few semantic functions, denoted as auxiliary, that should make the denotations more legible. We introduce functions: isIdent -returns true iff its argument denotes an variable identifier in a given State, typeOf -returns a type of given argument (one type from the T ype set), valueOf -returns a typed value of an expression, bool -evaluates its argument as a Boolean value, num -converts its argument into a numeric value, and str -converts its argument into a string value.</p><p>Each expression e has a distinguished type in a state σ. The type can depend on the state because an expression can contain variables. This type is available by calling the typeOf semantic function defined in Table <ref type="table" target="#tab_2">3</ref>.</p><formula xml:id="formula_1">typeOf : Expression × State → T ype</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.3">XML Schema-Specific Functions</head><p>For utilization of the features offered by the XML-λ Framework we propose a number of functions working with information available in the type system. These functions help us to access an arbitrary data model instance. An application is informally used for accessing child elements of a given one. More formally, it is an evaluation of a T -object specified by its name. A projection is generally used for selecting certain items from a sequence. A nullary function. A T -nullary function returns all abstract elements from E T . Root Element Access is a shortcut for a common activity in the XML world -accessing the root element of an XML document. We type it as a constant of a given type from Options and Queries. The only allowed option in the language is now the specification of input XML documents. We explore a function Dom(X) that converts input XML document X into its internal representation accessible under identification X#. A query consists of query options, where input XML documents </p><formula xml:id="formula_2">T E . typeOf [[e]](σ) =                                            ⊥ if</formula><formula xml:id="formula_3">[[N I]]σ = attribute(N, SemExpr[[I]]σ) Sem ElemConstr [[N A1...AnI]]σ = = element(N, σ[[I]], SemAttrCons[[A1]]σ, ..., SemAttrCons[[An]]σ) Sem ElemConstr [[N A1...AnE]]σ = = element(N, SemExpr[[E]]σ, SemAttrCons[[A1]]σ, ..., SemAttrCons[[An]]σ) Sem ElemConstr [[N I]]σ = element(N, σ[[I]], nil) Sem ElemConstr [[N E]]σ = element(N, SemExpr[[E]]σ, nil) SemCons[[E1E]]σ = append(Sem ElemCons [[E1]]σ, SemCons[[E]]σ) SemCons[[I1E]]σ = cons(σ[[I1]], SemCons[[E]]σ) SemCons[[ ]]σ = nil</formula><p>Table <ref type="table">5</ref>. The semantic equation for constructors  Table <ref type="table">7</ref>. Semantic equations for options and queries are bound to its formal names, the query expression to be evaluated, and the output construction commands. First, input files are elaborated, than an initial variable assignment takes place, followed by evaluation of expression. Finally, the output is constructed. The whole meaning of a query can be modeled as a mapping from the sequence of input XML documents into a sequence of output values of the type of T ype.</p><formula xml:id="formula_4">SemF rag[[N ull]] = λσ : State.nullXMLDoc[[N ull]] SemF rag[[I d]] = λσ : State.σ[[Id]] SemF rag[[f (E1, ..., En)]] = λσ : State.f (SemExpr[[E1]]σ, ..., SemExpr[[En]]σ) SemF rag[[F P ]] = λσ : State.(SemF rag[[F ]] • SemF rag[[P ]])σ SemF rag[[(subquery)(arg)]] = λσ : State.(SemExpr[[subquery]](σ)(SemExpr[[arg]](σ))) SemF rag[[I1I2...InE]] = SemExpr[[I2...InE]](σ[SemExpr[[E]]σ ← I1]) SemF rag[[N ]] = λσ : State.num[[N ]] if N is a constant of the type N umeral SemF rag[[S]] = λσ : State.str[[S]] if S is a constant of the type String SemF rag[[B]] = λσ : State.bool[[B]] if B is a constant of the type Boolean SemExpr[[F ]]σ = SemF rag[[F ]]σ</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Conclusions</head><p>In this paper, we have presented syntax and denotational semantics of the XML-λ Query Language, a query language for XML based on simply typed lambda calculus. We use this language within the XML-λ Framework as an intermediate form of XQuery expressions for description of its semantics. Nevertheless the language in its current version does not support all XML features, e.g. comments, processing instructions, or deals only with type information available in DTD, it can be successfully utilized for fundamental scenarios both for standalone query evaluation or as a tool for XQuery semantics description.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>Query ::= Options Constructor Expression Constructor ::= ElemConstr + | Identif ier+ ElemConstr ::= N ame AttrConstr * (Identif ier | ElemConstr) AttrConstr ::= N ame Identif ier Expression ::= F ragment F ragment ::= N ullary | Identif ier | F ragment P rojection | SubQuery | F unctionCall | N umeral | String | Boolean T erm ::= Boolean | F ilter | 'not' T erm | T erm BinOper T erm F ilter ::= F ragment RelOper F ragment SubQuery ::= Identif ier + Expression BinOper ::= 'or' | 'and' RelOper ::= '&lt;=' | '&lt;' | '=' | '!=' | '&gt;' | '&gt;=' N umeral ::= Digit+ | Numeral . Digit+ Digit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' Identif ier ::= N ame P rojection ::= Identif ier N ullary ::= Identif ier</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>T</head><label></label><figDesc>ype ::= BaseT ype | SeqT ype SeqT ype ::= ⊥ | BaseT ype × SeqT ype BaseT ype ::= E | P rimitiveT ype P rimitiveT ype ::= Boolean | String | N umber</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head></head><label></label><figDesc>SemQuery[[O C E]]= = λδ : XM LDoc.(SemCons[[C]](SemExpr[[E]](SemOptions[[O]](λσ.⊥)(δ))) SemQuery[[Q]](nil) = nil SemQuery[[Q]](cons(H, T )) = append(SemQuery[[Q]](H), SemQuery[[Q]](T )) SemOptions[[ ]] = λσ : State.⊥ SemOptions[[ xmldata( X ) Y ]] = λσ : State.SemOptions[[Y ]](σ[Dom(X) ← X#])</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1 .</head><label>1</label><figDesc>Syntactic domains of the XML-λ Query Language</figDesc><table /><note>Q : Query XML-λ queries, O : Option XML-λ options -XML input attachements, C : Constructor XML-λ constructors of output results, E : Expression general expressions, yield a BaseT ype value, T : T erm sort of expression, yield a BaseT ype value, F : F ragment sub-parts of a T erm, BinOp : BinOperator binary logical operators, RelOp : RelOperator binary relational operators, N : N umeral numbers, S : String character strings, Id : Identif ier strings conforming to the N ame syntactic rule in [2], N F : N ullary identifiers of nullary functions (subset of Identif ier), P roj : P rojection identifiers for projections (subset of Identif ier).</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Table 2 .</head><label>2</label><figDesc>Abstract production rules for the XML-λ Query Language</figDesc><table /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>Table 3 .</head><label>3</label><figDesc>e is a nullary fragment Boolean if e ∈ ν Boolean (e is a constant of the type Boolean) N umeral if e ∈ ν Numeral (e is a constant of the type N umeral) Types of general expressions SeqT ype) Sem T erm : T erm → (State → Boolean) Sem F rag : F ragment → (State → SeqT ype) Sem RelOper : F ragment × RelOper × F ragment → (State → Boolean) Sem BinOper : T erm × BinOper × T erm → (State → Boolean) 4.5 Semantic Equations We start with the semantic equations for the expressions. Each expression e has a value Sem Expr [[e]](σ) in a state σ. The state represents values of variables. The result is a state, where all interesting values are bound into local variables. Resulting values are created by constructors. A constructor is a list of items which can be variable identifier or constructing expression. Resulting values can be created by element constructors. Elements can have attributes assigned by attribute constructors.</figDesc><table><row><cell>String</cell><cell>if e ∈ νString (e is a constant of the type String)</cell></row><row><cell>τ</cell><cell>if isIdent[[e]](σ) and σ[[e]] : τ</cell></row><row><cell></cell><cell>(e is a variable of the type τ )</cell></row><row><cell cols="2">Boolean if e is a relational fragment (filter)</cell></row><row><cell></cell><cell>e1 RelOper e2</cell></row><row><cell cols="2">Boolean if e is a logical expression</cell></row><row><cell></cell><cell>e1 BinOper e2, or not e1</cell></row></table><note>appXMLDoc : E → SeqT ype projXMLDoc : SeqT ype × τ → SeqT ype nullXMLDoc : E × T → SeqT ype rootXMLDoc : E4.4 Signatures of Semantic FunctionsHaving defined all necessary prerequisites and auxiliary functions (recalling that the SeqT ype represents any permitted type of value), we formalize semantic functions over semantic domains as Sem Query : Query → (XM LDoc → SeqT ype) Sem Options : Options → (State → State) Sem Expr : Expression → (State →</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head>Table 4 .</head><label>4</label><figDesc>SemT erm[[B]]= λσ : State.bool[[B]] if B is a constant of the type Boolean SemT erm[[F1 RelOp F2]] = λσ : State.Sem RelOper [[F1 RelOp F2]]σ SemT erm[[ not T ]] = λσ : State.not(SemT erm[[T ]]σ) Semantic equations for terms, relational and binary operators</figDesc><table><row><cell>SemBinOper[[T1 'or' T2]] = λσ : State.(SemT erm[[T1 ]]σ or SemT erm[[T2 ]]σ)</cell></row><row><cell>SemBinOper[[T1 'and' T2]] = λσ : State.(SemT erm[[T1 ]]σ and SemT erm[[T2]]σ)</cell></row><row><cell>SemT erm[[T1 BinOper T2]] = λσ : State.SemBinOper[[T1 BinOper T2]]σ</cell></row><row><cell>SemAttrConstr</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_4"><head>Table 6 .</head><label>6</label><figDesc>Semantic equations for fragments and expressions Loupal P., Richta K.</figDesc><table /></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_0">We suppose usual functions cons, append, null, head, and tail for sequences.</note>
		</body>
		<back>

			<div type="funding">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>This work has been supported by the Ministry of Education, Youth and Sports under Research Program No. MSM 6840770014 and also by the grant project of the Czech Grant Agency (GA ČR) No. GA201/09/0990.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Lambda calculi with types</title>
		<author>
			<persName><forename type="first">H</forename><surname>Barendregt</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Background: Mathematical Structures) and 2 (Background: Computational Structures</title>
				<editor>
			<persName><surname>Abramsky</surname></persName>
		</editor>
		<editor>
			<persName><surname>Gabbay</surname></persName>
		</editor>
		<editor>
			<persName><surname>Maibaum</surname></persName>
		</editor>
		<meeting><address><addrLine>Clarendon</addrLine></address></meeting>
		<imprint>
			<publisher>Oxford University Press</publisher>
			<date type="published" when="1992">1992</date>
			<biblScope unit="volume">1</biblScope>
		</imprint>
	</monogr>
	<note>Handbook of Logic in Computer Science</note>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m" type="main">Extensible markup language (XML) 1.0</title>
		<author>
			<persName><forename type="first">T</forename><surname>Bray</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Paoli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">M</forename><surname>Sperberg-Mcqueen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Maler</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Yergeau</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/2006/REC-xml-20060816" />
		<imprint>
			<date type="published" when="2006-08">August 2006</date>
		</imprint>
	</monogr>
	<note>fourth edition</note>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m" type="main">XML-λ : A Functional Framework for XML</title>
		<author>
			<persName><forename type="first">P</forename></persName>
		</author>
		<imprint>
			<date type="published" when="2010-02">February 2010</date>
		</imprint>
		<respStmt>
			<orgName>Department of Computer Science and Engineering, Faculty of Electrical Engineering, Czech Technical University in Prague</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Ph.D. Thesis</note>
	<note>Submitted</note>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">XML functionally</title>
		<author>
			<persName><forename type="first">J</forename><surname>Pokorný</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of IDEAS2000</title>
				<editor>
			<persName><forename type="first">B</forename><forename type="middle">C</forename><surname>Desai</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Y</forename><surname>Kioki</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Toyama</surname></persName>
		</editor>
		<meeting>IDEAS2000</meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2000">2000</date>
			<biblScope unit="page" from="266" to="274" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<author>
			<persName><forename type="first">K</forename><surname>Richta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Velebil</surname></persName>
		</author>
		<title level="m">Sémantika programovacích jazyku</title>
				<meeting><address><addrLine>Univerzita Karlova</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1997">1997</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m" type="main">Implementation of the XML lambda language</title>
		<author>
			<persName><forename type="first">P</forename><surname>Šárek</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2002">2002</date>
			<pubPlace>Prague</pubPlace>
		</imprint>
		<respStmt>
			<orgName>Dept. of Software Engineering, Charles University</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Master&apos;s thesis</note>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<author>
			<persName><forename type="first">J</forename><surname>Zlatuška</surname></persName>
		</author>
		<title level="m">Masarykova univerzita</title>
				<meeting><address><addrLine>Brno, Česká republika</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1993">1993</date>
		</imprint>
	</monogr>
	<note>Lambda-kalkul</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
