SDA SE Wiki

Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering

User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
research:pdt:connector:example [2015/09/09 19:47]
Günter Kniesel
research:pdt:connector:example [2018/05/09 01:59] (current)
Line 1: Line 1:
 +
 +====== "Hello World" Example ======
 +
 +<note important>​
 +
 +Before trying the following example, make sure that you installed the [[library|PDT connector library]] and included it into your Java class path.
 +</​note>​
 +
 +<Code lang-java>​
 +package org.cs3.prolog.connector.example;​
 +
 +import java.util.List;​
 +import java.util.Map;​
 +
 +import org.cs3.prolog.connector.Connector;​
 +import org.cs3.prolog.connector.common.QueryUtils;​
 +import org.cs3.prolog.connector.process.PrologProcess;​
 +import org.cs3.prolog.connector.process.PrologProcessException;​
 +
 +public class ConnectorDemo {
 +
 +    public static void main(String[] args) {
 +        // get prolog process ... will be created if it doesn'​t already exist
 +        try {
 +            PrologProcess process = Connector.newPrologProcess();​
 +
 +            // fill the factbase
 +            fillFactbaseWithDemoData(process);​
 +
 +            // create query with the buildTerm method
 +            // this is the same as "​father_of(Father,​ peter)"​
 +            String query = QueryUtils.bT("​father_of",​ "​Father",​ "​peter"​);​
 +            // get the first result of the query (ignore other results if there
 +            // are any)
 +            Map<​String,​ Object> result = process.queryOnce(query);​
 +            if (result == null) {
 +                // if the result is null, the query failed (no results)
 +                System.out.println("​peter has no father"​);​
 +            } else {
 +                // if the query succeeds, the resulting map contains mappings
 +                // from variable name to the binding
 +                System.out.println(result.get("​Father"​) + " is the father of peter"​);​
 +            }
 +
 +            // create another query: father_of(john,​ Child)
 +            query = QueryUtils.bT("​father_of",​ "​john",​ "​Child"​);​
 +            // get ALL results of the query as a list
 +            // every element in this list is one result
 +            // if the query fails, the list will be empty (but it won't be null)
 +            List<​Map<​String,​ Object>>​ results = process.queryAll(query);​
 +            for (Map<​String,​ Object> r : results) {
 +                // iterate over every result
 +                System.out.println(r.get("​Child"​) + " is a child of john"​);​
 +            }
 +        } catch (Exception e) {
 +            e.printStackTrace();​
 +        }
 +    }
 +
 +    private static void fillFactbaseWithDemoData(PrologProcess process) throws PrologProcessException {
 +        // this can be done by asserting facts directly
 +        process.queryOnce("​assertz(father_of(paul,​ peter))"​);​
 +        process.queryOnce("​assertz(father_of(john,​ paul))"​);​
 +        process.queryOnce("​assertz(father_of(john,​ ringo))"​);​
 +        process.queryOnce("​assertz(father_of(john,​ george))"​);​
 +
 +        // or by consulting a file
 +        // String consultQuery = QueryUtils.bT("​reconsult",​ "'​c:/​some_prolog_file.pl'"​);​
 +        // process.queryOnce(consultQuery);​
 +    }
 +}
 +</​Code>​
  
research/pdt/connector/example.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2019