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
Download

Apresentação