我对SPARQL,OWL和Jena很新,所以请原谅我是否问完全愚蠢的问题。自从几天以来,我遇到了一个让我疯狂的问题。我使用下面的字符串作为一个耶拿QueryFactory.create(queryString)
查询,SPARQL - 找到本体需要什么?
queryString = "PREFIX foaf: <http://xmlns.com/foaf/0.1/>"+
"PREFIX ho: <http://www.flatlandfarm.de/fhtw/ontologies/2010/5/22/helloOwl.owl#>" +
"SELECT ?name ?person ?test ?group "+
"WHERE { ?person foaf:name ?name ; "+
" a ho:GoodPerson ; "+
" ho:isMemberOf ?group ; "+
"}";
直到今天早上,它的工作,只要我只要求从FOAF命名空间属性。只要我从我自己的命名空间请求属性,我总是得到空的结果。虽然我在这里发布这个问题,并做了一些最终测试,以便能够尽可能准确地发布它,但它突然发挥作用。因此,我不知道究竟要问什么,我在发布之前删除了我的问题。几个小时后,我使用Protege的Pellet插件创建并导出推断的模型。我把它叫做helloOwlInferred.owl,并将它上传到我的服务器上helloWl.owl所在的目录中。我调整了我的方法来加载推断的本体,并更改了上面的查询,以便前缀ho:也被分配给推断的本体。立刻,没有任何工作了。确切地说,它不再是什么工作,但它是我一直到今天早上与我的原始查询相同的症状。我的前缀不再工作。我做了一个简单的测试:将所有helloWorldInferred.owl文件(我的服务器上的前缀和我加载的本地副本)重命名为helloWorld.owl。奇怪的是,修复了一切。
将其重命名为helloWorldInferred.owl再次打破了一切。等等。那里发生了什么?我是否需要等待几周,直到我的本体被“注册为有效前缀”?
非常感谢。你的回答让我走上了正轨。 – Tom 2010-07-02 08:41:51