package Ġbackend . reason ing ĊĊ Ċ import Ġbackend . knowledge . Ontology Ċ import Ġbackend . models . Concept Ċ import Ġbackend . models . Weighted Sy mptom Ċ import Ġbackend . util . to Human Readable Ċ import Ġorg . apache . jena . query . Query Solution ĊĊ Ċ class ĠLogic Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Weighted Sy mptoms (): ĠList < Weighted Sy mptom > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠQueries . get W ights For Sy mptoms () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRunner . run ( Ontology . model , Ġquery ) Ġ{ Ġresults Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġa Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrip le ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa . get (" sign Or Sy mptom "). as Resource (). local Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa . get (" total D ise ases "). as Literal (). value Ġas ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa . get (" total Is Sign Of "). as Literal (). value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( a , Ġb , Ġc ) Ġ-> ĠWeight ed Sy mptom ( a , Ġb , Ġc ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsy mptoms For D isease ( d isease : ĠString ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠQueries . sy mptoms For D isease ( d isease ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRunner . run ( Ontology . model , Ġquery ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġa Ġ-> Ġa . get (" sy mptom "). as Resource (). local Name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdise ases From Sy mptoms And Inter ventions ( sy mptoms : ĠList < String >, Ġinter ventions : ĠList < String >): ĠList < Concept > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsy mptom Query Ġ= ĠQueries . get D ise ases For Sy mptoms ( sy mptoms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinter vention Query Ġ= ĠQueries . get D ise ases For Inter ventions ( inter ventions ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġresult To Concept ( item : ĠQuery Solution ): ĠConcept Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . get (" d isease "). as Resource (). local Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġitem . get (" description "). as Literal (). string ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisplay Ġ= Ġid . split ("- "). last (). to Human Readable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠConcept ( id , Ġdisplay , Ġcomment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist 1 Ġ= ĠRunner . run ( Ontology . model , Ġsy mptom Query ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġitem Ġ-> Ġresult To Concept ( item ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist 2 Ġ= ĠRunner . run ( Ontology . model , Ġinter vention Query ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġitem Ġ-> Ġresult To Concept ( item ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( list 1 Ġ+ Ġlist 2 ). distinct () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġsigns And Sy mptoms ( d isease : ĠString ? Ġ= Ġnull ): ĠList < Concept > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( d isease Ġ!= Ġnull ) ĠQueries . get Sign s And Sy mptoms Of D isease ( d isease ) Ġelse ĠQueries . getAll Sign s And Sy mptoms () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRunner . run ( Ontology . model , Ġquery ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . iterator (). as Sequence (). map Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . get (" sign Or Sy mptom "). as Resource (). local Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġitem . get (" description ") ?. as Literal ()?. string ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisplay Ġ= Ġid . split ("- "). last (). to Human Readable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConcept ( id , Ġdisplay , Ġcomment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġinter ventions ( d isease : ĠString ? Ġ= Ġnull ): ĠList < Concept > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( d isease Ġ!= Ġnull ) ĠQueries . get Inter vention Plans For D isease ( d isease ) Ġelse ĠQueries . getAll Inter ventions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRunner . run ( Ontology . model , Ġquery ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . iterator (). as Sequence (). map Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . get (" inter vention "). as Resource (). local Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġitem . get (" description ") ?. as Literal ()?. string ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisplay Ġ= Ġid . split ("- "). last (). to Human Readable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConcept ( id , Ġdisplay , Ġcomment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdise ases (): ĠList < Concept > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠQueries . getAll D ise ases () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRunner . run ( Ontology . model , Ġquery ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . iterator (). as Sequence (). map Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . get (" d isease "). as Resource (). local Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġitem . get (" description "). as Literal (). string ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisplay Ġ= Ġid . split ("- "). last (). to Human Readable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConcept ( id , Ġdisplay , Ġcomment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ