以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 Semantic Web(语义Web)/描述逻辑/本体 』 (http://bbs.xml.org.cn/list.asp?boardid=2) ---- jena如何查询owl文件中类的子类? (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=73857) |
-- 作者:linyu64 -- 发布时间:4/4/2009 7:04:00 PM -- jena如何查询owl文件中类的子类? 我想请问一下查询一个owl文件中某个类的子类的sparql语句要怎么写,比如下面的owl文件,如果我想查“猪病”的子类,应该怎么写sparql语句?本人是初学者,对本体方面的只是一团浆糊,希望各位高手帮帮忙,谢谢。 这是owl文件: <!-- Created with Protege (with OWL Plugin 3.3.1, Build 430) http://protege.stanford.edu --> |
-- 作者:jpz6311whu -- 发布时间:4/4/2009 9:31:00 PM -- PREFIX eg: <http://www.owl-ontologies.com/Ontology1236930838.owl#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?x WHERE { ?x rdfs:subClassOf eg:猪病 } |
-- 作者:linyu64 -- 发布时间:4/5/2009 12:17:00 PM -- 结果不符啊大哥 我按照你给我的sparql语句写进了jsp里,但是显示出来的结果包括了“猪病”以下的所有内容,举个例子,“猪病”中包括了“猪的传染病”,而“猪的传染病”中包括了“猪细菌性传染病”,“猪细菌性传染病”中有包括了“猪丹毒”,我想要的结果是把“猪的传染病”哪一级的子类显示出来,也就是“猪病”的下一级子类显示出来,而不是把所有内容显示出来,麻烦大哥你在帮帮忙,谢了啊 |
-- 作者:linyu64 -- 发布时间:4/5/2009 12:42:00 PM -- 还有问题 就是我显示子类的时候会连同这些子类的父类一起显示出来,比如我想显示“神经系统症状”的子类,显示的结果是: http://www.owl-ontologies.com/Ontology1236930838.owl#精神沉郁 http://www.owl-ontologies.com/Ontology1236930838.owl#抽搐转圈 http://www.owl-ontologies.com/Ontology1236930838.owl#呆立不动 http://www.owl-ontologies.com/Ontology1236930838.owl#精神委顿 http://www.owl-ontologies.com/Ontology1236930838.owl#感觉过敏 http://www.owl-ontologies.com/Ontology1236930838.owl#神经系统症状 它会把“神经系统症状”一起显示出来,还有,这些数据的前缀可以删除吗(就是这个“http://www.owl-ontologies.com/Ontology1236930838.owl#”可以不显示出来吗,还是说肯定会显示出来,要我们自己处理) |
-- 作者:jpz6311whu -- 发布时间:4/5/2009 12:42:00 PM -- 请楼主把你的jsp贴出来看看 |
-- 作者:linyu64 -- 发布时间:4/5/2009 12:58:00 PM -- <%@ page language="java" import="java.util.*,java.io.*,com.hp.hpl.jena.query.Query,com.hp.hpl.jena.query.QueryExecution,com.hp.hpl.jena.query.QueryExecutionFactory,com.hp.hpl.jena.query.QueryFactory,com.hp.hpl.jena.query.QuerySolution,com.hp.hpl.jena.query.ResultSet,com.hp.hpl.jena.rdf.model.*;" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> InputStreamReader in; |
-- 作者:linyu64 -- 发布时间:4/5/2009 12:58:00 PM -- 麻烦你了,斑竹 |
-- 作者:jpz6311whu -- 发布时间:4/5/2009 1:00:00 PM -- Model m = ModelFactory.createOntologyModel(); --> OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM); 并将OntModelSpec所在的包import进来 |
-- 作者:linyu64 -- 发布时间:4/5/2009 1:04:00 PM -- 哦,是这个原因吗,我一开始也是这样写的,不过我不是很清楚OntModelSpec所在的包是哪个,所以编译出错,弱弱问一句,OntModelSpec所在的包是哪一个 |
-- 作者:jpz6311whu -- 发布时间:4/5/2009 1:05:00 PM -- google之 |
-- 作者:linyu64 -- 发布时间:4/5/2009 1:08:00 PM -- 。。。。。。 |
-- 作者:linyu64 -- 发布时间:4/5/2009 1:23:00 PM -- 找到了,是com.hp.hpl.jena.ontology.OntModelSpe,问题解决了,对了,想再请问斑竹一下,就是那个前缀是不是一定会显示出来的 |
-- 作者:jpz6311whu -- 发布时间:4/5/2009 10:42:00 PM -- 用getLocalName方法 |
-- 作者:linyu64 -- 发布时间:4/6/2009 8:26:00 PM -- 查找与某类存在特定关系的类 比如我要查“猪丹毒”“主要引起”什么症状,这个sparql语句要怎么写,谢谢 |
-- 作者:jpz6311whu -- 发布时间:4/6/2009 9:00:00 PM -- 是指这个么? <owl:someValuesFrom> <owl:Class rdf:about="#高热等于或大于42度"/> </owl:someValuesFrom> ?? |
-- 作者:linyu64 -- 发布时间:4/6/2009 9:06:00 PM -- 不只这个,事实上“猪丹毒”“主要引起”的有几个症状,同时“伴随引起”几个症状,我希望通过sparql语句将所有由“猪丹毒”“主要引起”的类都显示出来,这些类保存在“症状”这个大类中,麻烦你了斑竹 |
-- 作者:linyu64 -- 发布时间:4/6/2009 9:12:00 PM -- 唉,斑竹,我发现要学本体这方面的知识真是很难啊,网上关于这方面的资料都不多,找到了要么是英文的看到我想撞墙,要么就是不成体系,只讲某些方面,看起来牛头不对马嘴啊,要不是有你这样的高手帮忙,我怕我的毕业设计都搞不定啊…… |
-- 作者:jpz6311whu -- 发布时间:4/7/2009 1:14:00 PM -- 是指这些么? <rdfs:subClassOf> <owl:Restriction> <owl:someValuesFrom> <owl:Class rdf:about="#高热等于或大于42度"/> </owl:someValuesFrom> <owl:onProperty> <owl:ObjectProperty rdf:about="#主要引起"/> </owl:onProperty> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty> <owl:ObjectProperty rdf:about="#主要引起"/> </owl:onProperty> <owl:someValuesFrom rdf:resource="#皮肤上出现特异性疹块"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty> <owl:ObjectProperty rdf:about="#主要引起"/> </owl:onProperty> <owl:someValuesFrom> <owl:Class rdf:ID="精神沉郁"/> </owl:someValuesFrom> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty> <owl:ObjectProperty rdf:about="#伴随症状"/> </owl:onProperty> <owl:someValuesFrom rdf:resource="#绝食"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:someValuesFrom> <owl:Class rdf:ID="步态僵直或跛行"/> </owl:someValuesFrom> <owl:onProperty> <owl:ObjectProperty rdf:about="#主要引起"/> </owl:onProperty> </owl:Restriction> </rdfs:subClassOf> </owl:Class> <owl:Class rdf:about="#消化系统症状"> <rdfs:subClassOf> <owl:Class rdf:about="#症状"/> </rdfs:subClassOf> </owl:Class> <owl:Class rdf:about="#食欲不振"> <rdfs:subClassOf rdf:resource="#消化系统症状"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty> <owl:ObjectProperty rdf:about="#主要症状"/> </owl:onProperty> <owl:someValuesFrom rdf:resource="#猪弓形虫病"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty> <owl:ObjectProperty rdf:about="#伴随症状"/> </owl:onProperty> <owl:someValuesFrom rdf:resource="#维生素A缺乏症"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:someValuesFrom> <owl:Class rdf:about="#维生素K缺乏症"/> </owl:someValuesFrom> <owl:onProperty> <owl:ObjectProperty rdf:about="#伴随症状"/> </owl:onProperty> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:someValuesFrom> <owl:Class rdf:about="#酒糟中毒"/> </owl:someValuesFrom> <owl:onProperty> <owl:ObjectProperty rdf:about="#主要症状"/> </owl:onProperty> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty> <owl:ObjectProperty rdf:about="#主要症状"/> </owl:onProperty> <owl:someValuesFrom> <owl:Class rdf:about="#霉玉米中毒"/> </owl:someValuesFrom> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty> <owl:ObjectProperty rdf:about="#主要症状"/> </owl:onProperty> <owl:someValuesFrom rdf:resource="#消化不良"/> </owl:Restriction> </rdfs:subClassOf> |
-- 作者:linyu64 -- 发布时间:4/7/2009 4:51:00 PM -- 不好意思,斑竹,我对owl文件的源代码不是很懂,我给你一些资料,你看看有没有用: “猪丹毒”“主要引起”:“高热等于或大于42度”“皮肤上出现特异性疹块”“精神沉郁”“步态僵直或跛行”“绝食” 我再附加个截图给你。 这么麻烦你真是不好意思啊,谢谢了。 此主题相关图片如下: |
-- 作者:jpz6311whu -- 发布时间:4/7/2009 6:32:00 PM -- “猪丹毒”“主要引起”的似乎只有4个? 4个还是5个? |
-- 作者:linyu64 -- 发布时间:4/7/2009 6:50:00 PM -- 哦,不好意思,“绝食”是“伴随引起”的 |
-- 作者:jpz6311whu -- 发布时间:4/7/2009 7:50:00 PM -- String queryString = "PREFIX eg: <http://www.owl-ontologies.com/Ontology1236930838.owl#> " + "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> " + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> " + "PREFIX owl: <http://www.w3.org/2002/07/owl#> " + "SELECT ?x " + "WHERE " + "{ " + "?y rdf:type owl:Restriction . " + "?y owl:onProperty eg:主要引起 . " + "?y owl:someValuesFrom ?x . " + " eg:猪丹毒 rdfs:subClassOf ?y . " + " }" ; |
-- 作者:linyu64 -- 发布时间:4/7/2009 8:12:00 PM -- 原来写少了 owl:onProperty eg:主要引起 . 这一句,太感谢你了,斑竹,麻烦你这么久真是不好意思
|
-- 作者:jpz6311whu -- 发布时间:4/7/2009 8:14:00 PM -- with pleasure, :) |
-- 作者:springbird -- 发布时间:9/15/2009 12:59:00 PM -- 楼主你好,你的问题解决了吗,可否交流一下,我刚接触本体,现在建了一个本体,想进行查询,可是用sparql得不到我想要的结果,可否看看下面这段程序该如何写sparql语句呢,得到一个类的父类子类,属性,及类之间的关系,谢谢你了,我的owl文档如下 <?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://www.hozo.jp/owl/MakingCoolFun.ont"> <owl:Ontology rdf:about=""> <owl:Class rdf:ID="RelationalConcept"> <owl:ObjectProperty rdf:ID="has_liquid"> |
-- 作者:Humphrey -- 发布时间:1/3/2010 9:00:00 PM -- 要关系图?!这似乎是Protege中某些插件的功能。 |
-- 作者:springbird -- 发布时间:1/4/2010 7:56:00 PM -- 这个本体不是用protege构建的,是用Hozo构建的,不过我的问题基本解决了
|
-- 作者:feizaopao -- 发布时间:1/12/2010 4:31:00 PM -- 楼主,只输出一个类的直接子类,这个问题怎么解决的,先谢谢了 |
-- 作者:feizaopao -- 发布时间:1/12/2010 8:12:00 PM -- 已经解决了,刚才是没看到版主的解决方法 |
-- 作者:Avansky -- 发布时间:4/12/2010 4:57:00 PM -- 受益匪浅!!! |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
523.438ms |