Table of Contents

  1. Introduction
  2. Acquiring an API key
  3. Searching/Querying
  4. Sample Code
  5. XSD and WSDL Documents

Introduction

The INFO Project makes its ne Source database of resources available for searching by using SOAP, or Simple Object Access Protocol.  SOAP is a platform and language independent data exchange protocol based on the extensible markup language (XML). Using INFO's SOAP service, approved clients can submit searches and retrieve results without using the One Source web interface.  Search requests can come from the clients' own websites, or even desktop-based software, and results are returned in an XML format which can be interpreted by any common programming languages and reformatted to suit the client.

Acquiring an API key

For information about acquiring an API key to allow you to make use of INFO's SOAP service, email Debbie Dickson

Searching/Querying

One Source can be queried on a single term or a grouping of terms.  The following sections describe how to construct a One Source query and the search functionality available to SOAP/API users.

Terms

A query  consists of terms and operators. There are two types of terms: Single Terms and Phrases. A Single Term is a single word such as Family or Planning. A Phrase is a group of words surrounded by double quotes such as "Family Planning".  Multiple terms can be combined together with Boolean operators to form a more complex query (see below).


Fields

Field names must be entered in lower case and must be spelled exactly the way they are in the list below.  All fields listed are available for searching. 

When performing a search you can either specify a field (e.g., keyword, title, or journal title), or use the default and not  specify a field, which will search the following:

You can search any field directly by typing the field name followed by a colon ":" and then the term you are looking for. As an example, if you want to find the document entitled "Advance Africa" which contains the keyword "condom", you can enter:

ti:"Advance Africa" AND kw:"condom"

Note: The field label is only valid for the term that it directly precedes, so the query

ti:Advance Africa

Will only find "Africa" in the title field. It will try and find "Advance" in any the default fields. To search for both words in the title, in any order, you would use the following query:

ti:Advance ti:Africa

You should use the following query in order to get all resources that have the phrase "Advanced Africa" in their title:

ti:"Advance Africa"

 One Source SOAP search will support the following fields:

ab: (Abstract, Evaluative Abstract, Pop Reporter Abstract, French Abstract, or Spanish Abstract)

abdesc: (Abstract, Description)

all: (Abstract, Evaluative Abstract, Pop Reporter Abstract, French Abstract, Spanish Abstract, Answer, Author, Corporate Author / Organization, Photo Caption, Audience, Photo Credit, Description, Important Finding Topic, Imprint, Major Keywords,Minor Keywords, Language, MMC Contact, Monographic Information, Photographer, Public Notes, IUE Public Notes, Photo City, Related Project, Question, Region, Subregion, Country, Related External Link, English Title, Journal Title, Non-English Title, or Resource Subtype)

ans: (Answer)

assoc: (Related Internal Resource)

au: (Author, Corporate Author, or Photograher)

cg: (Audience)

ci: (Photo City)

co: (Country)

contact: 

dateadded: (Date Record Added to One Source) ote that the value must be in quotes and: can be prepended with >, <, or = otherwise equality is assumed.

desc: (Description)

drc: (Date Record Created) Note that the value must be in quotes and: can be prepended with >, <, or otherwise equality is assumed.

drm: (Date Record Modified) Note that the value must be in quotes and can be prepended with >, <, or = otherwise equality is assumed.

ent: (Entered - looks in Date Record Created) Note that the possible values are: last_30_days, last_60_days, last_90_days.

exp: (Expert Recommended Only - looks in Communities Recommended for field) Note that the possible values are: yes.)

fto: (Full Text Only - which looks in Full Text URL for the existence of a URL) Note that the possible values are: yes

fy: (From Year)

global: (Major Keywords, Minor Keywords, English Title, Photographer, Question, Photo Caption, Corporate Author, Country, or Region) Note that this is the same as if no field designation is used, e.g., AIDS is the same as global:AIDS.

id: (ID Unique to Source Database, Raw Source Resource ID, or IUE Resource ID)

ift: (Important Finding)

img: (Thumbnail Image URL)

imgonly: (Thumbnail Image Only - which looks in Thumbnail Image URL for a non-empty field) Note that the possible values are: yes.

imp: (Imprint)

impmon: (Imprint, Monographic Information)

issue: (Issue)

jt: (Journal Title)

kw: (Major Keywords or Minor Keywords)

kwm: (Major Keyword)

la: (Language)

mi: (Monographic Information)

mmc: (M/MC Contact Name)

no: (Public Notes or IUE Public Notes)

oid: (One Source ID)

orderable: (Orderable - where this item is orderable from)

photographer: (Photographer Name)

pr: (Related Project)

price: (Unit Price)

pro: (Peer Reviewed Journal Indication) Note that the possible values are: yes.

pub: (Year) Possible values are this_year, last_2_years, last_5_years, last_10_years.

qanda: (Question, Answer)

qu: (Question)

rc: (Communities Recommended for)

reg: (Region or Subregion)

res: (Resource Type)

rl: (Related External Link)

rsid: (Raw Source ID)

sc: (Communities Selected for)

ti: (English Title, Non-English Title, Photo Caption)

ty: (To Year)

vol: (Volume)

Wildcard Searches

To perform a multiple character wildcard search use the "*" symbol. Multiple character wildcard searches looks for 0 or more characters at the end of the term. For example, to search for report, reports, or reporter, you can use the search:   report*

You must use the wildcard symbol at the end of a term after at least 3 characters. A term may not have more than one wildcard in it.

Boolean Operators

Boolean operators allow terms to be combined through logic operators. We support AND, OR, and NOT Boolean operators.

OR

The OR operator is the default conjunction operator. The OR operator links two terms and finds a matching document if either of the terms exist in a document. To search for documents that contain either "population report" or just population use the query:

"population report" OR population

AND

The AND operator matches documents where both terms exist anywhere in the text of a single document. To search for documents that contain "population report" and "West Africa" use the query:

"population report" AND "West Africa"

NOT

The NOT operator excludes documents that contain the term after NOT.   To search for documents that contain "family planning" but not "population" use the query:

"family planning" NOT "population"

Note: The NOT operator cannot be used without other terms. For example, the following search will return no results: NOT "Africa"

Grouping

Use parentheses to group clauses to form sub queries. This can be very useful if you want to control the boolean logic for a query. To search for either "population" or "family" and "planning" use the query:

(population OR family) AND planning

Precedance

The default operator precedence is:

  1. Quotation marks (for exact phrase)
  2. space between words (which creates an AND)
  3. ( ) parentheses
  4. AND
  5. OR
  6. NOT

Sample Code

INFO makes available two sample clients, one written in PHP using the NuSOAP library, the other written in Python using the SOAPPy module. Both are made avialable without restriction. However, they are intended as sample code only. INFO cannot be responsible for any failures which may occur as a result of their use.

PHP Client using NuSOAP
The PHP client makes use of the NuSOAP library to interact with the server. The client accepts parameters provided in the URL and outputs the result, along with request and response and debugging information, to the screen.
Download the PHP sample client

Python Client using SOAPPy
The Python code below makes use of the SOAPpy module. The code defines a queryServer method which accepts parameters to be sent to the server as a Python dictionary datatype and returns the resulting Python object. Example usage is provided by the if __name__==’__main__’ block, which is executed if the code is executed directly, rather than being imported and utilized by another script. The example code queries for no more than 2 orderable documents for which full text is available, sorted by year in ascending order. Results are then processed printing the resource_id and english_title to the screen.
Download the Python sample client

XSD and WSDL Documents

View the INFOSearch WSDL file
The Schema (XSD) for a Resource Object
The Schema (XSD) for a Resource Search List Object
The Schema (XSD) for a Resource Search Query Object