NetBeans下用于Open Calais的SOAP客户机(一)

来源:互联网 发布:领英试用高级账号 知乎 编辑:程序博客网 时间:2024/06/05 14:58

本文将介绍如何编写一个简单的、基于控制台的Java SOAP客户机以访Open Calais Web服务。本教程所介绍的概念同样适用于为任何其它Web服务编写SOAP客户机。


目录

»

§                     用于Open CalaisSOAP客户机

§                     简介:Calais Web服务  

§                     运行原理  

§                     前提条件  

§                     Open Calais创建SOAP客户机  

§                     使用Open Calais API构造和发送SOAP请求  

§                     RDF中获取和显示结果  

§                     更多练习  

§                     结束语

§                     参考资料  

 

简介:Calais Web服务

根据 http://opencalais.mashery.com/Overview 的定义,Calais Web服务可以自动将富语义元数据附加到所提交的内容中,整个过程不会超过1秒钟。通过自然语言处理、机器学习和其它方法,Calais能够对文档进行分类并将它们与实体(人、位置、组织等)、事实(在‘y’公司工作的职员‘x’)和事件(职员‘z’‘x’日被任命为‘y’公司的主席)相链接。元数据结果将集中保存,并以行业标准的RDF结构随全局唯一标识符(GUID)一并返回给用户。借助Calais GUID,任何下游用户都可以通过简单的Calais调用来获取该元数据。

通过该元数据,您可以建立文档与人、公司、地点、产品、事件以及地理等任何事物之间的链接映射(或者图表、网络)。您可以使用这些映射改善站点的导航,提供上下文联合,标记和组织内容,创建结构化的folksonomies,筛选并去除重复新闻资料或分析内容中是否包含您所关心的主题。此外,还可以与内容生态系统中的任何人共享这些映射。

运行原理

以编程人员的观点来看,您可以构建SOAP请求并将其发送给Web服务的远程端点。Web服务以 资源描述框架 的输出作为响应。

前提条件

NetBeans IDE最好6.0以上WebJava EE安装包

JDK 1.6.0以上

了解RDF的基础知识

了解语义Web的基础知识

了解Web服务的基础知识

Open Calais创建SOAP客户机

创建Java应用程序项目。在该项目中,创建一个Web服务客户机来使用Open Calais enlighten服务。

在新建项目向导中,创建一个Java应用程序项目。将其命名为contextualizer接受所有的默认设置,然后创建一个Main类。

右键单击项目节点。这将弹出上下文菜单。

选择新建->Web服务客户机。

添加enlighten WSDLURLhttp://api.opencalais.com/enlighten/?wsdl

现在代码将通过WSDL获取Web服务相关信息。

信息获取完成后,展开项目浏览器中“Web服务引用节点。可以看到Web服务中可用的SOAP函数。

使用Open Calais API构造和发送SOAP请求

Open Calais APISOAP 1.1SOAP 1.2都提供了一个名称为”enlighten”的函数。我们将在客户机中使用SOAP 1.1函数。

单击左侧的"enlighten"节点,并将其拖拽到"contextualiser.Main"类中。以下代码将添加到主函数的已有类中:

try { // Call Web Service Operation
            contextualiser.Calais service = new contextualiser.Calais();
            contextualiser.CalaisSoap port = service.getCalaisSoap();
            // TODO initialize WS operation arguments here
            java.lang.String licenseID = "";
            java.lang.String content = "";
            java.lang.String paramsXML = "";
            // TODO process result here
            java.lang.String result = port.enlighten(licenseID, content, paramsXML);
            System.out.println("Result = "+result);
        } catch (Exception ex) {
            // TODO handle custom exceptions here
        }
 

要了解调用API的各种参数,请参阅Open Calais API指南。

特别地我们必须通过SOAP请求发送以下信息

许可ID,或开发人员密钥(注册Open Calais网站获得)

希望获取的语义元数据文本

ParamsXML预定义XML格式的字符串

使用"water"作为文本。ParamsXML就是Open Calais API文档中说明的那个。 现在源代码应如下所示

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
package contextualiser;
 
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
 
 
/**
 *
 * @author amit
 */
public class Main {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        
try { // Call Web Service Operation
            contextualiser.Calais service = new contextualiser.Calais();
            contextualiser.CalaisSoap port = service.getCalaisSoap();
 
            // TODO initialize WS operation arguments here
            java.lang.String licenseID = "1234567890134"; //replace this with your own license key
            java.lang.String content = "water";
            java.lang.String paramsXML="";
            
            String line;
            try{
            FileReader input = new FileReader("paramsXML.xml");
            BufferedReader bufRead = new BufferedReader(input);
            
            while((line=bufRead.readLine())!=null){
                paramsXML+= line;
                System.out.println(line);
                
            }
            
 
            }catch(IOException e){
                System.out.println(e);
            }
                        
            // TODO process result here
            
            java.lang.String result = port.enlighten(licenseID, content, paramsXML);
            System.out.println("Result = "+result);
        } catch (Exception ex) {
            // TODO handle custom exceptions here
        }
        
        
        
    }
 
}
原创粉丝点击