Jena_中文教程_本体API(经典)
- 格式:pdf
- 大小:280.82 KB
- 文档页数:46
1、OntModel ontModel = ModelFactory.createOntologyModel();Jena通过model包中的ModelFactory创建本体模型,ModelFactory是Jena提供用来创建各种模型的类,在类中定义了具体实现模型的成员数据以及创建模型的二十多种方法。
该语句不含参数,应用默认设置创建一个本体模型ontModel,也就是说:它使用OWL语言、基于内存,支持RDFS推理。
可以通过创建时应用模型类别(OntModelSpec)参数创建不同的模型,以实现不同语言不同类型不同推理层次的本体操作。
例如,下面的语句创建了一个使用DAML语言内存本体模型。
直观地讲,内存模型就是只在程序运行时存在的模型,它没有将数据写回磁盘文件或者数据库表。
OntModel ontModel = ModelFactory.createOntologyModel( OntModelSpec.DAML_MEM );更多类型设置可以参照OntModelSpec类中的数据成员的说明。
2、ontModel.read("file:D:/temp/Creatrue/Creature.owl");读取的方法是调用Jena OntoModel提供的Read方法。
Read方法也有很多重载,上面调用的方法以文件的绝对路径作为参数。
其他的方法声明如下read( String url );read( Reader reader, String base );read( InputStream reader, String base );read( String url, String lang );read( Reader reader, String base, String Lang );read( InputStream reader, String base, String Lang );3、OntModel m = ModelFactory.createOntologyModel();OntDocumentManager dm = m.getDocumentManager();创建一个文档管理器并将它与以创建的本体模型关联。
SL4A之Py thon资源中文化项目ApiRefe rence!Activit yresul tfacad e∙setresu ltbool ean∙setresu ltbool eanarr ay∙setresu ltbyte∙setresu ltbyte array∙setresu ltchar∙setresu ltchar array∙setresu ltdoub le∙setresu ltdoub learra y∙setresu ltfloa t∙setresu ltfloa tarray∙setresu ltinte ger∙setresu ltinte gerarr ay∙setresu ltlong∙setresu ltlong array∙setresu ltseri alizab le∙setresu ltshor t∙setresu ltshor tarray∙setresu ltstri ng∙setresu ltstri ngarra y!Alarmma nagerf acade∙cancelr epeati ng∙schedul eabsol ute∙schedul einexa ctrepe ating∙schedul erelat ive∙schedul erepea ting!Android facade∙getclip board∙getinpu t∙getinte nt∙getpack agever sion∙getpack agever sionco de∙getpass word∙log∙maketoa st∙notify∙require dversi on∙sendema il∙setclip board∙startac tivity∙startac tivity forres ult∙vibrate!Applica tionma nagerf acade∙getlaun chable applic ations∙getrunn ingpac kages∙launch!Battery manage rfacad e∙battery checkp resent∙battery gethea lth∙battery getlev el∙battery getplu gtype∙battery getsta tus∙battery gettec hnolog y∙battery gettem peratu re∙battery getvol tage∙battery startm onitor ing∙battery stopmo nitori ng∙readbat teryda ta!Bluetoo thfaca de∙bluetoo thacce pt∙bluetoo thconn ect∙bluetoo thgetc onnect eddevi cename ∙bluetoo thmake discov erable∙bluetoo thread∙bluetoo thread line∙bluetoo thread ready∙bluetoo thstop∙bluetoo thwrit e∙checkbl uetoot hstate∙toggleb luetoo thstat e!Cameraf acade∙camerac apture pictur e∙camerai nterac tiveca pturep icture !Commoni ntents facade∙pick∙scanbar code∙search∙view∙viewcon tacts∙viewhtm l∙viewmap!Conditi onmana gerfac ade∙onringe rsilen t!Contact sfacad e∙contact sget∙contact sgetat tribut es∙contact sgetco unt∙contact sgetid s∙pickcon tact∙pickpho ne!Eventfa cade∙posteve nt∙receive event∙waitfor event!Locatio nfacad e∙geocode∙getlast knownl ocatio n∙readloc ation∙startlo cating∙stoploc ating!Mediare corder facade∙recorde rcaptu revide o∙recorde rstart microp hone∙recorde rstop∙startin teract ivevid eoreco rding!Phonefa cade∙checkne tworkr oaming∙getcell locati on∙getdevi ceid∙getdevi cesoft wareve rsion∙getline1numbe r∙getneig hborin gcelli nfo∙getnetw orkope rator∙getnetw orkope ratorn ame∙getnetw orktyp e∙getphon etype∙getsimc ountry iso∙getsimo perato r∙getsimo perato rname∙getsims erialn umber∙getsims tate∙getsubs criber id∙getvoic emaila lphata g∙getvoic emailn umber∙phoneca ll∙phoneca llnumb er∙phonedi al∙phonedi alnumb er∙readpho nestat e∙stoptra ckingp honest ate!Pulsege nerato rfacad e∙pulsege nerato rgethz∙pulsege nerato rgethz sample s∙pulsege nerato rgetle ftpuls ems∙pulsege nerato rgetle ftpuls eperce nt∙pulsege nerato rgetle ftpuls esampl es∙pulsege nerato rgetri ghtpul sems∙pulsege nerato rgetri ghtpul seperc ent∙pulsege nerato rgetri ghtpul sesamp les ∙pulsege nerato rispla ying∙pulsege nerato rrun∙pulsege nerato rsethz percen t∙pulsege nerato rsetle ftpuls eperce nt∙pulsege nerato rsetri ghtpul seperc ent∙pulsege nerato rstop∙pulsege nerato rtoggl einver ted∙pulsege nerato rtoggl eplayb ack∙pulsege nterat orseth z!Sensorm anager facade∙readsen sors∙sensors getacc uracy∙sensors getlig ht∙sensors readac celero meter∙sensors readma gnetom eter∙sensors reador ientat ion∙startse nsing∙stopsen sing!Setting sfacad e∙checkai rplane mode∙checkri ngersi lentmo de∙checksc reenon∙getmaxm ediavo lume∙getmaxr ingerv olume∙getmedi avolum e∙getring ervolu me∙getscre enbrig htness∙getscre entime out∙setmedi avolum e∙setring ervolu me∙setscre enbrig htness∙setscre entime out∙togglea irplan emode!Signals trengt hfacad e 需要api level 7.∙readsig nalstr engths∙starttr acking signal streng ths∙stoptra ckings ignals trengt hs!Smsfaca de∙smsdele temess age∙smsgeta ttribu tes∙smsgetm essage byid∙smsgetm essage count∙smsgetm essage ids∙smsgetm essage s∙smsmark messag eread∙smssend!Speechr ecogni tionfa cade∙recogni zespee ch!Texttos peechf acade需要api level 4.∙ttsissp eaking∙ttsspea k!Tonegen erator facade∙generat edtmft ones!Uifacad e∙addcont extmen uitem∙addopti onsmen uitem∙clearco ntextm enu∙clearop tionsm enu∙dialogc reatea lert∙dialogc reated atepic ker∙dialogc reateh orizon talpro gress∙dialogc reatei nput∙dialogc reatep asswor d∙dialogc reates eekbar∙dialogc reates pinner progre ss∙dialogc reatet imepic ker∙dialogd ismiss∙dialogg etinpu t∙dialogg etpass word∙dialogg etresp onse∙dialogg etsele ctedit ems∙dialogs etcurr entpro gress∙dialogs etitem s∙dialogs etmaxp rogres s∙dialogs etmult ichoic eitems∙dialogs etnega tivebu ttonte xt∙dialogs etneut ralbut tontex t∙dialogs etposi tivebu ttonte xt∙dialogs etsing lechoi ceitem s∙dialogs how∙webview showWakeLoc kFacad e∙wakeLoc kAcqui reBrig ht∙wakeLoc kAcqui reDim∙wakeLoc kAcqui reFull∙wakeLoc kAcqui rePart ial∙wakeLoc kRelea seWifiFac ade∙checkWi fiStat e∙toggleW ifiSta te∙wifiDis connec t∙wifiGet Connec tionIn fo∙wifiGet ScanRe sults∙wifiLoc kAcqui reFull∙wifiLoc kAcqui reScan Only∙wifiLoc kRelea se∙wifiRea ssocia te∙wifiRec onnect∙wifiSta rtScansetresu ltbool ean设置脚本被st artact ivityf orresu lt()方法调用后返回的布尔值: setresu ltbool ean(integer resultc ode:回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),boolean resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值. setresu ltbool eanarr ay设置脚本被st artact ivityf orresu lt()方法调用后返回的布尔值数组: setresu ltbool ean(integer resultc ode:回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),boolean[] resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值.setresu ltbyte设置脚本被st artact ivityf orresu lt()方法调用后返回的字节:setresu ltbyte(integer resultc ode:回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),byte resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值. setresu ltbyte array设置脚本被st artact ivityf orresu lt()方法调用后返回的字节数组:setresu ltbyte array(integer resultc ode:回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),byte[] resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值. setresu ltchar设置脚本被st artact ivityf orresu lt()方法调用后返回的字符:setresu ltchar(integer resultc ode:回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),charact er resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值. setresu ltchar array设置脚本被st artact ivityf orresu lt()方法调用后返回的字符数组:setresu ltchar array(integer resultc ode:回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),charact er[] resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值. setresu ltdoub le设置脚本被st artact ivityf orresu lt()方法调用后返回的的双精度浮点数值:setresu ltdoub le(integer resultc ode:回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),doubleresultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值.setresu ltdoub learra y设置脚本被st artact ivityf orresu lt()方法调用后返回的双精度浮点数值数组: setresu ltdoub learra y(integer resultc ode:回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),double[] resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值.setresu ltfloa t设置脚本被st artact ivityf orresu lt()方法调用后返回的的单精度浮点数值: setresu ltfloa t(integer resultc ode: 回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),float resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值.setresu ltfloa tarray设置脚本被st artact ivityf orresu lt()方法调用后返回的单精度浮点型数组: setresu ltfloa tarray(integer resultc ode: 回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),float[] resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值.setresu ltinte ger设置脚本被st artact ivityf orresu lt()方法调用后返回的整数:setresu ltinte ger(integer resultc ode: 回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),integer resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值.setresu ltinte gerarr ay设置脚本被st artact ivityf orresu lt()方法调用后返回的整型数组:setresu ltinte gerarr ay(integer resultc ode: 回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),integer[] resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值.setresu ltlong设置脚本被st artact ivityf orresu lt()方法调用后返回的长整数:setresu ltlong(integer resultc ode: 回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),long resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值.setresu ltlong array设置脚本被st artact ivityf orresu lt()方法调用后返回的长整型数组:setresu ltlong array(integer resultc ode: 回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),long[] resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值.setresu ltseri alizab le设置脚本被st artact ivityf orresu lt()方法调用后返回的可串行化的结果(seriali zable): setresu ltseri alizab le(integer resultc ode: 回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),seriali zableresultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值. setresu ltshor t设置脚本被st artact ivityf orresu lt()方法调用后返回的短整数: setresu ltshor t(integer resultc ode:: 回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),short resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值. setresu ltshor tarray设置脚本被st artact ivityf orresu lt()方法调用后返回的短整型数组: setresu ltshor tarray(integer resultc ode:: 回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),short[] resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值. setresu ltstri ng设置脚本被st artact ivityf orresu lt()方法调用后返回的字符串: setresu ltstri ng(integer resultc ode: 回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),stringresultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值. setresu ltstri ngarra y设置脚本被st artact ivityf orresu lt()方法调用后返回的字符串数组: setresu ltstri ngarra y(integer resultc ode: 回传给原始ac tivity的结果编码,常常是resu lt_can celed(0) 或者 result_ok(-1),string[] resultv alue)设置脚本执行的结果.每当脚本程序被starta ctivit yforre sult()方法调用时,由此产生的in tent将会包含scri pt_res ult和给定的值. cancelr epeati ng取消脚本的定时执行计划:cancelr epeati ng(stringscript)取消给定脚本所有的定时(重复)执行计划schedul eabsol ute定时执行传入的脚本,从开机后开始计时:schedul eabsol ute(stringscript:要执行的脚本,doubletime: 脚本延迟执行时间, 开机(epoch?)后延迟一定时间执行脚本,延迟的时间由此参数指定boolean wakeup[optiona l, default true]: 是否唤醒处于黑屏状态的移动设备)定时执行传入的脚本,从开机后开始计时schedul einexa ctrepe ating每隔一段端时间执行一次脚本(时间间隔不太精确)schedul einexa ctrepe ating(doubleinterva l: 两次执行之间的时间间隔,以秒为单位stringscript:要执行的脚本,boolean wakeup[optiona l, default true]: 是否唤醒处于黑屏状态的移动设备)从脚本被调用开始,每隔一段时间执行一次脚本(不是很精确),但是比sche dulere peatin g方法省电schedul erelat iv e定时执行脚本,延迟时间从方法被调用时开始计算schedul erelat ive(stringscript:要执行的脚本,doubleseconds fromno w: 从现在起,延迟一定时间执行脚本,延迟时间由此参数指定boolean wakeup[optiona l, default true]: 是否唤醒处于黑屏状态的移动设备)从脚本被调用开始,延迟数秒钟后执行脚schedul erepea ting每隔一段时间执行一次脚本(精确)schedul erepea ting(doubleinterva l: 两次执行之间的时间间隔,以秒为单位stringscript:要执行的脚本,doublefirstex ecutio ntime[optiona l]: 第一次执行脚本所需要延迟的时间,从开机(epoch?)开始计算boolean wakeup[optiona l, default true]:是否唤醒处于黑屏状态的移动设备)每隔一段时间执行一次脚本,从开机开始计算getclip board读取剪贴板中的文本getclip board()从剪贴板中读取文本。
利用jena API查询OWL本体(可以作为学习本体和jena接口的一个经典实例)2008-05-10 15:12最近在学习本体和语义网。
学习了OWL,也尝试着用了一下jena API对OWL 本体进行查询。
1.本体简介“本体”这个术语来自于哲学,它是研究世界上的各种实体以及他们是怎么关联的科学。
本体是对应用领域概念化的显示的解释说明,为某领域提供了一个共享通用的理解,从而无论是人还是应用系统之间都能够有效地进行语义上的理解和通讯。
studer认为,本体是:“共享概念模型的明确的形式化规范说明”。
这包括了4层含义:概念化(conceptualization)通过抽象出客观世界中一些现象的相关概念而得到的模型,其表示的含义独立于具体的环境状态明确(explicit)所使用的概念及使用这些概念的约束都有明确的定义形式化(formal)本体应是计算机可读的。
共享(share)知识本体中体现的是共同认可的知识,反映的是相关领域中公认的概念集,它所针对的是团体而不是个体。
本体的目标是捕获相关的领域的知识,提供对该领域知识的共同理解,确定该陋域内共同认可的词汇,并从不同层次的形式化模式上给出这些词汇和词汇之间相互关系的明确定义。
2.OWL简介2003 年7 月W3C 公布了OWL Web ontology 语言的最初工作草案,2004 年2 月10 日,OWL 正式成为W3C 推荐的标准。
OWL 和DAML + OIL 非常相近,只有一些微小的变化。
DAML + OIL 和OWL 的语义都基于描述逻辑(descriptionlogic ,DL) 。
OWL 作为W3C 推荐的标准本体表示语言,它的最大特点是关联描述逻辑, 通过对概念、概念属性及其相互间关系的描述,构成概念的复杂关系网络,这就意味着描述逻辑推理机可以推理OWL 本体。
OWL 有3 个表达能力递增的子语言:OWL Lite ,OWL DL , OWL Full[20 ] 。
Jena文档《An Introduction to RDF and the Jena RDF API》的中文版入门经典材料RDF和Jena RDF API入门________________________________________前言本文是一篇对W3C的资源描述框架(RDF)和Jena(一个Java的RDFAPI)的教程性介绍。
本文是为那些不熟悉RDF的,以及那些通过建立原形可以达到最好学习效果的,或是因为其他原因希望能快速操作Jena的程序员而写的。
我们假设读者在阅读本文前已具有一定的XML和Java知识。
如果读者在没有理解RDF数据模型的基础上就迅速进入操作阶段,往往会导致失败和失望。
然而,如果光学习数据模型又是十分枯燥乏味的,并常常会导致曲折的形而上学的难题。
更好的学习办法是在理解数据模型的同时练习操作它。
可以先学习一点数据模型再动手试一试。
然后在学习一点再试一试。
这样一来就能达到理论实践相结合的效果。
数据模型本身十分简单,所以学习过程不会太长。
RDF具有XML的语法,所以许多熟悉XML的人就会认为以XML语法的形式来思考RDF。
然而,这是不对的。
RDF应该以它数据模型的形式来被理解。
RDF数据可是用XML来表示,但是理解数据模型的重要性更在理解此语法重要性之上。
JenaAPI的一个运行例子,包括本教程中所有例子的工作源代码都可以在/semweb/下载。
________________________________________目录1.导言2.陈述Statements3.RDF写操作4.RDF读操作5.6.JenaRDF包7.操纵模型8.查询模型9.对模型的操作10.容器Containers11.关于Literals和数据类型的更多探讨12.术语表________________________________________导言资源描述框架是(RDF)是描述资源的一项标准(在技术上是W3C的推荐标准)。
Jenkins 操作手册苏州测试部目录第 1 章概述 (1)第 2 章基础篇 (3)2.1 Jenkins安装 (3)2.1.1资源下载 (3)2.1.2运行Jenkins的前提 (3)2.1.3 Jenkins启动 (3)2.1.4 Jenkins访问 (4)2.2 Jenkins基本设置 (8)2.2.1设置JDK (9)2.2.2设置ANT (9)2.2.3配置邮件信息 (10)2.3 创建任务 (10)2.4 运行并监控构建作业 (15)2.4.1主控制面板 (15)2.4.2手动构建一个任务 (15)2.4.3任务构建状态 (16)第 3 章提高篇: (18)3.1 插件管理: (18)3.1.1 FindBugs 插件设置 (18)3.1.2 Ftp插件配置 (20)3.1.3 Junit插件 (21)3.1.4通过远程访问触发 (21)3.1.5 WebLogic.Deployer (21)3.2 安全篇 (22)3.3 个性化设置 (23)第 4 章常见问题 (25)4.1 edit lock问题 (25)4.2 IOException: Unable to delete问题 (25)4.3 not recognized as a valid application type 问题 (26)第 5 章其它说明 (27)5.1 CI挑战 (28)5.2 ANT基本知识 (28)第 1 章概述1.1什么是持续集成随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。
尤其是近些年来,敏捷(Agile)在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。
它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。
Jena 2 推理支持这节文档描述了目前在jena 2里可用的推理支持。
它包括一个大致的推理API的大纲,还包括在jena 2中提供的具体规则引擎的细节以及对RDFS和OWL推理的配置的细节。
我们在这里没有介绍所有API的细节:请参考jena2 javadoc来获得API的所有细节。
注意,这是这个文档的一个最初的版本,可能会出现一些错误以及不一致的地方,所以欢迎您的反馈。
目录:1. 推理支持概述2. 推理API3. RDFS推理机4. OWL 推理机5. DAML 支持6. The transitive reasoner7. 一般目的的规则引擎8. 扩展推理支持9. 未来推理支持概述设计Jena2 推理子系统是用来允许一系列推理引擎或reasoner被插入(be plugged into)Jena。
这样的引擎被用来获取额外的rdf 断言,这些断言是从一些带有任何可选的本体信息base rdf 以及和reasoner一起的公理和规则得到的。
这个机制的主要的应用是支持使用RDFS和OWL语言,这些语言允许从实例数据和类描述中推断出额外的事实。
然而,这种机制被设计得非常一般,特别是,它包括一个可以用于许多RDF处理或转换任务的一般的规则引擎。
我们尽量使用术语inference指获取额外信息的抽象过程,用术语reasoner来指执行任务的一个具体的代码对象。
这样的应用是任意的,所以,如果我们将像reasoning和inference engine 的术语弄混淆了,请原谅我们。
全部的推理机制可用下图来描述:应用程序一般通过使用ModelFactory获得推理机制,将一个数据集和一些reasoner联系起来来创建一个新的Model。
对新创建的Model的查询不仅返回在原始数据中出现的陈述,还将返回那些由reasoner执行的使用规则和其他推理机制得来的陈述。
正如图中所述,推理机制实际上是在Graph SPI的水平之上执行的,所以,任何不同的Model 接口都可以被构造成一个推理Graph。
1 —简介本章介绍Java 本地接口(Java Native Interface,JNI)。
JNI 是本地编程接口。
它使得在 Java 虚拟机(VM)内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行互操作。
JNI 最重要的好处是它没有对底层 Java 虚拟机的实现施加任何限制。
因此,Java 虚拟机厂商可以在不影响虚拟机其它部分的情况下添加对 JNI 的支持。
程序员只需编写一种版本的本地应用程序或库,就能够与所有支持 JNI 的Java 虚拟机协同工作。
本章论及以下主题:•Java 本地接口概述•背景•目标•Java 本地接口方法•利用 JNI 编程•JDK 1.1。
2 中的变化Java 本地接口概述尽管可以完全用 Java 编写应用程序,但是有时单独用 Java 不能满足应用程序的需要。
程序员使用 JNI 来编写Java 本地方法,可以处理那些不能完全用Java 编写应用程序的情况。
以下示例说明了何时需要使用 Java 本地方法:•标准 Java 类库不支持与平台相关的应用程序所需的功能。
•已经拥有了一个用另一种语言编写的库,而又希望通过 JNI 使 Java 代码能够访问该库。
•想用低级语言(如汇编语言)实现一小段时限代码。
通过用 JNI 编程,可以将本地方法用于:•创建、检查及更新 Java 对象(包括数组和字符串)。
•调用 Java 方法。
•捕捉和抛出异常。
•加载类和获得类信息。
•执行运行时类型检查。
也可以与调用 API一起使用 JNI,以允许任意本地应用程序嵌入到 Java 虚拟机中。
这样使得程序员能够轻易地让已有应用程序支持 Java,而不必与虚拟机源代码相链接.背景目前,不同厂商的虚拟机提供了不同的本地方法接口。
这些不同的接口使程序员不得不在给定平台上编写、维护和分发多种版本的本地方法库。
下面简要分析一下部分已有本地方法接口,例如:•JDK 1。
易语言与WIN32 API的使用本人也是个小菜鸟啦。
今天写这个,就是为了一下比我还新手的同学参考参考的资料。
----------------------基础知识:先来了解一下,什么的动态链接库动态链接库动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。
动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。
函数的可执行代码位于一个DLL 中,该DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。
DLL 还有助于共享数据和资源。
多个应用程序可同时访问内存中单个DLL 副本的内容。
DLL 是一个包含可由多个程序同时使用的代码和数据的库。
其实你的系统就有很多的动态链接库,例如KERNEL32.DLL UESER32.DLL.....再看看,什么是API。
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
推荐API工具,是易语言自带的API助手,一般在X:\e\wizard\API助手如下图,,很好用,很强大哦。
可以看出,有了API,我们编程的生活是多么的美好,很多函数都不需要我们亲力亲为的去写,只要调用就OK了。
然后,我们来看一下数据类型。
因为在API中有很多地方使用了结构体(看百度哦),为了对这些结构体进行匹配,所以在易语言中我们也要对他建立相应的数据类型。
例如这是C语言的结构体格式SYSTEMTIME StructureThe SYSTEMTIME structure has the following form:typedef struct _SYSTEMTIME {WORD wYear;WORD wMonth;WORD wDayOfWeek;WORD wDay;WORD wHour;WORD wMinute;WORD wSecond;WORD wMilliseconds;} SYSTEMTIME;而我们如果想在易语言中实现他,就可以这样定义.版本2.数据类型系统时间_, , SYSTEMTIME.成员年, 短整数型, , , wYear.成员月, 短整数型, , , wMonth.成员星期, 短整数型, , , wDayOfWeek.成员日, 短整数型, , , wDay.成员小时, 短整数型, , , wHour.成员分, 短整数型, , , wMinute.成员秒, 短整数型, , , wSecond.成员毫秒, 短整数型, , , wMilliseconds你可能会奇怪,我怎么知道什么WORD 是什么类型。
python操作jenkinsapi的基础用法如何使用Python操作jenkinsapiJenkins是一个用于自动化构建和测试软件项目的开源工具。
jenkinsapi 是一个用于与Jenkins进行交互的Python库。
它使我们能够使用Python 脚本执行各种Jenkins操作,例如创建、启动和监视构建,获取构建信息和日志等。
在本文中,我们将逐步介绍如何使用jenkinsapi进行基本的Jenkins操作。
第一步:安装jenkinsapi库在开始之前,我们首先需要安装jenkinsapi库。
可以使用pip来安装它,打开终端并执行以下命令:pip install jenkinsapi第二步:连接到Jenkins服务器在我们开始使用jenkinsapi进行Jenkins操作之前,我们需要连接到Jenkins服务器。
首先,我们需要获取Jenkins的URL和凭据。
以下是连接到Jenkins服务器的示例代码:pythonfrom jenkinsapi.jenkins import Jenkinsjenkins_url = ' # Jenkins的URLusername = 'your_username' # Jenkins的用户名password = 'your_password' # Jenkins的密码jenkins = Jenkins(jenkins_url, username, password)请确保替换上述代码中的`jenkins_url`,`username`和`password`变量为您的Jenkins的URL、用户名和密码。
第三步:获取Jenkins的基本信息在我们连接到Jenkins服务器后,我们可以执行各种操作。
让我们首先获取Jenkins的一些基本信息,例如版本号、节点列表等。
以下是获取Jenkins 的基本信息的示例代码:pythonprint(f"Jenkins Version: {jenkins.version}")print(f"Total Executors: {jenkins.get_num_executors()}")for node_name, node in jenkins.get_nodes().items():print(f"Node Name: {node_name}")上述代码中的`version`和`get_num_executors()`函数分别返回Jenkins 的版本号和可用的执行器数。
Jena 简介一般来说,我们在Protege这样的编辑器里构建了本体,就会想在应用程序里使用它,这就需要一些开发接口。
用程序操作本体是很必要的,因为在很多情况下,我们要自动生成本体,靠人手通过Protege创建所有本体是不现实的。
Jena 是HP公司开发的这样一套API,似乎HP公司在本体这方面走得很靠前,其他大公司还在观望吗?可以这样说,Jena对应用程序就像Protege对我们,我们使用Protege操作本体,应用程序则是使用Jena来做同样的工作,当然这些应用程序还是得由我们来编写。
其实Protege本身也是在Jena的基础上开发的,你看如果Protege 的console里报异常的话,多半会和Jena有关。
最近出了一个Protege OWL API,相当于对Jena的包装,据说使用起来更方便,这个API就是Protege的OWL Plugin所使用的,相信作者经过OWL Plugin的开发以后,说这些话是有一定依据的。
题目是说用Jena处理OWL,其实Jena当然不只能处理OWL,就像Protege 除了能处理OWL外还能处理RDF(S)一样。
Jena最基本的使用是处理RDF(S),但毕竟OWL已经成为W3C的推荐标准,所以对它的支持也是大势所趋。
好了,现在来点实际的,怎样用Jena读我们用Protege创建的OWL本体呢,假设你有一个OWL本体文件(.owl),里面定义了动物类(/ont/Animal,注意这并不是一个实际存在的URL,不要试图去访问它),并且它有一些实例,现在看如下代码:OntModel m = ModelFactory.createOntologyModel();File myFile = ...;m.read(new FileInputStream(myFile), "");ResIterator iter = m.listSubjectsWithProperty(RDF.type, m.getResource("http:// /ont/Animal"));while (iter.hasNext()) {Resource animal = (Resource) iter.next();System.out.println(animal.getLocalName());}和操作RDF(S)不同,com.hp.hpl.jena.ontology.OntModel是专门处理本体(Ontology)的,它是com.hp.hpl.jena.rdf.model.Model的子接口,具有Model的全部功能,同时还有一些Model没有的功能,例如listClasses()、listObjectProperties(),因为只有在本体里才有“类”和“属性”的概念。
上面的代码很简单,从ModelFactory创建一个OntModel,从指定文件把模型读到内存里。
再下面的代码是一个例子,作用是取出模型中所有Animal的实例(Individual,也叫个体),并打印它们的名称。
要从OntModel里取实例,也可以用listIndividuals()方法,只不过你得在得到的实例中判断它们是不是Animal的实例,我觉得不如用上面这种简易查询的方式来得方便。
Jena里扩展了很多Iterator,比如ResIterator、StmtIterator和NodeIterator等等,刚开始用会觉得很别扭,好象还不如都用java标准的Iterator,不知道Jena的设计者是怎么考虑的。
要熟练掌握还是得对整个Jena 的API有全局掌握才好。
在循环里,我们得到的每个元素都是一个Resource,因为本体里的任何东西都是资源,不论你想得到Subject、Property还是Object,在Jena里实际得到的都是资源(Resource),在Jena里,Property是Resource的子接口,而Jena并没有Subject或Object接口。
(注:在OWL本体中,Subject->Property->Object组成一个三元组,例如:张小刚->父亲->张大刚;或者:绵羊多利->rdf:type->动物,rdf:type是一个特殊的属性,表示前者是后者的实例)暂时先写到这,关于在本体中引入其他本体和使用推理,下次继续。
本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Class、Property等信息。
本文内容安排如下:Ø介绍JenaØ运行JenaØJena Ontology APIØ例子Ø参考资料一、介绍JenaJena由HP Labs()开发的Java开发工具包, 用于Semantic Web(语义网)中的应用程序开发;Jana是开源的,在下载的文档中有Jena的完整代码。
J ena框架主要包括:a)以RDF/XML、三元组形式读写RDF资源描述框架是(RDF)是描述资源的一项标准(在技术上是W3C的推荐标准),Jena文档中有一部分呢详细介绍了RDF和Jena RDF API,其内容包括对Jena RDF包的介绍、RDF模型的创建、读写、查询等操作,以及RDF容器等的讨论。
b)RDFS,OWL,DAML+OIL等本体的操作Jena框架包含一个本体子系统(Ontology Subsystem),它提供的API允许处理基于RDF的本体数据,也就是说,它支持OWL,DAML+OIL和RDFS。
本体API与推理子系统结合可以从特定本体中提取信息,Jena 2还提供文档管理器(OntDocumentManager)以支持对导入本体的文档管理。
c)利用数据库保存数据Jena 2允许将数据存储到硬盘中,或者是OWL文件,或者是关系数据库中。
本文处理的本体就是OWL文件读入的。
d)查询模型Jena 2提供了ARQ查询引擎,它实现SPARQL查询语言和RDQL,从而支持对模型的查询。
另外,查询引擎与关系数据库相关联,这使得查询存储在关系数据库中的本体时能够达到更高的效率。
e)基于规则的推理Jena 2支持基于规则的简单推理,其推理机制支持将推理器(inference reasoners)导入Jena,创建模型时将推理器与模型关联以实现推理。
Protégé是一个开源的本体编辑器(目前的版本是Protégé 3.2),用户可以在GUI环境下创建本体或者知识库。
有一种说法是:Jena对应用程序就像Protégé对我们——我们使用Protégé操作本体,应用程序则是使用Jena来做同样的工作。
当然这些应用程序还是得由我们来编写。
二、运行Jena可以在Jena的主页(/downloads.html)下载Jena的最新版本,目前是Jena2.4版本。
Jena是Java API,所以需要Java运行环境。
本文使用的是jdk1.5.0_04和Eclipse3.2。
将下载的Jena-2.4.zip解压到任意路径,解压之后生成Jena2.4文件夹,将Jena2.4 l ib下的jar文件全部加入CLASSPATH,这样就可以在任意的Java编辑器中调用Jena AP I了。
在解压目录下有一个test.bat文件,用于配置的测试。
在控制台运行此程序,如果你的配置正确,测试将顺利完成。
G:\jade\lib\jade.jar;G:\jade\lib\iiop.jar;G:\jade\lib\commons-codec\commons-codec-1.3.jar;G:\jade\lib\javaTools.jar;G:\jade\lib\http.jar;G:\jena\lib\antlr-2.7.5.jar;G:\jena\lib\arq.ja r;G:\jena\lib\arq-extra.jar;G:\jena\lib\commons-logging-1.1.jar;G:\jena\lib\concurrent.jar;G: \jena\lib\icu4j_3_4.jar;G:\jena\lib\iri.jar;G:\jena\lib\jena.jar;G:\jena\lib\jenatest.jar;G:\jena\li b\json.jar;G:\jena\lib\junit.jar;G:\jena\lib\alog4j-1.2.12.jar;G:\jena\lib\lucene-core-2.0.0.jar; G:\jena\lib\stax-api-1.0.jar;G:\jena\lib\wstx-asl-3.0.0.jar;G:\jena\lib\xercesImpl.jar;G:\jena\li b\xml-apis.jar如果使用Eclipse,则可以通过修改工程的Java创建路径的方法导入Jena jar文件。
在Eclipse下创建Java工程,右健单击工程名字,选择“属性/Properties”,在打开的对话框中选择“Java创建路径/Java Build Path”,在右边标签中选择“库/Libraries”,之后选择“添加外部文件/Add Extenal JARs”,找到Jena2.4 lib目录下的所有jar文件并将其添加到工程。
这样就可以运行Jean文档中的例子了。
三、Jena Ontology APIJena2.4的Ontology API包含在ontology包(com.hp.hpl.jena.ontology)中,可以在目录Jena-2.4 src com hp hpl jena ontology下查看所有程序的代码,Jena本体部分的说明网页是Jena-2.4 doc ontology index.html,本部分内容以及程序的编写主要参考这两个文档。
在语义网上有很多表示本体信息的本体语言,其中表达能力最强的是OWL,OWL按复杂程度分为OWL Full、OWL DL和OWL Lite三个版本。
其他的本体语言还有RDFS、DAML+OIL。
Jena Ontology API为语义网应用程序开发者提供了一组独立于具体语言的一致编程接口。
Jena提供的接口本质上都是Java程序,也就是.java文件经过javac之后生成的.class 文件。
显然,class文件并不能提示本体创建使用的语言。