⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rqlparser.java

📁 这是外国一个开源推理机
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
/* Generated By:JavaCC: Do not edit this line. RqlParser.java */package org.openrdf.sesame.query.rql.parser;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.openrdf.sesame.query.rql.model.And;import org.openrdf.sesame.query.rql.model.ArraySelection;import org.openrdf.sesame.query.rql.model.BooleanConstant;import org.openrdf.sesame.query.rql.model.BooleanQuery;import org.openrdf.sesame.query.rql.model.ClassQuery;import org.openrdf.sesame.query.rql.model.ClassSelector;import org.openrdf.sesame.query.rql.model.ClassVar;import org.openrdf.sesame.query.rql.model.CompareTo;import org.openrdf.sesame.query.rql.model.Constant;import org.openrdf.sesame.query.rql.model.DataPathSelector;import org.openrdf.sesame.query.rql.model.DataQuery;import org.openrdf.sesame.query.rql.model.DataVar;import org.openrdf.sesame.query.rql.model.Domain;import org.openrdf.sesame.query.rql.model.DomainSelector;import org.openrdf.sesame.query.rql.model.Exists;import org.openrdf.sesame.query.rql.model.Forall;import org.openrdf.sesame.query.rql.model.In;import org.openrdf.sesame.query.rql.model.InstanceOf;import org.openrdf.sesame.query.rql.model.InstanceSelector;import org.openrdf.sesame.query.rql.model.IntegerConstant;import org.openrdf.sesame.query.rql.model.Intersect;import org.openrdf.sesame.query.rql.model.Like;import org.openrdf.sesame.query.rql.model.Minus;import org.openrdf.sesame.query.rql.model.Not;import org.openrdf.sesame.query.rql.model.Or;import org.openrdf.sesame.query.rql.model.PropertyQuery;import org.openrdf.sesame.query.rql.model.PropertySelector;import org.openrdf.sesame.query.rql.model.PropertyVar;import org.openrdf.sesame.query.rql.model.Query;import org.openrdf.sesame.query.rql.model.Range;import org.openrdf.sesame.query.rql.model.RangeSelector;import org.openrdf.sesame.query.rql.model.RdfProperty;import org.openrdf.sesame.query.rql.model.RdfsClass;import org.openrdf.sesame.query.rql.model.RealConstant;import org.openrdf.sesame.query.rql.model.ResourceQuery;import org.openrdf.sesame.query.rql.model.SetQuery;import org.openrdf.sesame.query.rql.model.SfwQuery;import org.openrdf.sesame.query.rql.model.StringConstant;import org.openrdf.sesame.query.rql.model.SubClassOf;import org.openrdf.sesame.query.rql.model.SubPropertyOf;import org.openrdf.sesame.query.rql.model.SuperClassOf;import org.openrdf.sesame.query.rql.model.SuperPropertyOf;import org.openrdf.sesame.query.rql.model.TypeOf;import org.openrdf.sesame.query.rql.model.URI;import org.openrdf.sesame.query.rql.model.Union;import org.openrdf.sesame.query.rql.model.UnknownSelector;import org.openrdf.sesame.query.rql.model.Var;public class RqlParser implements RqlParserConstants {        protected Map _varMap = new HashMap();        protected List _varList = new ArrayList();        protected List _unboundVarList = new ArrayList();        public Var getSharedVar(String name) {                Var result = (Var)_varMap.get(name);                if (result == null) {                        // Create a new Var                        if (name.startsWith("$")) {//System.out.println("Creating new ClassVar: " + name);                                result = new ClassVar(name);                        }                        else if (name.startsWith("@")) {//System.out.println("Creating new PropertyVar: " + name);                                result = new PropertyVar(name);                        }                        else {//System.out.println("Creating new DataVar: " + name);                                result = new DataVar(name);                        }                        _varMap.put(name, result);                        _varList.add(result);                        _unboundVarList.add(result);                }                return result;        }        public List getVarList() {                return _varList;        }        public void clearVars() {                _varMap.clear();                _varList = new ArrayList();        }        private int _varNo = 1;        public String getAnonymousVarName() {                return "_" + _varNo++;        }        /** namespaces **/        protected Map _nsMap = new HashMap();        public void addNamespace(String prefix, String namespace) {                _nsMap.put(prefix, namespace);        }        public String getNamespace(String prefix) {                return (String)_nsMap.get(prefix);        }        // non-public "struct"        static class FromTo {                DataVar dataVar;                ClassQuery classQ;        }  final public Query parse() throws ParseException {        Query q;        // (re)set _varNo to '1'.        _varNo = 1;          clearVars();    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case USING:      jj_consume_token(USING);      jj_consume_token(NAMESPACE);      namespace();      label_1:      while (true) {        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {        case COMMA:          ;          break;        default:          jj_la1[0] = jj_gen;          break label_1;        }        jj_consume_token(COMMA);        namespace();      }      break;    default:      jj_la1[1] = jj_gen;      ;    }    q = query();    jj_consume_token(0);                if (_unboundVarList.size() > 0) {                        String msg = "Unbound variable(s): ";                        for (int i = 0; i < _unboundVarList.size(); i++) {                                Var var = (Var)_unboundVarList.get(i);                                if (i > 0) {                                        msg += ", ";                                }                                msg += var.getName();                        }                        {if (true) throw new ParseException(msg);}                }                {if (true) return q;}    throw new Error("Missing return statement in function");  }/*-------------------------------------------------+| NAMESPACE DECLARATIONS                           |+-------------------------------------------------*/  final public void namespace() throws ParseException {        Token prefixToken, nsToken;    prefixToken = jj_consume_token(IDENTIFIER);    jj_consume_token(EQ);    nsToken = jj_consume_token(URI);                String prefix = prefixToken.image;                String ns = nsToken.image;                //FIXME: check if prefix isn't used twice?                addNamespace(prefix, ns);  }/*-------------------------------------------------+| QUERY                                            |+-------------------------------------------------*/  final public Query query() throws ParseException {        Query q;    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case SELECT:      q = sfw_query();                          {if (true) return q;}      break;    case URI:      q = uri();                    {if (true) return q;}      break;    case CIRCUMFLEX:    case IDENTIFIER:      q = data_query();                           {if (true) return q;}      break;    case CLASS:    case TYPEOF:    case SUBCLASSOF:    case SUPERCLASSOF:    case DOMAIN:    case RANGE:    case CLASSVAR:      q = class_query();                            {if (true) return q;}      break;    case PROPERTY:    case SUBPROPERTYOF:    case SUPERPROPERTYOF:    case PROPERTYVAR:      q = property_query();                               {if (true) return q;}      break;    case LPAREN:      q = set_query();                          {if (true) return q;}      break;    default:      jj_la1[2] = jj_gen;      jj_consume_token(-1);      throw new ParseException();    }    throw new Error("Missing return statement in function");  }/*-------------------------------------------------+| VARIABLES                                        |+-------------------------------------------------*/  final public Var var() throws ParseException {        Var v;    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case IDENTIFIER:      v = datavar();                           {if (true) return v;}      break;    case CLASSVAR:      v = classvar();                           {if (true) return v;}      break;    case PROPERTYVAR:      v = propertyvar();                           {if (true) return v;}      break;    default:      jj_la1[3] = jj_gen;      jj_consume_token(-1);      throw new ParseException();    }    throw new Error("Missing return statement in function");  }  final public DataVar datavar() throws ParseException {        Token t;    t = jj_consume_token(IDENTIFIER);                          {if (true) return (DataVar)getSharedVar(t.image);}    throw new Error("Missing return statement in function");  }  final public ClassVar classvar() throws ParseException {        Token t;    t = jj_consume_token(CLASSVAR);                        {if (true) return (ClassVar)getSharedVar(t.image);}    throw new Error("Missing return statement in function");  }  final public PropertyVar propertyvar() throws ParseException {        Token t;    t = jj_consume_token(PROPERTYVAR);                           {if (true) return (PropertyVar)getSharedVar(t.image);}    throw new Error("Missing return statement in function");  }/*-------------------------------------------------+| URI's                                            |+-------------------------------------------------*/  final public URI uri() throws ParseException {        Token t;    t = jj_consume_token(URI);                String uriString = t.image;                int colonIdx = uriString.indexOf(':');                if (colonIdx != -1) {                        String prefix = uriString.substring(0, colonIdx);                        String namespace = getNamespace(prefix);                        if (namespace != null) {                                uriString = namespace + uriString.substring(colonIdx + 1);                        }                }                {if (true) return new URI(uriString);}    throw new Error("Missing return statement in function");  }/*-------------------------------------------------+| SFW QUERY                                        |+-------------------------------------------------*/  final public ResourceQuery sfw_query() throws ParseException {        List projsList = new ArrayList();        List rangesList = new ArrayList();        BooleanQuery where = null;    jj_consume_token(SELECT);    projslist(projsList);    jj_consume_token(FROM);    rangeslist(rangesList);    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case WHERE:      jj_consume_token(WHERE);      where = boolean_query();      break;    default:      jj_la1[4] = jj_gen;      ;    }                if (projsList.isEmpty()) {                        // select *                        projsList = getVarList();                }                {if (true) return new SfwQuery(projsList, rangesList, where);}    throw new Error("Missing return statement in function");  }  final public void projslist(List projsList) throws ParseException {        ResourceQuery q;    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case ASTERISK:      jj_consume_token(ASTERISK);      break;    case TYPEOF:    case SUBCLASSOF:    case SUPERCLASSOF:    case SUBPROPERTYOF:    case SUPERPROPERTYOF:    case DOMAIN:    case RANGE:    case NULL:    case IDENTIFIER:    case CLASSVAR:    case PROPERTYVAR:    case URI:      q = projs_elem();                             projsList.add(q);      label_2:      while (true) {        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {        case COMMA:          ;          break;        default:          jj_la1[5] = jj_gen;          break label_2;        }        jj_consume_token(COMMA);        q = projs_elem();                                             projsList.add(q);      }      break;    default:      jj_la1[6] = jj_gen;      jj_consume_token(-1);      throw new ParseException();    }  }  final public ResourceQuery projs_elem() throws ParseException {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -