基于CNPAT数据库数据构建上海专利指标数据库的方法研讨

收稿日期 2003 09 15 基金项目 本项研究得到了上海市科学技术委员会的资助 项目编号 01ZH14022 作者简介 代茂军 1978 男 上海大学国际工商管理学院硕士研究生 情报学专业 李 红 1968 女 华东师范大学硕士毕业 上海大学情报研究中心副教授 基于CNPAT数据库数据 构建上海专利指标数据库的方法研讨 代茂军 李 红 上海大学 上海201800 摘 要 本文介绍了上海专利统计分析系统的模块组成以及这些模块所起的作用 详细阐述了组成系统的专 利数据转换模块 关键词 专利数据 专利数据统计 专利数据转换 专利数据库 Abstract The paper introduces the modules that consist of Shanghai Patent Statistical and Analysis System SPSAS as well as the functions those modules per then it expounds the patent data conversion module in detail Key words patent data patent data conversion patent data statistical analysis patent database 中图分类号 G250174 文献标识码 A 文章编号 1008 0821 2004 01 0015 03 1 前 言 发达国家在利用专利数据作为技术指标分析比较国家 创新情况 评估技术发展现状 预测技术发展前景等方面 已有多年的理论研究和实践经验 各国科技竞争力评价指 标体系普遍利用专利指标作为主要指标来衡量和分析国家 技术创新状况和问题 如著名的 洛桑报告 但利用专 利数据建立科学技术指标的工作 在我国还未得到足够的 重视 鉴于专利数据统计分析对技术发展的重要作用 上 海大学已于近期完成了上海市自然科学基金项目 用于创 新评价工作的专利指标量化研究 的工作 建立了上海专 利指标数据库 解决了专利数据自动化处理的技术难题 本篇文章详细介绍了如何利用中国专利局专利信息光盘检 索系统CNPAT ABS 中的数据来构建上海专利统计分析 数据库 2 上海专利统计分析系统简介 上海专利统计分析系统是由上海大学开发完成的 系 统前台开发工具Delphi 710 后台数据库管理系统为Access 2000 前台应用程序通过Delphi 710控件面板中所提供ADO 数据访问对象控件建立了与后台数据库的数据传送渠道 本系统提供了单项统计和组配统计功能 同时也提供了系 统所必备的其他功能 如数据的打印 复制 帮助等 这 些功能主要是由下面两个程序模块实现的 分别为数据统 计模块 数据转换模块 系统程序流程见图1 211 数据统计模块 通过对数据转换模块的调用 实现CNPAT ABS 数 据库记录格式到上海专利指标数据库记录格式的转换 并 添加新的专利数据记录到专利指标数据库中 从而可以随 着专利数据的更新而不断更新本数据库 在这些专利数据 基础上 就能够实现本系统的统计分析功能 根据用户实 际工作需要 我们确定了单项统计和组配统计 其中单项 图1 上海专利统计分析系统程序流程图 统计功能有 专利权人统计 IPC分类统计和年度统计 51 2004年1月第1期 January12004No 1 理 论 探 索 1994 2009 China Academic Journal Electronic Publishing House All rights reserved 组配统计功能有 专利权人和IPC组配统计 专利权人和 年度组配统计 IPC和年度组配统计 IPC号和专利权人组 配统计 年度和IPC号组配统计 年度和专利权人组配统 计 212 数据转换模块 本模块是数据统计模块功能实现的基础 实现了大量 具有不同特征专利数据的自动化处理工作 本模块包括一 个文本文件数据读取函数和一个缓冲区数据读取函数 该 模块是本课题的技术难点之一 也是本篇文章所关注的主 要方面 213 专利指标数据库 PAT ABS 有发明 实用新型和外观设计三种类型数 据库 在这三种数据库中 每一个记录有以下字段组成 记录号 代理人 地址 发明 设计 人 分类号 公开 公告 号 公开 公告 日 名称 申请 专利 号 申 请 专利权 人 申请日 说明书光盘号 摘要 主分类 号 主权项 专利代理机构 法律状态公告日 法律状态 申请号 授权公告号 颁证日 法律状态公告日 法律状 态 其中公开 公告 日字段类型是 日期类型 摘要 主权项两字段类型为 备注类型 其它字段为 文本类 型 考虑到所要开发数据库的实际需要 在构建上海专利 指标数据库时 我们选择了其中15个字段描述一条专利数 据记录 其分别为 代理人 地址 发明 设计 人 分 类号 公开 公告 号 公开 公告 日 名称 申请 专利 号 申请 专利权 人 申请日 说明书光盘号 主分类号 专利代理机构 摘要 主权项 原始数据是通 过中国专利知识产权局的专利信息光盘检索系统CNPAT ABS 1985 2001 直接检索获得的 检索表达式为 地址 上海 命中记录32 747个 由若干个文本文件来 存储这些记录 3 数据转换模块的程序流程和实现方法 数据转换模块的程序流程见图 2 数据转换模块源程 序略 311 类的方法 数据成员和重要函数说明 根据需要 我们定义了一个类Tpatten 该类继承于ob2 ject Tpatten中包括一个procedure openfn fn3 string 过程 function getonerec boolean和function getpos integer函数 专 有数据成员部分定义了3个变量 分别为buf cursp nextsp 其中第一个变量类型是数组数据类型 用来保存从 转换文件中所获得的数据 另2个变量是字符型指针变量 用来存储指向一条专利记录的 记录号 字段内容的第一 个字符和下一条专利记录 记录号 字段的前一个字符 实际上 nextsp和cursp两者的差值基本上就是一条专利记 录的长度 公用数据成员部分主要定义了一个jltype记录数 据类型的变量recp和整型变量fsize recp变量用来存储来 自数据缓冲区数组中的数据 fsize变量用来保存转换文件 的长度 其中jltype记录数据类型的具体数据结构如下 type jltype record ADOTDSDLR String 100 代理人 ADOTDSDZ String 100 地址 图2 数据转换块程序流程图 ADOTDSFMS JR String 100 发明 设计 人 ADOTDSFLH String 50 分类号 ADOTDSGKH String 50 公开 公告 号 ADOTDSGKR TDateTime 公开 公告 日 ADOTDSMC String 100 名称 ADOTDSSQH String 50 申请 专利 号 ADOTDSSQR String 100 申请 专利权 人 ADOTDSSQRi TDateTime 申请日 ADOTDSCDH String 50 说明书光盘号 ADOTDSZY array 0 9999 of char 摘要 ADOTDSZFLH String 50 主分类号 ADOTDSZQX array 0 9999 of char 主权项 ADOTDSDLJG String 100 专利代理机构 end 下面介绍几个在本模块中所用到的重要函数 Procedure Blockread Var F File Var Buffer Var Count Longint var Result Longint 从无类型变量F读取Count 个记录到变量Buffer中 一般一个记录系指包含128字节的 块 但可以使用带有参数的Reset来改变从128到不同字节 块大小 实际读取的字节数为Buffer3128 可选参数Result 表示实际读取的记录个数 但总的字节大小不能超过 61 2004年1月第1期 January12004No 1 理 论 探 索 1994 2009 China Academic Journal Electronic Publishing House All rights reserved 64K B Function SearchBuf char3Buf int BufLen int SelStart int SelLength AnsiString SearchString TStringSearchOptions Op2 tions TStringSearchOptions soDown 本函数功能是在文 本数据缓冲区里查找一个指定的字符串 并返回第一个匹 配字符串的首字符地址 其中参数Buf是查找的文本数据 缓冲区 参数BufLen是文本数据缓冲区的长度 单位是字 节 参数SelStart是查找的起始位置 参数SelLength是指 要查找的字符数量 参数SearchString是在Buf中要查找的 字符串 可选参数Options是记录类型变量 决定查找是否 区分大小写 是否完全匹配以及前向或后向查找的起始位 置 Procedure Reset Var F File Var Result Longint 为读 数据而打开已存在的文件 并把文件指针移到文件首 可 选参数Result为设置所读取的每个数据块的大小 Function LeftbStr const AText string const ACount Inte2 ger string返回字符串Atext左边的ACount个字符 312 专利数据由文本文件存储到数据缓冲区的读 取函数 openfn 本函数主要是把文本文件中的数据全部读取出来 并 存储到数组buf中 这里我们暂且称之为数据缓冲区数组 具体操作过程如下 首先说明了一个和buf变量类型相同 的并可以存储32 767个字节的数组变量temp blockread函数 直接把读取的数据赋值给temp数组 temp数组再把所存储 的值赋值到buf数组 然后调用本函数所传递的文件名参 数赋值给一个字符串变量fn 利用assign函数把文件名字 符串fn赋给文件变量ff 程序对文件变量ff的操作代替了 对文件fn的操作 再用reset函数打开要读的文件 Result 1 这样我就已经完成了读取文件的准备工作 接下来 就从已打开的文件ff里读取数据 所用到关键程序语句为 repeat blockread ff temp 32767 readbyte for i 0 to readbyte 1 do buf count i temp i count count readbyte until readbyte 0 这个语句块的意思是每次从文件ff中读取32 767个字 节数据到过渡数组变量temp中 再通过一个For循环把所 读取的数据存储到数据缓冲区buf数组变量 重复上面的 循环直到从文件ff中实际读取的数据为0止 这个循环结 束后 就完成了从文本文件中提取所需要数据到数据缓冲 区buf数组变量中 最后利用searchbuf函数在整个buf数组 中查找第一个字符串 记录号 的地址 并存储在 cursp指针变量 我们注意到 cursp指针变量存储的地址指 向的是 记录号 的前一个字符 而不是记录号字段 的内容 所以必须改变cursp值以指向记录号字段值的第一 个字符 313 专利数据由数据缓冲区数组存储到专利指标 数据库的读取函数 getonerec 本函数主要是把数据缓冲区buf数组里的数据按照单 条专利记录形式读取到前面所定义的记录类型变量recp 中 getonerec返回的是逻辑值 数据统计模块中的N3Click 函数通过这个值来判断buf数组中是否还存在专利数据 如果为真继续调用getoner