以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  语义网研究(W3CHINA)QQ群聊天记录(2008年11月19日)  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=69752)


--  作者:geyu
--  发布时间:11/23/2008 9:26:00 PM

--  语义网研究(W3CHINA)QQ群聊天记录(2008年11月19日)
2008年11月19日(星期三)的聊天记录
    共155条  123456   转到/6页  

胖波  
(6598782) 08:53:49


古先生  
(308394754) 08:54:22
您早!  

皮皮  
(277582907) 08:54:30
大家都早  

胖波  
(6598782) 08:55:17
我刚到实验室,你们呢?

nirvana  
(3491035) 08:55:36
我刚到办公室  

汤包  
(292390280) 08:55:42
[自定义表情]  

汤包  
(292390280) 10:37:40
请问如何读取子类的实例?比如有个person类,person有个子类student,student有个实例peter,那我如何从person这一层读取peter?  

一一  
(13176246) 10:38:15
person.getsubclasses  

一一  
(13176246) 10:38:26
然后你就有一个set  

一一  
(13176246) 10:39:20
做一个循环,subclasses[i].getindividuals  

汤包  
(292390280) 10:39:20
我试试  

一一  
(13176246) 10:39:30
也许不同api有不同,但基本都是这个路子  

汤包  
(292390280) 10:39:37
嗯嗯  

展翅飞鹰  
(420308505) 10:47:46
大家好,我昨天问的问题,有哪位高手能解答一下?  

一一  
(13176246) 10:48:27
问题重复下?  

展翅飞鹰  
(420308505) 10:49:12
我在jena程序中用createClass()方法创建了一个类,但是程序运行结束后这个类就不在显示了,请问大家:怎么才能把创建的类保存在本体文件内?  

胖波  
(6598782) 10:50:50
你为啥一点文档都不看呢?

胖波  
(6598782) 10:51:03
Jena.dumpRDF就可以了

小明  
(380857001) 10:51:12
汤包的问题,试试这个方法:protege提供的api,getInstances() 方法,指定参数为true  

展翅飞鹰  
(420308505) 10:51:21
我看了,那是关于rdf的,我不知道owl行不行  

小明  
(380857001) 10:51:34
可以的  

展翅飞鹰  
(420308505) 10:51:39
我昨天就问你了,可是你没告诉我啊  

胖波  
(6598782) 10:52:01
让你自己看看文档,你就是不看

一一  
(13176246) 10:52:42
一般来讲,操作本地文件,都是先利用本体文件创建一个ontology  

展翅飞鹰  
(420308505) 10:52:59
我看了,我找到IO那了,但是里面没有用createclass创建类的  

(_夏oО風﹎  
(83907022) 10:53:05
谁知道TKDE是什么会议啊?  

一一  
(13176246) 10:53:07
如果本地文件不存在,则就是产生这个文件了  

汤包  
(292390280) 10:53:09
可以了,感谢  

一一  
(13176246) 10:53:36
然后对ontology进行addclass之类的操作  

胖波  
(6598782) 10:53:36
我建议大家还是用protege api来操控owl文件

2008年11月19日(星期三)的聊天记录
    共155条  123456   转到/6页  

一一  
(13176246) 10:53:44
最后写入  

胖波  
(6598782) 10:53:47
比jena封装的方便一些

一一  
(13176246) 10:53:55
恩,最好用protege api, owl api来操作ontology  

汤包  
(292390280) 10:54:06
已经用了jena了  

展翅飞鹰  
(420308505) 10:54:12
但是我用的是一个已经建立好的本体文件啊  

小明  
(380857001) 10:54:15
我也觉得protege封装的挺人性化的  

一一  
(13176246) 10:54:15
tkde是期刊  

一一  
(13176246) 10:54:20
ieee transaction  

展翅飞鹰  
(420308505) 10:54:22
怎么能附加进去啊  

(_夏oО風﹎  
(83907022) 10:54:29
什么期刊?  

一一  
(13176246) 10:54:33
三个字,慢慢看文档和实例  

一一  
(13176246) 10:54:40
其实owl api有很详细的例子  

一一  
(13176246) 10:54:44
google owlapi  

汤包  
(292390280) 10:54:48
用protege api 把本体放入mysql的时候只有一张表吧  

(_夏oО風﹎  
(83907022) 10:55:38
iamwym 什么期刊 中文是啥?  

胖波  
(6598782) 10:56:07
真的搞开发,还是先把文档好好的读一读,在动手

胖波  
(6598782) 10:56:16
不然全都不懂,寸步难行

一一  
(13176246) 11:01:20
这期刊哪来中文,自己google下不就完了  

一一  
(13176246) 11:01:41
呵呵,我觉得至少文档是作为手册参考  

一一  
(13176246) 11:02:06
一般做不出来肯定不是人家api不对,多查查文档就好了  

胖波  
(6598782) 11:02:54


一一  
(13176246) 11:03:02
比如板上一个月经贴就是,为什么没有基于.net的owl parser  

一一  
(13176246) 11:03:25
现在都什么年代了,java和.net的互操作已经做了很好了  

一一  
(13176246) 11:04:16
这种早就不是什么问题,我以前一直用java  

一一  
(13176246) 11:04:44
6,7年以前用c++做的东西,用jni处理一下继续可以用  

一一  
(13176246) 11:05:02
现在公司要求用.net,java api转换一下,也可以用  

一一  
(13176246) 11:05:43
花一个小时查查,会发现其实你在做的东西,很多都有api了  

胖波  
(6598782) 11:06:42


汤包  
(292390280) 16:51:30
请问一下,想找出所有以classA为range的属性该怎么做啊  

Anning  
(6419157) 17:02:39
你是想用SPARQL查询实现还是本体操作实现啊?  

2008年11月19日(星期三)的聊天记录
    共155条  123456   转到/6页  

汤包  
(292390280) 17:03:31
想用SPARQL查询实现  

Anning  
(6419157) 17:08:29
这应该很简单吧   

Anning  
(6419157) 17:09:18
SELECT ?p WHERE{ ?p rdfs:Range ns:classA }  

汤包  
(292390280) 17:10:08
我这么写怎么出不来。  

Anning  
(6419157) 17:10:48
有这样的情况   

Anning  
(6419157) 17:10:58
比如p是一个属性  

Anning  
(6419157) 17:11:10
它的range是classA的一子类  

Anning  
(6419157) 17:11:36
SPARQL没有推理,所以不能得到p的range是classA   

Anning  
(6419157) 17:12:32
但是我在我这里试了  

Anning  
(6419157) 17:12:37
我这边没有问题啊  

Anning  
(6419157) 17:12:56
返回的就是所有以一个本体类为range的属性集合  

汤包  
(292390280) 17:13:04
我就是查出来的不完整,可能就是你说的问题,是子类的情况  

Anning  
(6419157) 17:13:28
你是查不出来,还是查不完整啊?  

汤包  
(292390280) 17:13:35
不完整,呵呵  

Anning  
(6419157) 17:13:37
还有一种情况就是,  

Anning  
(6419157) 17:14:00
有一个属性p。它的range是classA 并上 classB  

Anning  
(6419157) 17:14:35
你也不会得到p的range 是classA   

汤包  
(292390280) 17:14:46
那还是要用到推理比较合适,是吗?  

Anning  
(6419157) 17:14:47
如果想查全,那有有jena了  

Anning  
(6419157) 17:14:53
用jena   

汤包  
(292390280) 17:15:36
能说一下怎么实现吗  

Anning  
(6419157) 17:20:20
你需要使用reasoner  

Anning  
(6419157) 17:21:07
比如   

Anning  
(6419157) 17:21:15
你用的是ontModel   

Anning  
(6419157) 17:21:55
首先ontModel.listObjectProperties()得到所有的属性  

汤包  
(292390280) 17:22:39
恩  

Anning  
(6419157) 17:22:52
然后用reasoner得到所有classA的子类  

Anning  
(6419157) 17:23:49
跟着一个if 判断  

Anning  
(6419157) 17:24:40
eitr.hasRange(classA or classA 的子集)  

Anning  
(6419157) 17:25:00
eitr是返回的属性的迭代值   

2008年11月19日(星期三)的聊天记录
    共155条  123456   转到/6页  

Anning  
(6419157) 17:25:43
判断每个eitr.hasRange(classA or classA 的子集),如果是当然就返回该属性了  

汤包  
(292390280) 17:26:22
eitr就是ontModel中的所有属性?  

Anning  
(6419157) 17:26:46
ExtendedIterator eitr = ontModel.listObjectProperties();  

汤包  
(292390280) 17:26:56
嗯嗯  

汤包  
(292390280) 17:27:14
我再试试,谢谢啊! 有问题还要请教你  

汤包  
(292390280) 17:27:17
  

胖波  
(6598782) 17:27:34
Anning真厉害啊

Anning  
(6419157) 17:27:36
while(eitr.hasNext) {    if (........) }  

一一  
(13176246) 17:28:00
直接用foreach也行,呵呵  

Anning  
(6419157) 17:28:08
是的,  

Anning  
(6419157) 17:28:18
非常好用   

wan  
(1009023) 17:29:30
为什么jena没有把这样的常用功能做成API?  

胖波  
(6598782) 17:30:13
这个你的问问jena的作者了

一一  
(13176246) 17:30:54
我来告诉你吧  

wan  
(1009023) 17:30:57
我以前也遇到类似情况,也是只好自己写程序查找  

一一  
(13176246) 17:31:23
jena的作用其实根本不是提供这类比较high level api  

一一  
(13176246) 17:31:49
因为它一开始就不是去处理owlde1  

一一  
(13176246) 17:31:58
owl  

一一  
(13176246) 17:32:04
而是处理rdf  

wan  
(1009023) 17:32:24
那有没有工具有这类高层API?  

Anning  
(6419157) 17:32:45
说到底,jena也还是RDF的工具  

一一  
(13176246) 17:32:48
这就为什么protege自己写了自己的api,基于jena arp等  

一一  
(13176246) 17:33:08
基本上我觉得用下来最简单的,就是protege api和owlapi  

一一  
(13176246) 17:33:27
这个简直是每周都要打一遍的  

wan  
(1009023) 17:33:41
我当时就是用protege,但在它的API里也没有找到  

Anning  
(6419157) 17:33:47
(*^__^*) 嘻嘻……,I like protege api   

一一  
(13176246) 17:34:02
那我只能说你没仔细认真找了  

胖波  
(6598782) 17:34:10
Anning,protege api除了那些例子,还有没有别的好点的文档了?

一一  
(13176246) 17:34:19
因为实在是不能更简单找到了  

一一  
(13176246) 17:34:32
不过对于入门,我还是推荐用owl api吧  

2008年11月19日(星期三)的聊天记录
    共155条  123456   转到/6页  

Anning  
(6419157) 17:34:48
mailing list也能学到很多  

一一  
(13176246) 17:34:53
包括了很多api,包括rule,也有reasoner的接口,配合fact++很好用  

Anning  
(6419157) 17:35:14
我好多时候都通过protege的mailing list解决  

胖波  
(6598782) 17:35:16
有没有tutorial?

Anning  
(6419157) 17:36:49
什么的tutorial? owl api?   

Anning  
(6419157) 17:36:51
http://owlapi.sourceforge.net/  

胖波  
(6598782) 17:36:59
protege

一一  
(13176246) 17:37:20
owlapi有很多example  

一一  
(13176246) 17:37:25
基本上够入门了  

wan  
(1009023) 17:37:41
我记不太清了,当时好像是要找以classA为range的所有domain类  

胖波  
(6598782) 17:37:45
protege api里的那个repository你们用过么?

胖波  
(6598782) 17:38:22
Repository Manager

Anning  
(6419157) 17:39:14
用过  

胖波  
(6598782) 17:39:29
这个怎么设置,你有没有小例子呢?

Anning  
(6419157) 17:40:59
稍等  

胖波  
(6598782) 17:41:07
好啊,谢谢

Anning  
(6419157) 17:42:27
try {         Reader instReaderFromString= new StringReader(this.fileContent); // Reader instReaderFromFile = new InputStreamReader(new FileInputStream(instanceFilePath));         JenaOWLModel instModel = ProtegeOWL.createJenaOWLModel();         RepositoryManager manager = instModel.getRepositoryManager();         manager.addProjectRepository(new HTTPRepository (new URL (schema_documentURL)));         manager.addProjectRepository(new HTTPRepository (new URL (schema_themenURL)));         manager.addProjectRepository(new HTTPRepository (new URL (schema_timeURL)));         manager.addProjectRepository(new HTTPRepository (new URL (schema_locationURL)));     //    manager.addP

Anning  
(6419157) 17:42:28
rojectRepository(new LocalFolderRepository (new File (schemaFileFolderPath)));         manager.addGlobalRepository(new LocalFolderRepository(new File (sysontologyFileFolderPath)));         manager.addProjectRepository(new LocalFileRepository (new File (ruleFilePath)));         instModel.load(instReaderFromString, FileUtils.langXMLAbbrev);                  OntModel ontModel = instModel.getOntModel();         this.namespaceMap = new HashMap<String, String> (ontModel.getNsPrefixMap());                 SWRLRuleEngineBridge bridge=BridgeFactory.createBridge("SWRLJessBridge", instModel);         bridge.importSWRLRulesAndOWLKnowledge();     bridge.run();  

wan  
(1009023) 17:42:32
想起来了,protege是有获得以classA为range的所有属性的API。当时好像是先获得以classA为range的所有属性,然后再通过每个属性获得domain类  

Anning  
(6419157) 17:42:47
这是以前的一段代码  

Anning  
(6419157) 17:43:03
和jess做推理用的   

胖波  
(6598782) 17:43:28


胖波  
(6598782) 17:43:34
我看看

胖波  
(6598782) 17:44:54
通过这个,就可以不去远程的URI读取OWL文件,而从本地读取了?

Anning  
(6419157) 17:46:43
iamwym,玩facebook吗?   

胖波  
(6598782) 17:50:40
anning,有没有更进一步解释这个的资料?

Anning  
(6419157) 17:51:44
https://mailman.stanford.edu/pipermail/protege-owl/2007-July/003098.html  

胖波  
(6598782) 17:52:10
谢谢

Anning  
(6419157) 17:52:32
不客气,呵呵  

胖波  
(6598782) 17:53:02
我搞的那个OWL-S里有一个链接改了位置,所以每次解析都会跳出来

胖波  
(6598782) 17:53:29
所以才想能不能我把里面的这个链接在代码里改掉

Anning  
(6419157) 17:54:01
都在本地   

胖波  
(6598782) 17:54:13
就是都从本地读

胖波  
(6598782) 20:17:27
有人么?  

早点来吧  
(31585040) 20:53:33
有没有做本体匹配的啊?  

W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
54.688ms