예제 #1
0
 @Override
 public int write(TupleIterator iter) throws TrippiException {
   try {
     m_out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
     doEntities();
     m_out.println("<sparql xmlns=\"http://www.w3.org/2001/sw/DataAccess/rf1/result\">");
     String[] names = iter.names();
     m_out.println("  <head>");
     for (int i = 0; i < names.length; i++) {
       m_out.println("    <variable name=\"" + names[i] + "\"/>");
     }
     m_out.println("  </head>");
     m_out.println("  <results>");
     int count = 0;
     while (iter.hasNext()) {
       m_out.println("    <result>");
       Map<String, Node> result = iter.next();
       for (int i = 0; i < names.length; i++) {
         m_out.print("      <" + names[i]);
         Node n = result.get(names[i]);
         if (n == null) {
           m_out.println(" bound=\"false\"/>");
         } else if (n instanceof URIReference) {
           String uriString = ((URIReference) n).getURI().toString();
           m_out.println(" uri=\"" + getURI(uriString) + "\"/>");
         } else if (n instanceof BlankNode) {
           String id = "blank" + n.hashCode();
           m_out.println(" bnodeid=\"" + id + "\"/>");
         } else if (n instanceof Literal) {
           Literal lit = (Literal) n;
           URI dType = lit.getDatatypeURI();
           if (dType != null) {
             m_out.print(" datatype=\"" + getURI(dType.toString()) + "\"");
           }
           String lang = lit.getLanguage();
           if (lang != null) {
             m_out.print(" xml:lang=\"" + lang + "\"");
           }
           m_out.println(">" + enc(lit.getLexicalForm()) + "</" + names[i] + ">");
         } else {
           throw new TrippiException("Unrecognized node type: " + n.getClass().getName());
         }
       }
       m_out.println("    </result>");
       m_out.flush();
       count++;
     }
     m_out.println("  </results>");
     m_out.println("</sparql>");
     m_out.flush();
     iter.close();
     return count;
   } catch (IOException e) {
     throw new TrippiException("Error writing", e);
   }
 }