Semantische InterpretationSemantic Interpretation

Die semantische Interpretation ordnet jedem interpretierten Pfad über die Grammatik eine semantische Ausgabe zu.Semantic interpretation associates semantic output with each interpreted path through the grammar. Insbesondere wertet der Dienst zur Berechnung der endgültigen Ausgabe die Abfolge der Anweisungen in den tag-Elementen aus, die die Interpretation traversieren.In particular, the service evaluates the sequence of statements in the tag elements traversed by the interpretation to compute the final output.

Bei einer Anweisung kann es sich um eine Zuweisung eines Literals oder einer Variable zu einer anderen Variable handeln.A statement may be an assignment of a literal or a variable to another variable. Sie kann aber auch die Ausgabe einer Funktion mit null oder mehr Parametern einer Variablen zuweisen.It may also assign the output of a function with 0 or more parameters to a variable. Jeder Funktionsparameter kann mit einem Literal oder einer Variablen angegeben werden.Each function parameter may be specified using a literal or a variable. Wenn die Funktion keine Ausgabe zurückgibt, erfolgt keine Zuweisung.If the function does not return any output, the assignment is omitted.

<tag>x = 1; y = x;</tag>
<tag>q = All(); q = And(q, q2);</tag>
<tag>AssertEquals(x, 1);</tag>

Eine Variable mit einem Namensbezeichner, der mit einem Buchstaben beginnt und nur aus Buchstaben (A-Z), Ziffern (0-9) und Unterstrichen (_) besteht.A variable is specified using a name identifier that starts with a letter and consists only of letters (A-Z), numbers (0-9), and the underscore (_). Der Typ wird nicht implizit aus dem Literal oder dem Funktionsausgabewert abgeleitet, der ihm zugewiesen ist.Its type is implicitly inferred from the literal or function output value assigned to it.

Es folgt eine Liste der zurzeit unterstützten Datentypen:Below is a list of currently supported data types:

TypeType BESCHREIBUNGDescription BeispieleExamples
stringString Abfolge von 0 oder mehr ZeichenSequence of 0 or more characters „Hallo Welt!“"Hello World!"
""""
BoolBool Boolescher WertBoolean value truetrue
falsefalse
Int32Int32 Ganze 32-Bit-Zahl mit Vorzeichen:32-bit signed integer. -2.1e9 bis 2.1e9-2.1e9 to 2.1e9 123123
-321-321
Int64Int64 Ganze 64-Bit-Zahl mit Vorzeichen:64-bit signed integer. -9.2e18 und 9.2e18-9.2e18 and 9.2e18 98765432109876543210
DoubleDouble Gleitkommazahl mit doppelter Genauigkeit:Double precision floating-point. 1.7e+/-308 (15 Ziffern)1.7e+/-308 (15 digits) 123.456789123.456789
1.23456789e21.23456789e2
GuidGuid GUID (Globally Unique Identifier)Globally unique identifier „602DD052-CC47-4B23-A16A-26B52D30C05B“"602DD052-CC47-4B23-A16A-26B52D30C05B"
AbfragenQuery Abfrageausdruck, der im Index eine Teilmenge von Datenobjekten angibtQuery expression that specifies a subset of data objects in the index All()All()
And(q1, q2)And(q1, q2)

Semantische FunktionenSemantic Functions

Es gibt eine Reihe von integrierten semantischen Funktionen.There is a built-in set of semantic functions. Sie ermöglichen die Erstellung komplexer Abfragen und eine kontextabhängige Steuerung grammatischer Interpretationen.They allow the construction of sophisticated queries, and provide context sensitive control over grammar interpretations.

And-FunktionAnd Function

query = And(query1, query2);

Gibt eine Abfrage aus der Überschneidung zweier Eingabeabfragen zurück.Returns a query composed from the intersection of two input queries.

Or-FunktionOr Function

query = Or(query1, query2);

Gibt eine Abfrage aus der Kombination zweier Eingabeabfragen zurück.Returns a query composed from the union of two input queries.

All-FunktionAll Function

query = All();

Gibt eine Abfrage zurück, die alle Datenobjekte enthält.Returns a query that includes all data objects.

Im folgenden Beispiel verwenden wir die All()-Funktion, um eine Abfrage basierend auf der Überschneidung von mindestens einem Schlüsselwort iterativ zu erstellen.In the following example, we use the All() function to iteratively build up a query based on the intersection of 1 or more keywords.

<tag>query = All();</tag>
<item repeat="1-">
  <attrref uri="academic#Keyword" name="keyword">
  <tag>query = And(query, keyword);</tag>
</item>

None-FunktionNone Function

query = None();

Gibt eine Abfrage zurück, die keine Datenobjekte enthält.Returns a query that includes no data objects.

Im folgenden Beispiel verwenden wir die None()-Funktion, um eine Abfrage basierend auf der Kombination von mindestens einem Schlüsselwort iterativ zu erstellen.In the following example, we use the None() function to iteratively build up a query based on the union of 1 or more keywords.

<tag>query = None();</tag>
<item repeat="1-">
  <attrref uri="academic#Keyword" name="keyword">
  <tag>query = Or(query, keyword);</tag>
</item>

Query-FunktionQuery Function

query = Query(attrName, value)
query = Query(attrName, value, op)

Gibt eine Abfrage zurück, die nur Datenobjekte enthält, deren Attribut attrName gemäß der angegebenen Operation op dem Wert value entspricht, der standardmäßig auf „eq“ festgelegt ist.Returns a query that includes only data objects whose attribute attrName matches value value according to the specified operation op, which defaults to "eq". In der Regel verwenden Sie ein attrref-Element zum Erstellen einer Abfrage, die auf der Grundlage der übereinstimmenden Zeichenfolge der Eingabeabfrage.Typically, use an attrref element to create a query based on the matched input query string. Wenn ein Wert durch andere Methoden zugewiesen oder abgerufen wird, kann mithilfe der Query()-Funktion eine diesem Wert entsprechende Abfrage erstellt werden.If a value is given or obtained through other means, the Query() function can be used to create a query matching this value.

Im folgenden Beispiel wird die Query()-Funktion verwendet, um Unterstützung für die Angabe von wissenschaftlichen Veröffentlichungen von einem bestimmten Jahrzehnt zu implementieren.In the following example, we use the Query() function to implement support for specifying academic publications from a particular decade.

written in the 90s
<tag>
  beginYear = Query("academic#Year", 1990, "ge");
  endYear = Query("academic#Year", 2000, "lt");
  year = And(beginYear, endYear);
</tag>

Composite-FunktionComposite Function

query = Composite(innerQuery);

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

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

Composite(And(Query("academic#Author.Name", "harry shum"), 
              Query("academic#Author.Affiliation", "microsoft")));

Die folgende Abfrage 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 query returns academic publications where one of the authors is "harry shum" and one of the affiliations is "microsoft":

And(Composite(Query("academic#Author.Name", "harry shum"), 
    Composite(Query("academic#Author.Affiliation", "microsoft")));

GetVariable-FunktionGetVariable Function

value = GetVariable(name, scope);

Gibt den Wert der Variable name zurück, die unter dem angegebenen scope-Attribut definiert ist.Returns the value of variable name defined under the specified scope. name ist ein Bezeichner, der mit einem Buchstaben beginnt und nur aus Buchstaben (A-Z), Ziffern (0-9) und Unterstrichen () besteht.name is an identifier that starts with a letter and consists only of letters (A-Z), numbers (0-9), and the underscore (). scope kann auf „request“ oder „system“ festgelegt werden.scope can be set to "request" or "system". Beachten Sie, dass sich Variablen, die unter verschiedenen Bereichen definiert werden, voneinander unterscheiden. Dies gilt auch für Variablen, die über die Ausgabe semantischer Funktionen definiert werden.Note that variables defined under different scopes are distinct from each other, including ones defined via the output of semantic functions.

Bereichsvariablen für Anforderungen werden in allen Interpretationen innerhalb der aktuellen Interpretationsanforderung gemeinsam verwendet.Request scope variables are shared across all interpretations within the current interpret request. Mit diesen kann die Suche nach Interpretationen der Grammatik gesteuert werden.They can be used to control the search for interpretations over the grammar.

Systemvariablen werden vom Dienst vordefiniert und können zum Abrufen verschiedener Statistiken über den aktuellen Status des Systems verwendet werden.System variables are predefined by the service and can be used to retrieve various statistics about the current state of the system. Im Folgenden werden die derzeit unterstützten Systemvariablen aufgeführt:Below is the set of currently supported system variables:

NAMEName TypeType BESCHREIBUNGDescription
IsAtEndOfQueryIsAtEndOfQuery BoolBool „true“, wenn die aktuelle Interpretation mit dem gesamten Text der Eingabeabfrage übereingestimmt hattrue if the current interpretation has matched all input query text
IsBeyondEndOfQueryIsBeyondEndOfQuery BoolBool „true“, wenn die aktuelle Interpretation Vervollständigungen hinter dem Text der Eingabeabfrage vorgeschlagen hattrue if the current interpretation has suggested completions beyond the input query text

SetVariable-FunktionSetVariable Function

SetVariable(name, value, scope);

Weist den value der Variable name unter dem angegebenen scope-Attribut zu.Assigns value to variable name under the specified scope. name ist ein Bezeichner, der mit einem Buchstaben beginnt und nur aus Buchstaben (A-Z), Ziffern (0-9) und Unterstrichen () besteht.name is an identifier that starts with a letter and consists only of letters (A-Z), numbers (0-9), and the underscore (). Derzeit ist „request“ der einzige gültige Wert für scope.Currently, the only valid value for scope is "request". Es gibt keine festlegbaren Systemvariablen.There are no settable system variables.

Bereichsvariablen für Anforderungen werden in allen Interpretationen innerhalb der aktuellen Interpretationsanforderung gemeinsam verwendet.Request scope variables are shared across all interpretations within the current interpret request. Mit diesen kann die Suche nach Interpretationen der Grammatik gesteuert werden.They can be used to control the search for interpretations over the grammar.

AssertEquals-FunktionAssertEquals Function

AssertEquals(value1, value2);

Wenn value1 und value2 gleichwertig sind, wird die Funktion erfolgreich ausgeführt und hat keine Nebeneffekte zufolge.If value1 and value2 are equivalent, the function succeeds and has no side effects. Andernfalls tritt bei der Ausführung der Funktion ein Fehler auf, und die Interpretation wird abgelehnt.Otherwise, the function fails and rejects the interpretation.

AssertNotEquals-FunktionAssertNotEquals Function

AssertNotEquals(value1, value2);

Wenn value1 und value2 nicht gleichwertig sind, wird die Funktion erfolgreich ausgeführt und hat keine Nebeneffekte zufolge.If value1 and value2 are not equivalent, the function succeeds and has no side effects. Andernfalls tritt bei der Ausführung der Funktion ein Fehler auf, und die Interpretation wird abgelehnt.Otherwise, the function fails and rejects the interpretation.