O InterProlog e a Declarativa Miguel Calejo Declarativa http://www.declarativa.com http://www.declarativa.com/cnpl Estrutura da apresentação • InterProlog – Fundamentos – Resumo da funcionalidade • Incursão pelo “mundo real” – XJ, gerador de GUIs sobre InterProlog – A Declarativa e oportunidades part-time Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 2 http://www.declarativa.com/cnpl InterProlog: Java Reflection • All objects know their class: – Class C = X.getClass(); • Since JDK 1.1, classes provide info about public methods and variables – Method M = C.getMethod(“anyMethod”,Class arg array) • No Prolog meta-call, but close – M.invoke(Target,Object arg array) Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 3 http://www.declarativa.com/cnpl InterProlog: Java Serialization • Cleaner than in other languages: Reflection allows a system mechanism to introspect any object and serialize it... • Cf. classes ObjectOutputStream, InputObjectStream • ...oos.writeObject(ANYOBJECT); • Object ANY = ios.readObject(); • ...using a public stream format :) • Writes/reads an object graph, including class descriptions, without repeating objects Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 4 http://www.declarativa.com/cnpl InterProlog architecture Terms Objects A Java application A Prolog application InterProlog classes InterProlog predicates Java VM XSB executable sockets, console redirection Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 5 http://www.declarativa.com/cnpl InterProlog • Java program linked to Prolog program through I/O and object sockets • Java program launches “PrologEngines” • Dynamic Prolog->Java calls with Reflection • Serialized objects are parsed/generated by a Definite Clause Gramnmar Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 6 http://www.declarativa.com/cnpl Programming on the Prolog side • • • • Object specification helpers I think I’m under a console process Handle Java events as top goals javaMessage(Target,Message(Args)) – EX: javaMessage(‘java.lang.System’out,println(string(‘hello, world’))). – Wide open API, as far as Java security allows – Variations handle exceptions, return value Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 7 http://www.declarativa.com/cnpl Programming on the Java side • • • • One PrologEngine <-> One XSB subprocess isAvailable() sendAndFlush(String s) Object[] deterministicGoal( String G, String Ovars, Object[] objectsP, String RVars ) • registerJavaObject(Object x) • interrupt(), shutdown() Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 8 http://www.declarativa.com/cnpl InterProlog Term displayers • browseList([one(X),two(Y),1+1+1,X/Y]). • browseLiteralInstances(foo('First','Last'), [foo('Miguel','Calejo'),foo('Terry','Swift'),foo('David','Warren'),foo('Robert','Pokorn y')]). • browseTreeTerm(t(root,[t(child1,[]),t(child2,[]),t(child3,[t(granchild31,[t(grandgr andchild311,[])])])])). Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 9 http://www.declarativa.com/cnpl XJ - declarative GUI construction • Vision – GUI deduced from logic program + annotations • Application development with XJ – Prolog program is developed, ignoring GUI issues – GUI Term declarations added – Additional Java classes may be added for specifics • Developed for XSB, Inc. over InterProlog to support DLA and other applications Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 10 http://www.declarativa.com/cnpl XJ example: term annotations alloy_shape( 'STEEL'( alloy('852') ), 'MOLD CASTING’ ). labels(alloy_shape/2,'Alloy shape'('Alloy','Shape')). guiTerm(alloy_shape(_M,_S), gt(_,[],[gt(_,[operation(XXX,sisa('OBJECT',XXX),'Show in Ontology'), biGuiLink(X1,sub(X1,_),isa(X1,'METAL')) ], [gt(alloy,[constant], [gt(_,[atomUPPER,minSize=3,maxSize=10,typicalSize=8,name='Name'],[]) ]) ]), gt(_,[atomUPPER,typicalSize=15, biGuiLink(X2,sub(X2,_),isa(X2,'CASTING'))],[]) ])). Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 11 http://www.declarativa.com/cnpl XJ example: derived GUI • editList(alloy_shape(_,_)). Navigation to other windows For list Inplace editing w/ basic type checking Double-click Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 For term 12 http://www.declarativa.com/cnpl XJ - another example • editList(spec_attr(S,_,_), (name(S,Chars),append("AMS 40",_,Chars)), _). Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 13 http://www.declarativa.com/cnpl Declarativa • 10 meses de idade, 5 pessoas • 3 licenciados e 1 doutorado em Informática – 1 Prémio IBM, 3 Prémios Microsoft, médias >= 14 • Contratos em curso com DoD/XSB Inc. (USA); ME, CVRVV, Servisoft (Portugal) • Abordagem declarativa :-) – WAM (SQL Server+JavaScript) – InterProlog/XJ (Prolog+Java) Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 14 http://www.declarativa.com/cnpl Declarativa - WAM • Web Application Maker – Model-driven, centralizado no MS SQL Server • “Disruptive technology”; com um só click: – Dada uma boa BD com stored procedures, etc... – E algumas anotações de interface... – ...obtém aplicação p/ WWW (browsers) sobre intranet/extranet com perfis de utilizador, etc. • http://www.declarativa.com/wam Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 15 http://www.declarativa.com/cnpl Oportunidades na Declarativa - I • InterProlog – Documentação – Integração de frameworks Java • Grafos, edição de diagramas com restrições, edição de texto orientada a sintaxe, agentes distribuídos – Evolução do InterProlog e do XJ Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 16 http://www.declarativa.com/cnpl Oportunidades na Declarativa - II • Evolução do WAM – Algoritmos (Java/Prolog/Transact-SQL...) transformando modelos em SQL-Server – Uso de informação linguistica, reconhecimento de padrões de análise – Runtime alternativo com GUI Java/Swing • Programação de aplicações WAM – Microsoft SQL Server (Transact-SQL) – Active Server Pages (JavaScript) Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 17 http://www.declarativa.com/cnpl Conclusão • InterProlog, XJ; WAM • Declarativa procura neurónios remotos ou locais para colaboração – – – – Tarefas curtas Trabalhos práticos numa disciplina Projectos de férias de verão Projectos de licenciatura • [email protected] Apresentação no 4º CNPL, 6-4-2001 Copyright Declarativa 2001 18