Vai al contenuto principale
Per ogni elemento di ricerca, il codice in un’attività Extraction Rules contiene una serie di regole eseguite in sequenza. Ogni regola è composta da due parti e termina con un punto e virgola:
Parte sinistra
=>
Parte destra;
La parte sinistra verifica una condizione o trova valori che la soddisfano. La parte destra crea nuove istanze di elementi di ricerca e assegna loro tali valori.

Esempio

La semplice regola seguente trova un elemento di ricerca kw_Contract che contiene la parola chiave “Contract”:
[ t: "Contract" ] // ricerca della parola "Contract" e assegnazione del token a una nuova variabile denominata t
=>
kw_Contract( t ); // creazione di una nuova istanza dell'elemento di ricerca kw_Contract a ogni ripetizione della parola "Contract"

Struttura della parte sinistra

La parte sinistra è composta da un massimo di tre sezioni:
Condizione_di_esistenza
Modello_di_token
Controllo_aggiuntivo
  1. Condizione di esistenza (facoltativa): individua un oggetto che presenta gli attributi specificati. Si consiglia di assegnare un nome all’oggetto, se esiste, così da poterlo riutilizzare nella stessa regola. La condizione può anche specificare l’assenza di un oggetto.

Esempi

Se devi trovare una sola occorrenza dell’elemento di ricerca SellerName, indica all’inizio della regola che non è stata ancora trovata alcuna occorrenza:
~SellerName // verifica che l'elemento di ricerca SellerName non sia ancora stato individuato
Nota che non è possibile assegnare un nome di variabile quando si utilizzano condizioni negative, perché una condizione negativa implica che non esista alcun oggetto. Questa condizione verifica l’esistenza di un’entità denominata “indirizzo”:
a: NERAddress // verifica l'esistenza di un'entità denominata di tipo indirizzo e la assegna a una nuova variabile chiamata a
Vedi Condizione di esistenza per i dettagli sulla sintassi utilizzata in questa sezione.
  1. Modello di token (obbligatorio): è costituito da una sequenza di token. Un token è una parola di una lingua naturale o un segno di punteggiatura. I token di solito non contengono spazi, salvo rari casi in cui lo spazio compare all’interno di una costruzione usata come singola parola: such as, a lot.

Esempio

Ad esempio, il seguente modello di token è composto da un token che corrisponde alla parola chiave “Grantor”, un token con i due punti e un token ripetuto con l’entità denominata Person (indicato come ripetuto perché il nome di una persona può essere composto da più parole, ciascuna rappresentata da un token distinto):
["Grantor"] [":"] [p: @NERPerson]+
Il modello corrisponderà a una string come “Grantor: Anne Smith” e assegnerà il valore “Anne Smith” alla variabile p. Vedi Token template per i dettagli sulla sintassi utilizzata in questa sezione.
  1. Controllo aggiuntivo (opzionale): Verifica condizioni aggiuntive per oggetti già menzionati nella regola.

Esempio

Ad esempio, supponiamo che tu stia cercando le parti di un contratto e abbia raggruppato i field in due istanze di gruppo separate, una per ciascuna parte. Dopo aver trovato un nome di organizzazione e un indirizzo, puoi verificare se questi elementi di ricerca hanno lo stesso parent. In tal caso, significa che questo indirizzo appartiene a questa organizzazione.
n: Party.OrgName // l'elemento di ricerca del nome dell'organizzazione è stato trovato in precedenza
[ a: @Party.Address ] // trova il token in cui è stato trovato l'elemento di ricerca dell'indirizzo
// Verifica che gli elementi di ricerca del nome dell'organizzazione e dell'indirizzo
// siano elementi figlio della stessa istanza dell'elemento di gruppo Party
parent( n ) == parent( obj( a ) )
Vedere Controllo aggiuntivo per i dettagli sulla sintassi utilizzata in questa sezione.

Struttura della parte destra

La parte destra è composta da una o più sezioni, separate da virgole, che creano nuove istanze di gruppi ed elementi di ricerca e assegnano valori agli elementi di ricerca:
Crea_gruppo_A,
Crea_elemento_B_e_assegna_valore
Di solito, la parte sinistra della regola individua un token, una sequenza di token o un oggetto nella parte sinistra e lo assegna a una variabile. Quindi, la parte destra può utilizzare questa variabile per scriverne il valore in uno degli elementi di ricerca. Ad esempio, il codice seguente scrive il valore di t nell’elemento di ricerca Element1:

Esempio

[t: "Lease"] ["Agreement"]
=>
Root.kw_AgreementType( t );
Vedi Parte destra per i dettagli sulla sintassi utilizzata in questa sezione. Nota: Il codice crea solo istanze di elementi di ricerca e di elementi di ricerca di gruppo già presenti nell’attività Extraction Rules. Non è possibile creare nuovi elementi di ricerca tramite codice. Per aggiungere ulteriori elementi di ricerca nella struttura, usa la scheda Search Elements nell’Activity Editor.

Riferimento agli elementi di ricerca

Per accedere a un elemento di ricerca nel codice, è necessario usare un nome che lo identifichi in modo univoco. Se un elemento ha un nome univoco, è possibile farvi riferimento semplicemente con quel nome. Se sono presenti più elementi con lo stesso nome, è necessario specificare un percorso sufficientemente lungo da identificare l’elemento.

Esempio

Considera la seguente struttura annidata di elementi di ricerca:
  • Property
    • Type
    • Address
  • Buyer
    • FullName
    • Address
Per fare riferimento al nome dell’acquirente nel codice, puoi semplicemente usare “FullName”, perché l’elemento con questo nome è univoco. “Buyer.FullName” o “Root.Buyer.FullName” funzionano altrettanto bene. Per fare riferimento all’indirizzo dell’acquirente, devi aggiungere almeno il nome del gruppo padre, perché ci sono due elementi chiamati “Address”. In questo caso, usa “Buyer.Address” o “Root.Buyer.Address”.

Regole specifiche per lingua

È possibile specificare la lingua del documento per cui eseguire la regola. In questo modo, la regola verrà ignorata per le altre lingue. Anteporre alla regola un cancelletto (#) e il codice della lingua a due lettere (standard ISO 639-1).

Codici delle lingue supportate

LinguaCodice
Ingleseen
Tedescode
Francesefr
Spagnoloes
Italianoit
Portoghese (standard)pt
Giapponeseja
Russoru
Ad esempio, se elabori Document in inglese e in spagnolo, potresti voler usare parole chiave specifiche per lingua:

Esempio

#en
[ t: "Grantor" ] // la parola chiave per i documenti in inglese
=>
kw_landlord( t );

#es
[ t: "Arrendador" ] // la parola chiave per i documenti in spagnolo
=>
kw_landlord( t );