以文本方式查看主题

-  W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  使用jena获取本体中类(unionClass)的所有属性的方法  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=75637)


--  作者:hb_wang
--  发布时间:6/21/2009 9:55:00 PM

--  使用jena获取本体中类(unionClass)的所有属性的方法
最近在使用jena操作本体的时候,发现一个问题,就是想获取一个类的所有属性的时候,使用如下方法:
for (Iterator i = cls.listDeclaredProperties(); i.hasNext(); ) {
OntProperty prop = (OntProperty) i.next();
System.out.println( "Property " + prop.getURI() );
}

这个方法一般情况下是好用的,可是当某个属性的定义域是个集合类(unionClass)的时候就会出现问题,如下所示的本体:
<owl:FunctionalProperty rdf:ID="Name">
<rdfs:domain>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Male"/>
<owl:Class rdf:about="#Female"/>
</owl:unionOf>
</owl:Class>
</rdfs:domain>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
</owl:FunctionalProperty>
对于Male和Female类使用上面的方法,都得不到Name属性,对于这个问题,我上网搜了一下,发现很多同学也遇到过类似问题,现在我终于搞明白了,与大家共享一下:
实际上要想获取所有属性很简单,只需要只用一个推理机即可,Jena有自带的推理机,你只需要在创建模型的时候,设置
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_MICRO_RULE_INF, null );
这样就指定了OWL_MICRO推理机,就可以得到Name属性了。
希望能对大家有所帮助,^_^


--  作者:Humphrey
--  发布时间:6/22/2009 6:54:00 AM

--  
集合类属性查询需要推理机辅助才能进行?!看来类的定义中还是存在很大区别的。
--  作者:fairyxiaojun
--  发布时间:7/10/2009 5:11:00 PM

--  hi
你好!请问我想在本体中查询某个类以及和这个类有关系的类,该怎么查询呢?困惑。。。希望楼主指点一下,真心感谢!
--  作者:hb_wang
--  发布时间:7/13/2009 1:42:00 PM

--  
在本体中查询某个类的话还是比较容易的,使用jena api 的话,可用如下方法:
m.read(new FileInputStream("test\\model003.owl"),""); //读取本体文件

String NS=m.getNsPrefixURI("");//获取本体命名空间
OntClass cr=m.getOntClass(NS+"钻戒");//获取本体中指定的类

获取跟一个类有关系的类,我也不清楚jena有没有直接的方法,好像是没有的,我觉得两个类之间关系,大概有两种:1.上下位关系2.通过对象类型属性联系起来。
对于第一中情况,jena中可以使用cr.getSuperClass()/cr.getSubClass()来获取;
第二种情况,可以先获取本体中所有obj类型的属性,m.listObjectProperties();
然后对于每一个obj属性,分别判断他们的定义域或值域是否是你所想要的类(比如说:钻戒),如果那个obj属性满足条件,(假如说一个hasMaterial属性,它的定义域是钻戒,他们该属性的值域类就是跟钻戒类相关的类了)。
啰嗦了不少,不知道有没有帮助,有问题再联系吧!


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