Strukturierter AbfrageausdruckStructured Query Expression

Ein strukturierter Abfrageausdruck gibt eine Gruppe von Vorgängen an, die anhand des Datenindex ausgewertet werden sollen.A structured query expression specifies a set of operations to evaluate against the data index. Er besteht aus Attributabfrageausdrücken und übergeordneten Funktionen.It consists of attribute query expressions and higher-level functions. Mithilfe der evaluate-Methode können die Objekte berechnet werden, die dem Ausdruck entsprechen.Use the evaluate method to compute the objects matching the expression. Im Folgenden finden Sie ein Beispiel aus dem Bereich wissenschaftlicher Veröffentlichungen, der von Jaime Teevan verfasste Veröffentlichungen seit dem Jahr 2013 zurückgibt.The following is an example from the academic publications domain that returns publications authored by Jaime Teevan since the year 2013.

And(Composite(Author.Name=='jaime teevan'),Y>=2013)

Strukturierte Abfrageausdrücke können durch interpret-Anforderungen abgerufen werden, bei denen die semantischen Ausgabe der einzelnen Interpretationen einen strukturierten Abfrageausdruck darstellt. Dieser gibt die Indexobjekte zurück, die der Eingabeabfrage in natürlicher Sprache entsprechen.Structured query expressions may be obtained from interpret requests, where the semantic output of each interpretation is a structured query expression that returns the index objects matching the input natural language query. Alternativ können diese mithilfe der in diesem Abschnitt erläuterten Syntax manuell erstellt werden.Alternatively, they may be manually authored using the syntax described in this section.

AttributabfrageausdruckAttribute Query Expression

Ein Attributabfrageausdruck identifiziert eine Reihe von Objekten basierend darauf, ob diese einem bestimmten Attribut entsprechen.An attribute query expression identifies a set of objects based on matching against a specific attribute. Je nach Attributtyp und indiziertem Vorgang, der im Schema angegeben wird, werden verschiedene übereinstimmende Vorgänge unterstützt:Different matching operations are supported depending on the attribute type and indexed operation specified in the schema:

TypeType VorgangOperation BeispieleExamples
stringString equalsequals Title='latent semantic analysis' (kanonisch + Synonyme)Title='latent semantic analysis' (canonical + synonyms)
stringString equalsequals Author.Name=='susan t dumais' (nur kanonisch)Author.Name=='susan t dumais' (canonical only)
stringString starts_withstarts_with Title='latent s'...Title='latent s'...
Int32/Int64/DoubleInt32/Int64/Double equalsequals Year=2000Year=2000
Int32/Int64/DoubleInt32/Int64/Double starts_withstarts_with Year='20'... (beliebiger Dezimalwert beginnend mit „20“)Year='20'... (any decimal value starting with "20")
Int32/Int64/DoubleInt32/Int64/Double is_betweenis_between Year<2000Year<2000
Year<=2000Year<=2000
Year>2000Year>2000
Year>=2000Year>=2000
Year=[2010,2012) (enthält nur den linken Begrenzungswert: 2010, 2011)Year=[2010,2012) (includes only left boundary value: 2010, 2011)
Year=[2000,2012] (enthält beide Begrenzungswerte: 2010, 2011, 2012)Year=[2000,2012] (includes both boundary values: 2010, 2011, 2012)
DateDate equalsequals BirthDate='1984-05-14'BirthDate='1984-05-14'
DateDate is_betweenis_between BirthDate<='2008/03/14'BirthDate<='2008/03/14'
PublishDate=['2000-01-01','2009-12-31']PublishDate=['2000-01-01','2009-12-31']
GuidGuid equalsequals Id='602DD052-CC47-4B23-A16A-26B52D30C05B'Id='602DD052-CC47-4B23-A16A-26B52D30C05B'

Der Ausdruck „Title='latent s'...“ z.B. entspricht allen wissenschaftlichen Veröffentlichungen, deren Titel mit der Zeichenfolge „latent s“ beginnen.For example, the expression "Title='latent s'..." matches all academic publications whose title starts with the string "latent s". Um diesen Ausdruck auswerten zu können, muss das Title-Attribut den Vorgang „starts_with“ im Schema angeben, das zum Erstellen des Index verwendet wird.In order to evaluate this expression, the attribute Title must specify the "starts_with" operation in the schema used to build the index.

Bei Attributen mit zugeordneten Synonymen kann ein Abfrageausdruck Objekte angeben, dessen kanonischer Wert einer bestimmten Zeichenfolge mit dem Operator „==“ entspricht, oder Objekte, bei denen keiner der kanonischen bzw. Synonymwerte dem Operator „=“ entspricht.For attributes with associated synonyms, a query expression may specify objects whose canonical value matches a given string using the "==" operator, or objects where any of its canonical/synonym values match using the "=" operator. Bei beiden Objekten muss der equals-Operator in der Attributdefinition angegeben werden.Both require the "equals" operator to be specified in the attribute definition.

FunctionsFunctions

Es gibt eine Reihe von integrierten Funktionen, die die Erstellung von komplexeren Abfrageausdrücken über grundlegende Attributabfragen ermöglichen.There is a built-in set of functions allowing the construction of more sophisticated query expressions from basic attribute queries.

And-FunktionAnd Function

And(expr1, expr2)

Gibt die Überschneidung der beiden Eingabeabfrageausdrücke zurück.Returns the intersection of the two input query expressions.

Das folgende Beispiel gibt wissenschaftliche Veröffentlichungen zurück, die im Jahr 2000 zum Thema Informationsgewinnung veröffentlicht wurden:The following example returns academic publications published in the year 2000 about information retrieval:

And(Year=2000, Keyword=='information retrieval')

Or-FunktionOr Function

Or(expr1, expr2)

Gibt die Kombination der beiden Eingabeabfrageausdrücke zurück.Returns the union of the two input query expressions.

Das folgende Beispiel gibt wissenschaftliche Veröffentlichungen zurück, die im Jahr 2000 zum Thema Informationsgewinnung oder Benutzermodellierung veröffentlicht wurden:The following example returns academic publications published in the year 2000 about information retrieval or user modeling:

And(Year=2000, Or(Keyword='information retrieval', Keyword='user modeling'))

Composite-FunktionComposite Function

Composite(expr)

Gibt eine Abfrage zurück, die einen inneren Ausdruck aus Abfragen mit untergeordneten Attributen eines gemeinsamen zusammengesetzten Attributs kapselt.Returns an expression that encapsulates an inner expression composed of queries against sub-attributes of a common composite attribute. Für die Kapselung muss das zusammengesetzte Attribut aller übereinstimmenden Datenobjekte mindestens einen Wert aufweisen, der jeweils den inneren Ausdruck erfüllt.The encapsulation requires the composite attribute of any matching data object to have at least one value that individually satisfies the inner expression. Beachten Sie, dass ein Abfrageausdruck untergeordneter Attribute eines zusammengesetzten Attributs mit der Composite()-Funktion gekapselt werden muss, bevor er mit anderen Abfrageausdrücken kombiniert werden kann.Note that a query expression on sub-attributes of a composite attribute has to be encapsulated using the Composite() function before it can be combined with other query expressions.

Der folgende Ausdruck beispielsweise gibt wissenschaftliche Veröffentlichungen von „harry shum“ zurück, während er gleichzeitig auf „microsoft“ festgelegt war:For example, the following expression returns academic publications by "harry shum" while he was at "microsoft":

Composite(And(Author.Name="harry shum", 
              Author.Affiliation="microsoft"))

Der folgende Ausdruck gibt hingegen wissenschaftliche Veröffentlichungen zurück, bei denen einer der Autoren „harry shum“ und eine der Zugehörigkeiten „microsoft“ ist:On the other hand, the following expression returns academic publications where one of the authors is "harry shum" and one of the affiliations is "microsoft":

And(Composite(Author.Name="harry shum"), 
    Composite(Author.Affiliation="microsoft"))