Project

General

Profile

Query » History » Revision 15

Revision 14 (Alison Craig, 03/04/2015 01:03 PM) → Revision 15/29 (Alison Craig, 03/04/2015 01:21 PM)

Query 
 ===== 
 The Query parameter are named as 

     /<prefix>/query/<query-parameters> 

 with a response of 

     /<prefix>/query/<query-parameters>/output 


 For the Query Protocol, the user will send query parameters as a JSON list, with the format: <tt>{[field1]=[search1],[field2]=[search2],?=[search3]</tt>} where <tt>field1</tt> and <tt>field2</tt> are Name components, <tt>?</tt> indicates an autocomplete search, and <tt>search*</tt> is what to use for searching on. <i>(See [[Schema]])</i> 

 In response, the Query backend of the Catalog will make Data available that includes a list of names that match the query. 

 ---- 

 <b>JSON Schemas</b> 

 <b><i>JSON Query</i></b> 
 The query name is formatted JSON stored in the query-parameters of the Interest: 

      /<prefix>/query/<query-parameters> 

 ``` 

 { 
     "$schema": "http://json-schema.org/draft-04/schema#", 
     "title": "Catalog Query", 
     "type": "array", 
     "items": { 
         "title": "QueryField", 
         "type": "object", 
         "properties": { 
             "Name": { 
                 "type": "string" 
             }, 
             "Activity": { 
                 "type": "string" 
             }, 
             "Product": { 
                 "type": "string" 
             }, 
             "Organization": { 
                 "type": "string" 
             }, 
             "Model": { 
                 "type": "string" 
             }, 
             "Experiment": { 
                 "type": "string" 
             }, 
             "Frequency": { 
                 "type": "string" 
             }, 
             "modeling realm": { 
                 "type": "string" 
             }, 
             "variable name": { 
                 "type": "string" 
             }, 
             "ensemble member": { 
                 "type": "string" 
             }, 
             "Ensemble": { 
                 "type": "string" 
             },"Sample Granularity": { 
                 "type": "string" 
             },"Start Time": { 
                 "type": "string" 
             },"field campaign": { 
                 "type": "string" 
             }, 
             "optical properties for radiation": { 
                 "type": "string" 
             }, 
             "grid resolution": { 
                 "type": "string" 
             }"output type": { 
                 "type": "string" 
             }, 
             "timestamp": { 
                 "type": "string" 
             }, 
             "?": { 
                 "description": "Autocomplete search field" 
                 "type": "string" 
             } 
         }, 
         "required": [] 
     } 
 } 

 ``` 


 <b><i>Query Results Data JSON</b></i> 
 With the query results, the TLV</b></i> 

 The Query results TLV Data returns matches the Query Results by using Interest TLV. It has an added Blob (or payload) of the query parameters (above) in List of Names that match the Query. This Blob is defined by a second TLV such that we have either Name produced and a JSON Blob for the results:  

     /<prefix>/query/<query-parameters>/output 



 ``` 
 { 
     "$schema": "http://json-schema.org/draft-04/schema#", 
     "title": "Catalog Query Result", 
     "type": "array", 
     "items": { 
         "title": "QueryResults", 
         "type": "object", 
         "properties": { 
             "Length": { 
                 "description": "Total number of results" 
                 "type": "integer" 
             }, 
             "View": { 
                "minimum": 2 
                "maximum": 2 
                "description": "Pair of integers indicating which subset of the results we are receiving (first value being the lower index, second the upper index)"  
                "type": Array 
             }, 
             "Results": { 
                "description": "List of NDN names" 
                "type": Array 
             }, 
             "Next": { 
                 "description": "Autocomplete search potential <ul> 
   <li>Type = <tt>Name</tt> (0x07)</li> 
   <li>Length = 4000</tt></li> 
   <li>Value = Name</li> 
 </ul> 
 or next field(s)" 
                 "type": Array 
             } 
         }, 
         "required": [Length,View] 
     }, 
    
 } fields (with an autocomplete) 
 ``` <ul> 
   <li>Type = <tt>[?]</tt></li> 
   <li>Length = 4000</tt></li> 
   <li>Value = Possible next field</li> 
 </ul>