Anexo A | Anotaciones semánticas del workflow EBI InterProScan El presente anexo extiende la información aportada en el Capítulo 5. Aquí se presentan datos adicionales sobre las anotaciones semánticas del modelo. A.1 Anotaciones El modelo del workflow que analizamos ha sido anotado con datos semánticos y paramétricos. Por razones de espacio, no es posible incluir toda esta información en este anexo. Sin embargo, se presenta un ejemplo de cada tipo de anotación que podemos encontrar en la red. El siguiente bloque muestra un patrón RDF (RDFG) llamado job_params_pattern, asociado al arco de salida de la transición Job_params: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <? xml v e r s i o n ="1.0" e n c o d i n g =" UTF -8"? > < tns : R D F G r a p h P a t t e r n xmlns : tns =" http :// gidhe . es / e d u g o n z a/ X M L S c h e m a/ R D F G PS c h e m a" xmlns : xsi =" http :// www . w3 . org /2001/ XMLSchema - i n s t a n ce" xsi : s c h e m a L o c a t i o n =" http :// gidhe . es / e d u g o n z a/ X M L S c he m a/ R D F G P S c h e m a " > < tns : triple > < tns : s u b j e c t type =" v a r i a b l e" > package </ tns : subject > < tns : p r e d i c a t e type =" uri " > http :// e x a m p l e. org / isA </ tns : predicate > < tns : object type =" uri " > http :// e x a m p l e. org / Package </ tns : object > </ tns : triple > < tns : triple > < tns : s u b j e c t type =" uri " > http :// e x a m p l e. org / GOTERMS </ tns : subject > < tns : p r e d i c a t e type =" uri " > http :// e x a m p l e. org / hasValue </ tns : predicate > < tns : object type =" v a r i a b l e" > goterms </ tns : object > </ tns : triple > < tns : triple > < tns : s u b j e c t type =" uri " > http :// e x a m p l e. org / ASYNC </ tns : subject > < tns : p r e d i c a t e type =" uri " > http :// e x a m p l e. org / hasValue </ tns : predicate > < tns : object type =" v a r i a b l e" > async </ tns : object > </ tns : triple > < tns : triple > < tns : s u b j e c t type =" uri " > http :// e x a m p l e. org / CRC </ tns : subject > < tns : p r e d i c a t e type =" uri " > http :// e x a m p l e. org / hasValue </ tns : predicate > < tns : object type =" v a r i a b l e" > crc </ tns : object > </ tns : triple > < tns : triple > < tns : s u b j e c t type =" uri " > http :// e x a m p l e. org / SEQTYPE </ tns : subject > 37 Eduardo González López de Murillas 28 29 30 31 32 33 34 35 36 < tns : p r e d i c a t e type =" uri " > http :// e x a m p l e. org / hasValue </ tns : predicate > < tns : object type =" v a r i a b l e" > seqtype </ tns : object > </ tns : triple > < tns : triple > < tns : s u b j e c t type =" uri " > http :// e x a m p l e. org / EMAIL </ tns : subject > < tns : p r e d i c a t e type =" uri " > http :// e x a m p l e. org / hasValue </ tns : predicate > < tns : object type =" v a r i a b l e" > email </ tns : object > </ tns : triple > </ tns : R D F G r a p h Pa tter n > Este código corresponde a la anotación en formato XML. Por claridad, una representación más compacta del mismo patrón sería: ?package t:isA t:Package . t:GOTERMS t:hasValue ?goterms . t:ASYNC t:hasValue ?async . t:CRC t:hasValue ?crc . t:SEQTYPE t:hasValue ?seqtype . t:EMAIL t:hasValue ?email El símbolo ? representa que el identificador siguiente se refiere a una variable. Así vemos que, en la primera tripleta, aparece la variable package. Esta variable representa un valor que aún no ha sido determinado, pero que lo estará cuando se realice el binding. Lo mismo ocurre con el resto de variables goterms, async, crc, seqtype y email. Así vemos que este patrón captará un grafo RDF que contenga, al menos, seis tripletas que coincidan con el patrón propuesto. También podemos encontrar grafos RDF (RDFG), que corresponden al marcado en los lugares de la red. Un ejemplo de dichas anotaciones podría ser el correspondiente al marcado en el lugar goterms_default, que se presenta en el siguiente bloque: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <? xml v e r s i o n ="1.0" e n c o d i n g =" UTF -8"? > < tns : R D F G r a p h xmlns : tns =" http :// gidhe . es / e d u g o n z a/ X M L S c h e m a / R D F G Sc h e m a " xmlns : xsi =" http :// www . w3 . org /2001/ XMLSchema - i n s t a n ce" xsi : s c h e m a L o c a t i o n =" http :// gidhe . es / e d u g o n z a/ X M L S c he m a/ R D F G S c h e m a" > < tns : triple > < tns : s u b j e c t type =" uri " > http :// e x a m p l e. org / Package01 </ tns : subject > < tns : p r e d i c a t e type =" uri " > http :// e x a m p l e. org / isA </ tns : predicate > < tns : object type =" uri " > http :// e x a m p l e. org / Package </ tns : object > </ tns : triple > < tns : triple > < tns : s u b j e c t type =" uri " > http :// e x a m p l e. org / GOTERMS </ tns : subject > < tns : p r e d i c a t e type =" uri " > http :// e x a m p l e. org / hasValue </ tns : predicate > < tns : object type =" bnode " > goterms </ tns : object > </ tns : triple > </ tns : RDFGraph > Esto se puede resumir, de forma compacta en: t:Package01 t:isA t:Package . t:GOTERMS t:hasValue _:goterms En esta anotación, como se puede observar, se hace uso de Blank nodes, que representan parámetros que se tratarán con el SMT solver. El tipo de cada parámetro se define en el fichero parameters.smt2 en formato SMT-Lib v2: 38 Anexo A. Anotaciones semánticas del workflow EBI InterProScan 1 2 3 4 5 6 7 8 9 ( declare - fun ( declare - fun ( declare - fun ( declare - fun ( declare - fun ( declare - fun ( declare - fun ( declare - fun ( declare - fun text () Bool ) xml () Bool ) g o t e r m s () Int ) async () Int ) crc () Int ) s e q t y p e () Int ) email () Int ) s e q u e n c e () Int ) i n p u t _ d a t a t y p e () Int ) Otro tipo de anotaciones que podemos encontrar en la red son las guardas paramétricas en las transiciones. El siguiente bloque muestra un ejemplo, correspondiente a la transición get_XML_Result : 1 2 (= $xml$ true ) (= $ s t a t u s $ true ) Esto quiere decir que la transición se disparará si no existe una contradicción entre las declaraciones paramétricas existentes en el estado de partida, y las declaraciones que establecen que el valor de la variable xml es true y el de status es true también. Respecto a las consultas CTL que se realizan sobre el ejemplo, vamos a fijarnos en la correspondiente a la fórmula: EF (RDF GT ext_Result ∨ RDF GGF F _Result ∨ RDF GXML_Result ∨ RDF GStatus ∨ RDF GJob_ID ). Cuando creamos esta fórmula en el editor Web, se genera un fichero XML cuyo contenido es el siguiente: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <? xml v e r s i o n ="1.0" e n c o d i n g =" UTF -8"? > < tns : CTL - F o r m u l a xmlns : tns =" http :// gidhe . es / e d u g o n z a/ X M L S c h e m a/ F o r m ul a S c h e m a " xmlns : tns2 =" http :// gidhe . es / e d u g o n z a/ X M L S c h e m a/ R D F GS c h e m a" xmlns : tns3 =" http :// gidhe . es / e d u g o n z a/ X M L S c h e m a/ R D F GP S c h e m a" > < tns : Mono value =" ef " > < tns : Dual value =" or " > < tns : leftFormula > < tns : Dual value =" or " > < tns : leftFormula > < tns : Dual value =" or " > < tns : leftFormula > < tns : Dual value =" or " > < tns : leftFormula > < tns : Literal > < tns : rdfg i n P l a c e =" n e t I d 1 3 3 7 4 5 8 1 0 5 5 6 5 _ n o d e _ 1 6 0 9 " > </ tns : rdfg > </ tns : Literal > </ tns : leftFormula > < tns : rightFormula > < tns : Literal > < tns : rdfg i n P l a c e =" n e t I d 1 3 3 7 4 5 8 1 0 5 5 6 5 _ n o d e _ 1 6 0 5 " > </ tns : rdfg > </ tns : Literal > </ tns : rightFormula > </ tns : Dual > </ tns : leftFormula > < tns : rightFormula > < tns : Literal > < tns : rdfg i n P l a c e =" n e t I d 1 3 3 7 4 5 8 1 0 5 5 6 5 _ n o d e _ 1 6 0 7 " > 39 Eduardo González López de Murillas 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 </ tns : rdfg > </ tns : Literal > </ tns : rightFormula > </ tns : Dual > </ tns : leftFormula > < tns : rightFormula > < tns : Literal > < tns : rdfg i n P l a c e =" n e t I d 1 3 3 7 4 5 8 1 0 5 5 6 5 _ n o d e _ 1 5 9 5 " > </ tns : rdfg > </ tns : Literal > </ tns : rightFormula > </ tns : Dual > </ tns : leftFormula > < tns : rightFormula > < tns : Literal > < tns : rdfg i n P l a c e =" n e t I d 1 3 3 7 4 5 8 1 0 5 5 6 5 _ n o d e _ 1 6 1 5 " > </ tns : rdfg > </ tns : Literal > </ tns : rightFormula > </ tns : Dual > </ tns : Mono > </ tns : CTL - Formula > 40