(mapclass http://www.w3.org/2002/07/owl#Thing) (defrule startup "Regra inicial" => (printout t "------------------" crlf) (printout t "Qual Seu sexo?" crlf) (printout t "(0- Masculino)(1- Feminino)" crlf) (assert (listaSexo 0 "Masculino")) (assert (listaSexo 1 "Feminino")) (bind ?a (read)) (printout t "Qual Sua Faixa Etaria?" crlf) (printout t "(0- Bebe)(1- Crianca)(2- Adolescente)(3- Adulto)(4- Idoso)" crlf) (assert (listaEtaria 0 "Bebe")) (assert (listaEtaria 1 "Crianca")) (assert (listaEtaria 2 "Adolescente")) (assert (listaEtaria 3 "Adulto")) (assert (listaEtaria 4 "Idoso")) (bind ?b (read)) (printout t "Qual dos sintomas abaixos voce possui?" crlf) (printout t "1- Queda de cabelo" crlf) (printout t "2- Manchas" crlf) (printout t "3- Vermelhidao" crlf) (printout t "4- Odor Fetido " crlf) (printout t "5- Coceira" crlf) (printout t "6- Febre" crlf) (printout t "7- Lesoes" crlf) (printout t "8- Ressecamento" crlf) (assert (listaSintoma 1 "Queda de cabelo")) (assert (listaSintoma 2 "Manchas")) (assert (listaSintoma 3 "Vermelhidao")) (assert (listaSintoma 4 "Odor Fetido")) (assert (listaSintoma 5 "Coceira")) (assert (listaSintoma 6 "Febre")) (assert (listaSintoma 7 "Lesoes")) (assert (listaSintoma 8 "Ressecamento")) (bind ?c (read)) (assert (opcao ?a ?b ?c)) ) (defrule opcao (listaSexo ?a ?sexo) (listaEtaria ?b ?fEtaria) (listaSintoma ?c ?sintoma) (opcao ?a ?b ?c) => (assert (sexo ?sexo)) (assert (faixaEtaria ?fEtaria)) (assert (sintomaInicial ?sintoma)) (assert (listaSintomas ?sintoma)) ) (defrule imprimir_doencas (object (is-a http://www.owl-ontologies.com/Ontology1252792599.owl#Sintomas) (OBJECT ?d) (http://www.owl-ontologies.com/Ontology1252792599.owl#nome ?nd) (http://www.owl-ontologies.com/Ontology1252792599.owl#eSintomaDe $?s)) => (varrer-doencas ?nd $?s) ) (deffunction varrer-doencas (?nd $?b) (while (> (length$ ?b) 0) then (assert (relacao ?nd (slot-get (nth$ 1 ?b) http://www.owl-ontologies.com/Ontology1252792599.owl#nomePopular))) (bind $?b (rest$ ?b)) ) ) (defrule doenca-parteCorpoI (DoencaAtual ?x) (object (is-a http://www.owl-ontologies.com/Ontology1252792599.owl#Doenca) (OBJECT ?d) (http://www.owl-ontologies.com/Ontology1252792599.owl#nomePopular ?x) (http://www.owl-ontologies.com/Ontology1252792599.owl#atingeParteDoCorpo $?s) ) => (while (> (length$ ?s) 0) then (assert (PossivelParteDoCorpo (slot-get (nth$ 1 ?s) http://www.owl-ontologies.com/Ontology1252792599.owl#toString ))) (bind $?s (rest$ ?s)) ) (retract-string "(apagarTudo)") ) (defrule doenca-parteCorpoII (PossivelParteDoCorpo ?x) => (printout t ?x " foi atingido(a)? (1- Sim/0- Nao)" crlf) (bind ?c (read)) (assert (ResultadoCorpo ?x ?c)) (retract-string (str-cat "(PossivelParteDoCorpo \"" ?x "\")")) ) (defrule doenca-parteCorpoIV (ResultadoCorpo ?t 1) (DoencaAtual ?x) (not(PossivelParteDoCorpo ?j)) => (printout t "Provavelmente você tem " ?x crlf) (assert (DoencaTratamento ?x)) (retract-string (str-cat "(DoencaAtual \"" ?x "\")")) (assert (apagarTudo)) ) (defrule doenca-parteCorpoIII (ResultadoCorpo ?p ?q) (DoencaAtual ?x) (not(ResultadoCorpo ?t 1)) (not(PossivelParteDoCorpo ?j)) => (printout t "Doenca nao identificada." crlf) (retract-string (str-cat "(DoencaAtual \"" ?x "\")")) (assert (apagarTudo)) ) (defrule final (apagarTudo) (ResultadoCorpo ?a ?b) => (retract-string (str-cat "(ResultadoCorpo \"" ?a"\" " ?b")" )) ) (defrule imprimir_Tratamento (DoencaTratamento ?nd) (object (is-a http://www.owl-ontologies.com/Ontology1252792599.owl#Doenca) (OBJECT ?d) (http://www.owl-ontologies.com/Ontology1252792599.owl#nomePopular ?nd) (http://www.owl-ontologies.com/Ontology1252792599.owl#temTratamento $?s)) => (printout t "A doença " ?nd " possui os seguintes tratamentos:" crlf) (printout t (varrer-tratamento $?s) crlf) (reset) ) (deffunction varrer-tratamento ($?b) (if (> (length$ ?b) 0) then (if (> (length$ ?b) 1) then (return (str-cat (slot-get (nth$ 1 ?b) http://www.owl-ontologies.com/Ontology1252792599.owl#tratamento) ", " (varrer-tratamento (rest$ ?b))) ) else (return (str-cat (slot-get (nth$ 1 ?b) http://www.owl-ontologies.com/Ontology1252792599.owl#tratamento) (varrer-tratamento (rest$ ?b))) ) ) else (return "") ) ) (defrule possiveisDoencas (sintomaInicial ?d) (relacao ?d ?e) => (assert (possiveisDoencas ?e)) (retract-string (str-cat " (relacao \"" ?d "\" " "\""?e"\""")")) (assert (vamo)) (assert (oe)) ) (defrule laure (temSintoma ?a) (relacao ?a ?b) => (retract-string (str-cat " (relacao \"" ?a "\" " "\""?b"\""")")) ) (defrule perguntarDoencas (vamo) (sintomaInicial ?d) (not(relacao ?d ?p)) (possiveisDoencas ?x) (relacao ?b ?x) (not(temSintoma ?b)) (not(naoEhSintoma ?b)) => (retract-string "(ihuuuu)") (printout t "Apresenta " ?b "?(1- Sim/0- Nao)"crlf) (bind ?a (read)) (if(= ?a 0) then (retract-string (str-cat " (possiveisDoencas \"" ?x "\")")) (assert (naoEhSintoma ?b)) else (retract-string (str-cat " (relacao \"" ?b "\" " "\""?x"\""")")) (assert (temSintoma ?b)) ) ) (defrule definirDoenca (possiveisDoencas ?c) (not(relacao ?a ?c)) => (assert (DoencaAtual ?c)) ) (defrule doencaNaoIdentificada (oe) (not(possiveisDoencas ?c)) => (printout t "Deixa de frescura" crlf) ) (defrule excluiDoenca (possiveisDoencas ?a) (naoEhSintoma ?b) (relacao ?a ?b) => (retract-string (str-cat " (possiveisDoencas \"" ?a "\")")) )