converters
Class QueryProcessor

java.lang.Object
  extended by converters.QueryProcessor

public class QueryProcessor
extends java.lang.Object

This class is part of the YAGO converters (http://mpii.de/yago). It is licensed under the Creative Commons Attribution License (http://creativecommons.org/licenses/by/3.0) by the YAGO team (http://mpii.de/yago). If you use this class for scientific purposes, please cite our paper Fabian M. Suchanek, Gjergji Kasneci and Gerhard Weikum "Yago - A Core of Semantic Knowledge" (WWW 2007) This class implements a simple query processor for reification graphs as described in the Yago journal paper.

Author:
Fabian M. Suchanek

Nested Class Summary
static class QueryProcessor.Column
          Elements of a fact
static class QueryProcessor.InvalidTripleException
          Thrown for problems in a triple
static class QueryProcessor.SQLCommand
          Represents an sql command plus a sequence of variables
static class QueryProcessor.Template
          Represents a query template
 
Field Summary
 int MAXSQLRES
          maximal elements of an SQL query to retrieve
static int varCounter
          Counts fresh variables
 
Constructor Summary
QueryProcessor()
           
 
Method Summary
static void addCondition(java.util.Collection<java.lang.String[]> conditions, java.lang.String arg1, java.lang.String arg2)
          Adds "arg1=arg2" to a collection of conditions
static void addSqlCondition(QueryProcessor.Template template, int table, java.util.Map<java.lang.String,java.lang.String> variables, java.util.Collection<java.lang.String[]> conditions)
          Adds a condition of the form "x=y" for a fact template
static boolean checkVirtual(java.util.List<QueryProcessor.Template> templates, java.util.Map<java.lang.String,java.lang.String> variables)
          Checks the virtual relations in an answer
static java.lang.String eatArg(java.lang.String template, int[] len, boolean tabSeparated)
          Eats an argument from a query line
static java.lang.String eatId(java.lang.String template, int[] len)
          Eats an id from a query line (or returns a fresh variable)
static java.lang.String eatRelation(java.lang.String template, int[] len, boolean tabSeparated)
          Eats a relation from a query line
static void fromIniFile(java.io.File initFile)
          reads the yago.ini file
static boolean isSilentVariable(java.lang.String s)
          Tells whether a string starts with "?
static boolean isVariable(java.lang.String s)
          Tells whether a string starts with "?"
static void main(java.lang.String[] args)
           
static java.lang.String newSilentVariable(java.lang.String name)
          returns a new silent variable
static java.lang.String newVariable(java.lang.String name)
          returns a variable with the given name
static java.lang.String normalizeRelation(java.lang.String relationName)
          Normalizes a relation name
static void parseLine(java.util.List<QueryProcessor.Template> result, java.lang.String line)
          Adds templates to a list for a query line
static void query()
          Tests the Reification Query processor
static void requestInformation()
          request information instead of using yago.ini file
static void resolveMeans(java.util.List<QueryProcessor.Template> templates)
          Resolves MEANS and adds quotation marks where necessary
 javatools.datatypes.PeekIterator<java.util.Map<java.lang.String,java.lang.String>> solutions(java.util.List<QueryProcessor.Template> templates, javatools.database.Database db)
          Iterates over variable bindings for a list of templates
 java.util.Set<java.util.Map<java.lang.String,java.lang.String>> solutions(java.util.List<QueryProcessor.Template> templates, javatools.database.Database db, int n)
          Returns up to n solutions for a query
 java.util.Iterator<java.util.Map<java.lang.String,java.lang.String>> solutions(java.lang.String[][] queryLines, javatools.database.Database db)
          Returns the solutions for a query
 java.util.Set<java.util.Map<java.lang.String,java.lang.String>> solutions(java.lang.String[][] queryLines, javatools.database.Database db, int n)
          Returns up to n solutions for a query
 java.util.Iterator<java.util.Map<java.lang.String,java.lang.String>> solutions(java.lang.String query, javatools.database.Database db)
          Returns the solutions for a query
 java.util.Set<java.util.Map<java.lang.String,java.lang.String>> solutions(java.lang.String query, javatools.database.Database db, int n)
          Returns up to n solutions for a query
 QueryProcessor.SQLCommand sqlFor(java.util.List<QueryProcessor.Template> templates, javatools.database.Database db)
          Returns an sqlcommand for a list of templates
static java.lang.String sqlIdentifier(java.lang.String entity, java.util.Map<java.lang.String,java.lang.String> variables, int table, QueryProcessor.Column column)
          Returns e.g.
static java.util.List<QueryProcessor.Template> templatesFor(java.lang.String input)
          Returns templates for a query
static java.util.List<QueryProcessor.Template> templatesFor(java.lang.String[][] queryLines)
          returns templates for a list of 3-element query lines with implict ids ?
static java.lang.String variableValue(java.lang.String variableName, java.util.Map<java.lang.String,java.lang.String> variableValues)
          Resolves a variable with respect to a mapping or returns the name itself
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAXSQLRES

public final int MAXSQLRES
maximal elements of an SQL query to retrieve

See Also:
Constant Field Values

varCounter

public static int varCounter
Counts fresh variables

Constructor Detail

QueryProcessor

public QueryProcessor()
Method Detail

normalizeRelation

public static java.lang.String normalizeRelation(java.lang.String relationName)
                                          throws QueryProcessor.InvalidTripleException
Normalizes a relation name

Throws:
QueryProcessor.InvalidTripleException

isVariable

public static boolean isVariable(java.lang.String s)
Tells whether a string starts with "?"


isSilentVariable

public static boolean isSilentVariable(java.lang.String s)
Tells whether a string starts with "?@"


newSilentVariable

public static java.lang.String newSilentVariable(java.lang.String name)
returns a new silent variable


newVariable

public static java.lang.String newVariable(java.lang.String name)
returns a variable with the given name


variableValue

public static java.lang.String variableValue(java.lang.String variableName,
                                             java.util.Map<java.lang.String,java.lang.String> variableValues)
Resolves a variable with respect to a mapping or returns the name itself


sqlIdentifier

public static java.lang.String sqlIdentifier(java.lang.String entity,
                                             java.util.Map<java.lang.String,java.lang.String> variables,
                                             int table,
                                             QueryProcessor.Column column)
Returns e.g. "facts0.arg1" for a variable


addCondition

public static void addCondition(java.util.Collection<java.lang.String[]> conditions,
                                java.lang.String arg1,
                                java.lang.String arg2)
Adds "arg1=arg2" to a collection of conditions


addSqlCondition

public static void addSqlCondition(QueryProcessor.Template template,
                                   int table,
                                   java.util.Map<java.lang.String,java.lang.String> variables,
                                   java.util.Collection<java.lang.String[]> conditions)
Adds a condition of the form "x=y" for a fact template


sqlFor

public QueryProcessor.SQLCommand sqlFor(java.util.List<QueryProcessor.Template> templates,
                                        javatools.database.Database db)
                                 throws QueryProcessor.InvalidTripleException
Returns an sqlcommand for a list of templates

Throws:
QueryProcessor.InvalidTripleException

eatId

public static java.lang.String eatId(java.lang.String template,
                                     int[] len)
Eats an id from a query line (or returns a fresh variable)


eatArg

public static java.lang.String eatArg(java.lang.String template,
                                      int[] len,
                                      boolean tabSeparated)
Eats an argument from a query line


eatRelation

public static java.lang.String eatRelation(java.lang.String template,
                                           int[] len,
                                           boolean tabSeparated)
Eats a relation from a query line


parseLine

public static void parseLine(java.util.List<QueryProcessor.Template> result,
                             java.lang.String line)
                      throws QueryProcessor.InvalidTripleException
Adds templates to a list for a query line

Throws:
QueryProcessor.InvalidTripleException

resolveMeans

public static void resolveMeans(java.util.List<QueryProcessor.Template> templates)
Resolves MEANS and adds quotation marks where necessary


templatesFor

public static java.util.List<QueryProcessor.Template> templatesFor(java.lang.String input)
                                                            throws QueryProcessor.InvalidTripleException
Returns templates for a query

Throws:
QueryProcessor.InvalidTripleException

templatesFor

public static java.util.List<QueryProcessor.Template> templatesFor(java.lang.String[][] queryLines)
                                                            throws QueryProcessor.InvalidTripleException
returns templates for a list of 3-element query lines with implict ids ?id0, ?id1, ?id2,...

Throws:
QueryProcessor.InvalidTripleException

checkVirtual

public static boolean checkVirtual(java.util.List<QueryProcessor.Template> templates,
                                   java.util.Map<java.lang.String,java.lang.String> variables)
                            throws QueryProcessor.InvalidTripleException
Checks the virtual relations in an answer

Throws:
QueryProcessor.InvalidTripleException

solutions

public javatools.datatypes.PeekIterator<java.util.Map<java.lang.String,java.lang.String>> solutions(java.util.List<QueryProcessor.Template> templates,
                                                                                                    javatools.database.Database db)
                                                                                             throws QueryProcessor.InvalidTripleException
Iterates over variable bindings for a list of templates

Throws:
QueryProcessor.InvalidTripleException

solutions

public java.util.Set<java.util.Map<java.lang.String,java.lang.String>> solutions(java.util.List<QueryProcessor.Template> templates,
                                                                                 javatools.database.Database db,
                                                                                 int n)
                                                                          throws QueryProcessor.InvalidTripleException
Returns up to n solutions for a query

Throws:
QueryProcessor.InvalidTripleException

solutions

public java.util.Iterator<java.util.Map<java.lang.String,java.lang.String>> solutions(java.lang.String query,
                                                                                      javatools.database.Database db)
                                                                               throws QueryProcessor.InvalidTripleException
Returns the solutions for a query

Throws:
QueryProcessor.InvalidTripleException

solutions

public java.util.Set<java.util.Map<java.lang.String,java.lang.String>> solutions(java.lang.String query,
                                                                                 javatools.database.Database db,
                                                                                 int n)
                                                                          throws QueryProcessor.InvalidTripleException
Returns up to n solutions for a query

Throws:
QueryProcessor.InvalidTripleException

solutions

public java.util.Iterator<java.util.Map<java.lang.String,java.lang.String>> solutions(java.lang.String[][] queryLines,
                                                                                      javatools.database.Database db)
                                                                               throws QueryProcessor.InvalidTripleException
Returns the solutions for a query

Throws:
QueryProcessor.InvalidTripleException

solutions

public java.util.Set<java.util.Map<java.lang.String,java.lang.String>> solutions(java.lang.String[][] queryLines,
                                                                                 javatools.database.Database db,
                                                                                 int n)
                                                                          throws QueryProcessor.InvalidTripleException
Returns up to n solutions for a query

Throws:
QueryProcessor.InvalidTripleException

requestInformation

public static void requestInformation()
                               throws java.lang.Exception
request information instead of using yago.ini file

Throws:
java.lang.Exception

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
Throws:
java.lang.Exception

fromIniFile

public static void fromIniFile(java.io.File initFile)
                        throws java.lang.Exception
reads the yago.ini file

Throws:
java.lang.Exception

query

public static void query()
                  throws java.lang.Exception
Tests the Reification Query processor

Throws:
java.lang.Exception