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

📄 rqlparser.java

📁 这是外国一个开源推理机
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        ResourceQuery q;    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case IDENTIFIER:    case CLASSVAR:    case PROPERTYVAR:      q = var();                       {if (true) return q;}      break;    case NULL:      q = null_value();                           {if (true) return q;}      break;    case URI:      q = uri();                       {if (true) return q;}      break;    case DOMAIN:      q = domain();                       {if (true) return q;}      break;    case RANGE:      q = range();                       {if (true) return q;}      break;    case SUBCLASSOF:      q = subClassOf();                           {if (true) return q;}      break;    case SUBPROPERTYOF:      q = subPropertyOf();                              {if (true) return q;}      break;    case TYPEOF:      q = typeOf();                       {if (true) return q;}      break;    case SUPERPROPERTYOF:      q = superPropertyOf();                                {if (true) return q;}      break;    case SUPERCLASSOF:      q = superClassOf();                             {if (true) return q;}      break;    default:      jj_la1[7] = jj_gen;      jj_consume_token(-1);      throw new ParseException();    }    throw new Error("Missing return statement in function");  }  final public DataVar null_value() throws ParseException {    Token t;    t = jj_consume_token(NULL);        // FIXME a null token is now returned as a DataVar, because there is        // no specific 'nulltoken' object in the data model. should we change        // this?        {if (true) return new DataVar(t.image);}    throw new Error("Missing return statement in function");  }  final public void rangeslist(List selectors) throws ParseException {    ranges_elem(selectors);    label_3:    while (true) {      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {      case COMMA:        ;        break;      default:        jj_la1[8] = jj_gen;        break label_3;      }      jj_consume_token(COMMA);      ranges_elem(selectors);    }  }  final public void ranges_elem(List selectors) throws ParseException {    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case CLASS:    case PROPERTY:      class_or_property_selector(selectors);      break;    case LBRACE:    case TYPEOF:    case SUBCLASSOF:    case SUPERCLASSOF:    case SUBPROPERTYOF:    case SUPERPROPERTYOF:    case DOMAIN:    case RANGE:    case CLASSVAR:    case PROPERTYVAR:    case URI:      pathexpr(selectors);      break;    default:      jj_la1[9] = jj_gen;      jj_consume_token(-1);      throw new ParseException();    }  }  final public void class_or_property_selector(List selectors) throws ParseException {        RdfsClass rdfsClass;        ClassVar classVar;        RdfProperty rdfProperty;        PropertyVar propVar;    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case CLASS:      rdfsClass = rdfs_class();      jj_consume_token(LBRACE);      classVar = classvar();      jj_consume_token(RBRACE);                ClassSelector classSel = new ClassSelector(classVar, rdfsClass);                _unboundVarList.remove(classVar);                selectors.add(classSel);      break;    case PROPERTY:      rdfProperty = rdf_property();      jj_consume_token(LBRACE);      propVar = propertyvar();      jj_consume_token(RBRACE);                PropertySelector propSel = new PropertySelector(propVar, rdfProperty);                _unboundVarList.remove(propVar);                selectors.add(propSel);      break;    default:      jj_la1[10] = jj_gen;      jj_consume_token(-1);      throw new ParseException();    }  }  final public void pathexpr(List selectors) throws ParseException {        // Vars for implicit joins between path elements        FromTo fromTo = new FromTo();    fromTo = first_pathelem(selectors);    label_4:    while (true) {      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {      case DOT:        ;        break;      default:        jj_la1[11] = jj_gen;        break label_4;      }      fromTo = joined_pathelem(selectors, fromTo);    }  }/* The first path element of a row (possibly) */  final public FromTo first_pathelem(List selectors) throws ParseException {        FromTo sourceFromTo = null;        FromTo targetFromTo = null;        PropertyQuery propQ = null;        ClassQuery classQ = null;        URI uri = null;    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case LBRACE:      jj_consume_token(LBRACE);      sourceFromTo = from_to(selectors);      jj_consume_token(RBRACE);      break;    default:      jj_la1[12] = jj_gen;      ;    }    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case PROPERTY:    case SUBPROPERTYOF:    case SUPERPROPERTYOF:    case PROPERTYVAR:      propQ = property_query();      break;    case CLASS:    case TYPEOF:    case SUBCLASSOF:    case SUPERCLASSOF:    case DOMAIN:    case RANGE:    case CLASSVAR:      classQ = class_query();      break;    case URI:      uri = uri();      break;    default:      jj_la1[13] = jj_gen;      jj_consume_token(-1);      throw new ParseException();    }    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {    case LBRACE:      jj_consume_token(LBRACE);      targetFromTo = from_to(selectors);      jj_consume_token(RBRACE);      break;    default:      jj_la1[14] = jj_gen;      ;    }                if (classQ != null) {                        if (targetFromTo == null) {                                {if (true) throw new ParseException("from_to part missing for " +                                                classQ.toString());}                        }                        if (sourceFromTo != null) {                                {if (true) throw new ParseException("Not a property query: " +                                                classQ.toString());}                        }                        if (targetFromTo.dataVar == null) {                                if (targetFromTo.classQ == null) {                                        {if (true) throw new ParseException("Data or class var missing for " +                                                        classQ.toString());}                                }                                else if (targetFromTo.classQ instanceof ClassVar) {                                        // Query like: classQ { : $X}                                        ClassSelector classSel = new                                                ClassSelector((ClassVar)targetFromTo.classQ, classQ);                                        _unboundVarList.remove(targetFromTo.classQ);                                        _unboundVarList.remove(classQ);                                        selectors.add(classSel);                                }                                else {                                        {if (true) throw new ParseException("target should be class var for " +                                                        classQ.toString());}                                }                        }                        else {                                // Query like: classQ {X}                                InstanceSelector insSel = new InstanceSelector(                                                targetFromTo.dataVar, classQ, false);                                _unboundVarList.remove(targetFromTo.dataVar);                                _unboundVarList.remove(classQ);                                selectors.add(insSel);                        }                }                else if (uri != null) {                        if (sourceFromTo == null &&                            targetFromTo != null &&                            targetFromTo.classQ != null &&                            targetFromTo.classQ instanceof ClassVar)                        {                                // query is of the form 'uri{ : $X}' or 'uri{X : $X}'                                // FIXME what if targetFromTo.classQ is not just a var?                                // create a class selector constraining $X to subclasses                                // of uri. FIXME currently subClassOf(X) does not return X                                // itself, this is necessary here.                                classQ = new SubClassOf((ClassQuery)uri, true);                                ClassSelector classSel = new ClassSelector((ClassVar)targetFromTo.classQ, classQ);                                _unboundVarList.remove(targetFromTo.classQ);                                _unboundVarList.remove(classQ);                                selectors.add(classSel);                                if (targetFromTo.dataVar != null) {                                        InstanceSelector instSel = new InstanceSelector(targetFromTo.dataVar, targetFromTo.classQ, true);                                        _unboundVarList.remove(targetFromTo.dataVar);                                        _unboundVarList.remove(targetFromTo.classQ);                                        selectors.add(instSel);                                }                        }                        else if (sourceFromTo != null ||                                 targetFromTo == null ||        // implicit join using "."                                 targetFromTo.dataVar == null || // schema path selector                                 targetFromTo.classQ != null)    // schema path selector                        {                                // This is a property selector. This will be handled in                                // the next if-statement                                propQ = (PropertyQuery)uri;                        }                        else {                                // Don't know what kind of selector this is, use an                                // UnknownSelector                                UnknownSelector unknownSel = new UnknownSelector(                                                uri, targetFromTo.dataVar);                                _unboundVarList.remove(targetFromTo.dataVar);                                selectors.add(unknownSel);                        }                }                // Not 'else if' because propQ can be set later in case of uri !!!                if (propQ != null) {                        // Both FromTo's are needed:                        if (sourceFromTo == null) {                                sourceFromTo = new FromTo();                        }                        if (targetFromTo == null) {                                targetFromTo = new FromTo();                        }                        // In case just one of the FromTo's has a dataVar, the other                        // should get an anonymous DataVar.                        if (sourceFromTo.dataVar != null) {                                if (targetFromTo.dataVar == null) {                                        targetFromTo.dataVar = new DataVar(getAnonymousVarName());                                        if (targetFromTo.classQ != null) {                                                // We've created a new class restriction                                                InstanceSelector resSel = new InstanceSelector(                                                                targetFromTo.dataVar, targetFromTo.classQ,                                                                true);                                                _unboundVarList.remove(targetFromTo.classQ);                                                selectors.add(resSel);                                        }                                }                        }                        else { // sourceFromTo.dataVar == null                                if (targetFromTo.dataVar != null) {                                        sourceFromTo.dataVar = new DataVar(getAnonymousVarName());                                        if (sourceFromTo.classQ != null) {                                                // We've created a new class restriction                                                InstanceSelector resSel = new InstanceSelector(                                                                sourceFromTo.dataVar, sourceFromTo.classQ,                                                                true);                                                _unboundVarList.remove(sourceFromTo.classQ);                                                selectors.add(resSel);                                        }                                }                        }                        // Now both FromTo's are ensured to be complete                        // Create a property selector for the property in case propQ                        // is not a PropertyVar itself                        PropertyVar propVar = null;                        if (propQ instanceof PropertyVar) {                                propVar = (PropertyVar)propQ;                                // If both source and target are empty                                // (e.g. {} @P {} ), we still need a                                // property selector.                                if (sourceFromTo.dataVar == null &&                                    targetFromTo.dataVar == null)                                {                                    PropertySelector propSel =                                        new PropertySelector(propVar, new RdfProperty());                                    _unboundVarList.remove(propVar);                                    selectors.add(propSel);                                }                        }                        else {                                // Use anonymous var that can be shared with other selectors                                propVar = new PropertyVar(getAnonymousVarName());                                PropertySelector propSel = new PropertySelector(propVar, propQ);                                _unboundVarList.remove(propQ);                                selectors.add(propSel);                        }                        // If appropriate, create DataPathSelector                        if (sourceFromTo.dataVar != null &&                                targetFromTo.dataVar != null)                        {                                boolean extendedPropInterpretation = true;                                if (propQ instanceof PropertyVar) {                                        extendedPropInterpretation = false;                                }                                DataPathSelector dps = new DataPathSelector(

⌨️ 快捷键说明

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