Buscar en Ghini

Buscar le permite ver, navegar y crear informes a partir de los datos. Puede realizar búsquedas introduciendo las consultas en el formato principal de búsqueda o utilizando el generador de consultas para que cree las consultas para usted. Los resultados de las búsquedas de Ghini se enumeran en la ventana principal.

Estrategias de Búsqueda

Ghini ofrece cuatro estrategias de búsqueda distinctas:

  • por valor — implícitamente en todos dominios;
  • por expresión — en unos campos implícitos de un dominio explícito;
  • por query — en un sólo dominio;
  • por nombre binomial — busca solo el dominio Especies.

Todas estrategias de búsqueda, con la notable excepción de la búsqueda del nombre binomial: son minúsculas.

Búsqueda por valor

Búsqueda por valor es la forma más sencilla de búsqueda. Ingrese una o más cadenas y ver qué partidos. El resultado incluye objetos de cualquier tipo (dominio) donde una o más de sus campos contienen uno o más de las cadenas de búsqueda.

No se especifica el dominio de búsqueda, todos están incluidos, ni indica los campos que desea, esto está implícito en el dominio de búsqueda.

La siguiente tabla ayuda a entender los resultados y te guía en la formulación de sus búsquedas.

Buscar dominio Resumen
nombre y abreviaturas campo Tipo de resultado
family, fam epithet (family) Family
genus, gen epithet (genus) Genus
species, sp epithet (sp) × Species
vernacular, common, vern nombre Species
geography, geo nombre Geography
accession, acc code Accession
planting, plant code × Plant
location, loc code, name Location
contact, person, org, source nombre Contact
collection, col, coll locale Collection
tag, tags nombre Tag

Ejemplos de búsqueda por valor serían: Maxillaria, Acanth, 2008.1234, 2003.2.1, indica.

A menos que explícitamente citado, espacios separan las cadenas de búsqueda. Por ejemplo, si usted busca “” bloque 10”” luego Ghini buscará las cadenas bloque y 10 y volver todos los resultados que coincidan con cualquiera de estas cadenas. Si desea buscar para bloque de 10 como una cadena entera entonces debe citar a la cadena como «»Block 10»””.

× Claves primarias compuestas

Un epíteto de especie significa poco sin el género correspondiente, asimismo un código de planta es único solamente dentro de la accesión a la que pertenece. En la terminología de la teoría de la base de datos, epíteto y código no son suficientes para formar una clave primaria respectivamente para especies y planta. Estos dominios necesitan una clave primaria compuesta.

Búsqueda por valor le permite buscar plantas por su código de planta completo, que incluye el código de la accesión. Tomados en conjunto, código de accesión y código de planta forman una clave primaria compuesta para plantas. Para especies, hemos introducido la búsqueda binomial, que se describe a continuación.

Búsqueda por la expresión

Búsqueda con expresión le da un poco más control sobre lo que está buscando. Usted restringe la búsqueda a un dominio específico, el software define los campos de búsqueda dentro del dominio especificado.

Una expresión se construye como <domain> <operator> <value>. Por ejemplo la búsqueda: gen = Maxillaria devuelve todos los géneros que coinciden con el nombre Maxillaria. En este caso el dominio es gen, el operador es = y el valor es Maxillaria.

La tabla resumen búsqueda dominio te dice los nombres de los dominios de búsqueda, y por el dominio de búsqueda, los campos que se buscan.

La cadena de búsqueda loc like block% devolverá todas las ubicaciones cuyo nombre o código comience en «block». En este caso el dominio es loc (una abreviatura para location), el operador es like (esto viene del SQL y permite buscar «fuzzy»), el valor es block%, los campos implícitamente examinados son name y code. El signo de porcentaje es utilizado como comodín por lo que si se busca block% se encontrarán todos los valores que comienzan con block. Si usted busca %10, busca todos los valores que terminan en 10. La cadena %ck%10 busca todos los valores que contienen ck y acaban en 10.

Cuando una consulta toma edades para completar

Dar una consulta, se necesita tiempo para calcular, el resultado contiene injustificadamente muchas entradas. Esto sucede cuando desea utilizar una estrategia, pero las cadenas no forman una expresión válida. En este caso Ghini cae de nuevo a * búsqueda por valor *. Por ejemplo la cadena de búsqueda “” gen lik maxillaria”” buscará la cadenas “” gen””, “” como “” y “” maxillaria””, devolver todo lo que coincida con al menos uno de los tres criterios.

Buscar por consulta

Las consultas «Query» permiten el máximo control de búsqueda. Con consultas usted puede buscar a través de las relaciones, columnas específicas, combinar criterios de búsqueda utilizando operadores booleanos como and, or, not, y sus abreviaciones &&, ||, !, encerrar en paréntesis, y más.

Póngase en contacto con los autores si desea más información, o si usted voluntario para documentar esto más a fondo. Mientras tanto pueden empezar a familiarizarse con la estructura de base de base de datos de Ghini.

_images/ghini-10.svg

la estructura esencial de la base de datos Ghini

Para nombrar algunos ejemplos:

  • plantaciones de la familia Fabaceae en ubicación bloque 10:

    plant WHERE accession.species.genus.family.epithet=Fabaceae AND location.description="Block 10"
    
  • lugares que no contienen plantas:

    location WHERE plants = Empty
    
  • accesiones, asociados a una especie de conocido nombre binomial (p. ej.: Mangifera indica):

    accession WHERE species.genus.epithet=Mangifera AND species.epithet=indica
    
  • accesiones propagó en el año 2016:

    accession WHERE plants.propagations._created BETWEEN |datetime|2016,1,1| AND |datetime|2017,1,1|
    
  • accesiones que modificó en los últimos tres días:

    accession WHERE _last_updated>|datetime|-3|
    

Búsqueda con las consultas requiere algunos conocimientos de la sintaxis un poco y una idea de la extensa estructura de tabla de base de datos de Ghini. Ambos adquieren con la práctica y con la ayuda del generador de consultas.

El generador de consultas

Ghini ofrece un generador de consultas, que le ayuda a construir consultas complejas de búsqueda a través de un punto y haga clic en interfaz. Para abrir el clic Query Builder el | querybuilder | icono a la izquierda de la entrada de búsqueda o seleccione: menuselection: “Herramientas–> generador de consultas” en el menú.

Una ventana aparecerá, que le llevará a través de todos los pasos necesarios para construir una consulta correcta que se entiende por estrategia de búsqueda de consulta de Ghini.

_images/qb-choose_domain.png
_images/qb-choose_property.png

En primer lugar indica el dominio de búsqueda, esto permitirá que el generador de consultas completo su interfaz gráfica de usuario, luego añades tantas cláusulas lógicas como usted necesita, conectándolas con una “” y “” o “” o “” operador binario.

Cada apartado está formado por tres partes: una propiedad que se puede llegar desde el inicial dominio de búsqueda, un operador de comparación que seleccione de la lista desplegable, un valor que puede escribir o seleccionar de la lista de valores válidos para el campo.

Agregar muchos buscar propiedades como usted necesita, haciendo clic en el signo más. Seleccione o próximo al nombre de propiedad para elegir cómo se combinarán las cláusulas en la consulta de búsqueda.

Cuando haya terminado de construir la consulta haga clic en Aceptar para realizar la búsqueda.

En este momento el generador de consultas escribe la consulta en el campo de búsqueda y la ejecuta. Ahora puedes editar la secuencia como si hubiera escrito usted mismo. Observe cómo los valores de lado de mano derecha son interpretados por el generador de consultas y encerrados en comillas simples si los reconoce como cadenas, dejados como están si se ven como números ó son uno de los dos textos reservados None o Empty. Usted puede editar la consulta e insertar comillas si necesita, por ejemplo, si usted necesita buscar literalmente la cadena Empty.

None es el valor de un campo vacío. No es lo mismo que la cadena larga cero '' ni el numérico 0 ni el boolean False ni el set Empty: None indica que el campo no tiene valor en absoluto.

Empty es el conjunto vacío. Siendo un conjunto, puede ser comparado con otros conjuntos (por ejemplo: todas plantas de una accesión o todas accesiones de una especie), no con elementos (por ejemplo: cantidad de una planta, que es un número, o una descripción de un lugar, que es un texto). Sin embargo, el generador de consultas no le permite elegir un valor de lado de mano izquierda en un conjunto, sino que espera la selección de un campo. Escoja cualquier campo: en el momento de producción de la consulta, cuando el generador de consultas se encuentra con una cláusula con valor de lado de mano derecha el literal Empty, el nombre del campo es ignorado y le permite comparar el conjunto de la izquierda con el Empty de la derecha.

No tenemos literales False y True. Estos son valores con tipo, y el generador de consultas no sabe cómo producirlos. En lugar de False escriba 0 y en lugar de True escriba 1.

Gramática de consulta

Para los que no temen un poco de precisión formal, el código siguiente BNF te da una idea bastante precisa de la gramática aplicada la estrategia de búsqueda de la consulta. Informalmente se definen algunas categorías gramaticales; cualquier falta que quedan a su fértil imaginación; los literales se incluyen comillas simples; la gramática es sobre todo mayúsculas y minúsculas, a menos que se indique lo contrario:

query ::= domain 'WHERE' expression

domain ::= #( one of our search domains )
expression ::= signed_clause
             | signed_clause 'AND' expression
             | signed_clause 'OR' expression
             ;
signed_clause ::= clause
                | 'NOT' clause  #( not available in Query Builder)
                ;
clause ::= field_name binop value  #( available in Query Builder)
         | field_name set_binop value_list
         | aggregated binop value
         | field_name 'BETWEEN' value 'AND' value
         | '(' expression ')'
         ;
field_name ::= #( path to reach a database field or connected table )
aggregated ::= aggregating_func '(' field_name ')'
aggregating_func ::= 'SUM'
                   | 'MIN'
                   | 'MAX'
                   | 'COUNT'
                   ;
value ::= typed_value
        | numeric_value
        | none_token
        | empty_token
        | string_value
        ;
typed_value ::= '|' type_name '|' value_list '|'
numeric_value ::== #( just a number )
none_token ::= 'None'    #( case sensitive )
empty_token ::= 'Empty'  #( case sensitive )
string_value = quoted_string | unquoted_string

type_name ::= 'datetime' | 'bool' ;  #( only ones for the time being )
quoted_string ::= '"' unquoted_string '"'
unquoted_string ::=  #( alphanumeric and more )

value_list ::= value ',' value_list
             | value
             ;
binop ::= '='
        | '=='
        | '!='
        | '<>'
        | '<'
        | '<='
        | '>'
        | '>='
        | 'LIKE'
        | 'CONTAINS'
        ;
set_binop ::= 'IN'

Tenga en cuenta que el lenguaje de consulta de Ghini es bastante un poco más complejo que lo que puede producir el generador de consultas: las consultas se pueden construir con el generador de consultas forman un subconjunto apropiado de consulta reconocido por el software:

query ::= domain 'WHERE' expression

domain ::= #( one of our search domains )
expression ::= clause
             | clause 'AND' expression
             | clause 'OR' expression
             ;
clause ::= field_name binop value
         ;
field_name ::= #( path to reach a database field or connected table )
value ::= numeric_value
        | string_value
        ;
numeric_value ::== #( just a number )
string_value = quoted_string | unquoted_string ;

quoted_string ::= '"' unquoted_string '"'
unquoted_string ::=  #( alphanumeric and more )

binop ::= '='
        | '=='
        | '!='
        | '<>'
        | '<'
        | '<='
        | '>'
        | '>='
        | 'LIKE'
        | 'CONTAINS'
        ;