以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  求助,各位大哥看看我写的这段jena程序有什么错误,  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=47449)


--  作者:boltbolt
--  发布时间:5/24/2007 10:26:00 AM

--  求助,各位大哥看看我写的这段jena程序有什么错误,
import java.util.Iterator;
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntDocumentManager;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.rdf.model.ModelFactory;

public class jena{
        public static String queryname=" ";
        public static void main (String [] argv) {
                String classname="zone";
                queryOnotology(classname);

        }
        public  static void queryOnotology(String name)
        {
                String camNS = "http://www.owl-ontologies.com/Ontology1164867953.owl";

                OntModel m = ModelFactory.createOntologyModel();
                OntDocumentManager dm = m.getDocumentManager();
                dm.addAltEntry( "http://www.owl-ontologies.com/Ontology1164867953.owl",
                                "file:d:/TBT.owl"    );
                //java.lang.String docURI, java.lang.String locationURL)
        //Add an entry for an alternative copy of the document with the given document URI.
                m.read( "http://www.owl-ontologies.com/Ontology1164867953.owl" );
                OntClass camera = m.getOntClass( camNS + name);
                System.out.println(" The qeried class is: "+name+".");
                System.out.println(" And its subclasses is:");
                for (Iterator i = camera.listSubClasses(); i.hasNext(); ) {
                  OntClass c = (OntClass) i.next();
                  String subcalssnames=c.getLocalName()+"  ";
              queryname=queryname+subcalssnames;
                //  System.out.print( c.getLocalName() + " " );
                }
                 System.out.print(queryname);

                 queryname=name+queryname;
        }

}


这是jena简单的一个小程序,用来查询子类的,但是总是演示不成功,错误看不太明白
那位大哥帮我看看,谢谢

错误
java.lang.NullPointerException
 at jenatest.jena.queryOnotology(jena.java:169)
 at jenatest.jena.main(jena.java:152)
The qeried class is: zone.
And its subclasses is:
Exception in thread "main"


--  作者:jpz6311whu
--  发布时间:5/24/2007 10:29:00 AM

--  
请指明at jenatest.jena.queryOnotology(jena.java:169)
这个169行是哪一行?
--  作者:jpz6311whu
--  发布时间:5/24/2007 10:30:00 AM

--  
请指明at jenatest.jena.queryOnotology(jena.java:169)
这个169行是哪一行?
--  作者:boltbolt
--  发布时间:5/24/2007 10:33:00 AM

--  
晕,忘了注释,红色的2行,如果不行的话,您可以把这段程序copy一下,可以在程序里运行一下看看。

以下是引用boltbolt在2007-5-24 10:26:00的发言:
import java.util.Iterator;
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntDocumentManager;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.rdf.model.ModelFactory;

public class jena{
         public static String queryname=" ";
         public static void main (String [] argv) {
                 String classname="zone";
                 queryOnotology(classname);

         }
         public  static void queryOnotology(String name)
         {
                 String camNS = "http://www.owl-ontologies.com/Ontology1164867953.owl";

                 OntModel m = ModelFactory.createOntologyModel();
                 OntDocumentManager dm = m.getDocumentManager();
                 dm.addAltEntry( "http://www.owl-ontologies.com/Ontology1164867953.owl",
                                 "file:d:/TBT.owl"    );
                 //java.lang.String docURI, java.lang.String locationURL)
         //Add an entry for an alternative copy of the document with the given document URI.
                 m.read( "http://www.owl-ontologies.com/Ontology1164867953.owl" );
                 OntClass camera = m.getOntClass( camNS + name);
                 System.out.println(" The qeried class is: "+name+".");
                 System.out.println(" And its subclasses is:");
                 for (Iterator i = camera.listSubClasses(); i.hasNext(); ) {
                   OntClass c = (OntClass) i.next();
                   String subcalssnames=c.getLocalName()+"  ";
               queryname=queryname+subcalssnames;
                 //  System.out.print( c.getLocalName() + " " );
                 }
                  System.out.print(queryname);

                  queryname=name+queryname;
         }

}


这是jena简单的一个小程序,用来查询子类的,但是总是演示不成功,错误看不太明白
那位大哥帮我看看,谢谢

错误
java.lang.NullPointerException
  at jenatest.jena.queryOnotology(jena.java:169)
  at jenatest.jena.main(jena.java:152)
  The qeried class is: zone.
  And its subclasses is:
Exception in thread "main"



--  作者:jpz6311whu
--  发布时间:5/24/2007 10:36:00 AM

--  
请把"file:d:/TBT.owl"帖出来看看
--  作者:boltbolt
--  发布时间:5/24/2007 10:40:00 AM

--  


随便用protege做了一个,用来看看效果的
--  作者:jpz6311whu
--  发布时间:5/24/2007 10:48:00 AM

--  
String classname="zone";
->
String classname="#zone";

--------
The qeried class is: #zone.
And its subclasses is:
country_standard  japan  USA  Europe


--  作者:boltbolt
--  发布时间:5/24/2007 10:51:00 AM

--  
果然是这样,可是为什么要加个#号呢?
--  作者:jpz6311whu
--  发布时间:5/24/2007 10:57:00 AM

--  
这个是rdf/owl基本语法,请看w3c官方网站上的相关文档吧
--  作者:boltbolt
--  发布时间:5/24/2007 2:38:00 PM

--  
如果搜索内容变成中文还行不行?比如我搜zone的中文地域,owl里面的子类也都变成中文名,这样是不是系统运行还是会有问题?
--  作者:jpz6311whu
--  发布时间:5/24/2007 2:46:00 PM

--  
你可以自己编个中文owl的程序试一下,如果有报错,你可以把owl和程序贴出来让大家帮忙找找错误。
你这样泛泛的问大家根本就不知道该怎么样回答你才好,是吧?
--  作者:gzfxxy1978
--  发布时间:5/24/2007 3:56:00 PM

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