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

📄 arpfilter.java

📁 semantic web framework
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        A_PARSETYPE,
        A_TYPE,
    };
    
   
    private void warning(int id,String s)  {
        try {
          getErrorHandler().warning(new ParseException(id,s));
        }
        catch (SAXException e) {
            throw new WrappedException(e);
        }
    }
    // a bit excessive in length!
    static private int defaultErrorMode[] = new int[400];
    static {
        for (int i=0; i<defaultErrorMode.length; i++)
            defaultErrorMode[i] = i/100;
    }
    private int errorMode[] = (int[])defaultErrorMode.clone();
    void setDefaultErrorMode() {
        errorMode = (int[])defaultErrorMode.clone();
    }
    void setLaxErrorMode() {
        setDefaultErrorMode();
        for (int i=100;i<200;i++)
            setErrorMode(i,EM_IGNORE);
        setErrorMode(WARN_MINOR_INTERNAL_ERROR,EM_WARNING);
    }
    void setStrictErrorMode() {
        setStrictErrorMode(EM_IGNORE);
    }
    
    void setStrictErrorMode(int nonErrorMode) {
        setDefaultErrorMode();
        for (int i=1;i<100;i++)
            setErrorMode(i,nonErrorMode);
        for (int i=100;i<200;i++)
            setErrorMode(i,EM_ERROR);
        int warning = EM_WARNING;
        int error = EM_ERROR;
        switch(nonErrorMode) {
            case EM_ERROR:
                warning = EM_ERROR;
                break;
            case EM_FATAL:
                warning = error = EM_FATAL;
                break;
        }
       // setErrorMode(IGN_XMLBASE_USED,warning);
       // setErrorMode(IGN_XMLBASE_SIGNIFICANT,error);
        setErrorMode(WARN_MINOR_INTERNAL_ERROR,warning);
        setErrorMode(WARN_MINOR_INTERNAL_ERROR,warning);
        setErrorMode(WARN_DEPRECATED_XMLLANG,warning);
 //       setErrorMode(WARN_EMPTY_ABOUT_EACH,nonErrorMode);
        setErrorMode(WARN_UNKNOWN_PARSETYPE,warning);
        setErrorMode(WARN_BAD_XML,nonErrorMode);
        setErrorMode(WARN_PROCESSING_INSTRUCTION_IN_RDF,nonErrorMode);
        setErrorMode(WARN_LEGAL_REUSE_OF_ID,nonErrorMode);
        setErrorMode(WARN_RDF_NN_AS_TYPE,nonErrorMode);
        setErrorMode(WARN_UNKNOWN_RDF_ELEMENT,warning);
        setErrorMode(WARN_UNKNOWN_RDF_ATTRIBUTE,warning);
        setErrorMode(WARN_UNKNOWN_XML_ATTRIBUTE,nonErrorMode);
        setErrorMode(WARN_QNAME_AS_ID,warning);
        setErrorMode(WARN_BAD_XML,error);
    }
    int setErrorMode( int errno, int mode ) {
        int old = errorMode[errno];
        switch ( mode ) {
            case EM_WARNING:
            case EM_IGNORE:
                if ( errno >= 100 * EM_ERROR 
                  && errno != ERR_NOT_WHITESPACE ) 
                    break;
            case EM_ERROR:
            case EM_FATAL:
                switch ( errno ) {
                    case ERR_UNABLE_TO_RECOVER:
                        break;
                    default:
                   errorMode[errno] = mode;
                }
        }
        return old;
    }
    void parseWarning(int id,Location where,String s) throws ParseException {
        int mode = errorMode[id];
        if ( mode == EM_IGNORE )
            return;
        ParseException pe = new ParseException(id,where,s);
        if ( mode == EM_FATAL ) {
            pe.setFatal(true);
            mode = EM_ERROR;
        }
        if ( mode == EM_ERROR ) 
            throw pe;
        
        try {
            getErrorHandler().warning(pe);
            return;
        }
        catch (ParseException rethrown) {
            if ( rethrown == pe )
               throw rethrown;
            throw new WrappedException(pe);
        }
        catch (SAXException e) {
            throw new WrappedException(e);
        }
    }
    void parseWarning(Warn w) throws ParseException {
        parseWarning(w.number,w.location,w.msg);
    }
    private void putWarning(int no,Location where,String msg) {
        pipe.putNextToken(new Warn(no,where,msg));
    }
    
    void setUserData(String nodeId,Object v) {
    	nodeIdUserData.put(nodeId,v);
    }
        
    Object getUserData(String nodeId) {
    	return nodeIdUserData.get(nodeId);
    }
    public void setDocumentLocator (Locator locator)
    {
        this.locator = locator;
        super.setDocumentLocator(locator);
    }
    
    private void doSpecialAtt(int ix,int attName, String ns,BitSet attsDone, Attributes atts, Location where) 
     throws SAXException
    {
        
        attsDone.set(ix);
        
        if ( attName == A_XMLSPACE )
            return;
        
        pipe.putNextToken(new ARPQname(attName,where,ns,null,atts.getQName(ix)));
        String val = atts.getValue(ix);
        
        if ( attName == A_PARSETYPE ) {
            if ( val.equals("Resource") ) {
                pipe.putNextToken(new StrToken(AV_RESOURCE,where,val));
            } else if ( val.equals("Collection") ) {
                pipe.putNextToken(new StrToken(AV_COLLECTION,where,val));
            } else if ( val.equals("daml:collection") && errorMode[WARN_IN_STRICT_MODE]!=EM_ERROR ) {
                pipe.putNextToken(new StrToken(AV_DAMLCOLLECTION,where,val));
            } else {
                pipe.putNextToken(new StrToken(AV_LITERAL,where,val));
                if ( !val.equals("Literal") ) {
                    putWarning(WARN_UNKNOWN_PARSETYPE,where,"Unknown parseType: " + val);
                }
            }  
        } else  {
            pipe.putNextToken(new StrToken(AV_STRING,where,val));
        }

        if ( attName == A_DATATYPE )
           putWarning(WARN_NOT_SUPPORTED,where,"RDF datatyping not supported in Jena1, Literal treated as untyped.");
    }
    public void startElement (String uri, String localName, String rawName, Attributes atts)  throws SAXException {
        Location where = new Location(locator);
        putElementQname(uri,localName,rawName,where);
        BitSet attsDone = new BitSet();
        
        for (int i=0; i<atts.getLength(); i++) {              
                String qn = atts.getQName(i);
                String prefix;
                if (qn.startsWith("xmlns")) {
                	  prefix = "";
                	if (qn.equals("xmlns")) {
                	} else if (qn.charAt(5)==':') {
                		prefix = atts.getLocalName(i);
                	} else {
                		continue;
                	}
                	
                attsDone.set(i);
                pipe.putNextToken(
                new StrToken(A_XMLNS,where,prefix)
                );
                pipe.putNextToken(
                new StrToken(AV_STRING,where,atts.getValue(i))
                );
              }
        }
        for (int i=0;i<specialAtts.length;i++) {
            int ix = atts.getIndex(specialNameSpaces[i],specialAtts[i]);
            if ( ix != -1) {
                doSpecialAtt(ix,specialAttValues[i],specialNameSpaces[i],attsDone,atts,where);
            }
            if ( specialNameSpaces[i]==rdfns ) {
                ix = atts.getIndex("",specialAtts[i]);
                if ( ix != -1) {
                    putWarning(WARN_UNQUALIFIED_RDF_ATTRIBUTE,where,"Unqualified use of rdf:"+atts.getLocalName(ix)+ " has been deprecated.");
                    doSpecialAtt(ix,specialAttValues[i],"",attsDone,atts,where);
                }
            }
        }
        for (int i=0; i<atts.getLength(); i++) {
            if ( !attsDone.get(i) ) {
                String ns = atts.getURI(i);
                String qn = atts.getQName(i);
                if ( qn.length()>=3 && qn.substring(0,3).toLowerCase().equals("xml") ) {
                    putWarning(WARN_UNKNOWN_XML_ATTRIBUTE,where,"XML attribute: " +atts.getQName(i)+" is not known and is being discarded.");
                    continue;
                }
                if ( ns.equals("") ) {
                    putWarning(WARN_UNQUALIFIED_ATTRIBUTE,where,"Attribute: " +atts.getLocalName(i)+". Unqualified use is deprecated. Assuming namespace: " + uri);
                    ns = uri;
                }
                putAttributeQname( ns, atts.getLocalName(i), qn,  where );
                pipe.putNextToken(
                new StrToken(AV_STRING,where,atts.getValue(i))
                );
            }
        }
    }
  
    public void endElement (String uri, String localName, String rawName)
    throws SAXException
    { Location loc = new Location(locator);
        pipe.putNextToken(new Token(E_END,loc));
    }
    public void characters (char ch[], int start, int length)
    throws SAXException
    { Location loc = new Location(locator);
            pipe.putNextToken(
            new StrToken( CD_STRING, loc, new String(ch,start,length) ) );
    }
    public void ignorableWhitespace (char ch[], int start, int length)
    throws SAXException
    {   // Never called.
        characters(ch,start,length);
    }
    private boolean isMemberProperty(String name) {
        if ( name.startsWith("_") ) {
            String number = name.substring(1);
            if (number.startsWith("-") || number.startsWith("0"))
                return false;
            try {
                Integer.parseInt(number);
                return true;
            }
            catch (NumberFormatException e) {
                try {
                    // It might be > Integer.MAX_VALUE
                    new java.math.BigInteger(number);
                    return true;
                }
                catch (NumberFormatException ee) {
                    return false;
                }
            }
        }
        return false;
    }
    private boolean isKnownRDFProperty(String name) {
        return knownRDFProperties.contains(name);
    }
    private void putElementQname(String uri, String localName, String q,Location where) 
    throws SAXException
    {  Token warn = null;
        if ( uri.equals(rdfns) ) {
            Integer val = (Integer)rdfnames.get(localName);
            if ( val == null ) {
                if ( isMemberProperty(localName) ) {
        pipe.putNextToken( new ARPQname(E_RDF_N,where,uri,localName, q) );
                   return;
                } else if ( !(knownRDFTypes.contains(localName)
                       ||isKnownRDFProperty(localName)) ) {
                  if ( knownBadRDFNames.contains(localName) ) 
                     warn = new Warn(ERR_BAD_RDF_ELEMENT,where,"Creating statement(s) for syntactic RDF element: '<rdf:"+localName+"'.");
                 else
                    warn = new Warn(WARN_UNKNOWN_RDF_ELEMENT,where,"Creating statement(s) for unknown RDF element: '<rdf:"+localName+"'.");
               }
            } else {
                pipe.putNextToken(new ARPQname(val.intValue(),where,uri,localName,q));
                return;
            }
        } 
        pipe.putNextToken( new ARPQname(E_OTHER,where,uri,localName, q) );
        if ( warn != null )
            pipe.putNextToken( warn );
    }
    
    private void putAttributeQname( String ns, String local, String q, Location where) 
    throws SAXException
    {
        if ( ns.equals(rdfns) ) {
            if ( isMemberProperty(local) ) {
        pipe.putNextToken( new ARPQname(A_RDF_N,where,ns,local,q) );
               return;
            } else if ( !isKnownRDFProperty(local) ) {
            	    if ( knownBadRDFNames.contains(local) ) 
            putWarning(ERR_BAD_RDF_ATTRIBUTE,where,"Creating statement for inappropriate RDF property: 'rdf:"+local+"'.");
              else
            putWarning(WARN_UNKNOWN_RDF_ATTRIBUTE,where,"Creating statement for unknown RDF property: 'rdf:"+local+"'.");
            }
        }
        pipe.putNextToken( new ARPQname(A_OTHER,where,ns,local,q) );
    }
    
    public void endEntity(java.lang.String str) {
    }
    
    public void endDTD()  {
    }
    
    public void startDTD(String str, String str1, String str2)  {
    }
    
    public void endCDATA()  {
    }
    
    public void startCDATA()  {
    }
    
    public void comment(char[] ch, int start, int length)  {
        Location where = new Location(locator);
        pipe.putNextToken( new StrToken(COMMENT,
          where, new String(ch,start,length) ) );
    }
    
    public void startEntity(java.lang.String str) {
    }
    public void processingInstruction(String target,
                                  String data)
                           throws SAXException {
        Location where = new Location(locator);
        pipe.putNextToken( new StrToken(PROCESSING_INSTRUCTION,
          where, (data==null?target:target+" "+data) ) );
   //     pipe.putNextToken( new ARPQname(E_RDF_N,where,uri,localName, q) );
    }
    
    public Location currentLocation() {
	return pipe.getLastToken().location;
    }
}

⌨️ 快捷键说明

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