2010-06-08 151 views
2

我创建了一些示例本体in proteology。根据我的本体,有一个类叫做person,它有一个叫做Student的子类。有一些学生个体(约翰,保罗,结婚,...)。 我已经定义了一些名为“email”的数据属性并分配了他们的电子邮件地址。如何使用SPARQL获取数据类型属性值

以下查询是由本体中的所有个体产生的结果,但我希望得到每个人和他们的电子邮件地址。

String queryStr = 
    "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "+ 
    "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+ 
    "select ?ind "+ 
    "where { "+ 
    "?ind rdf:type <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#Student> ;"+ 

"}\n "; 

上面的查询是在eclipse IDE中对jena进行测试的。

任何想法..?

提前致谢!

回答

8

要获得您需要的电子邮件地址1)在SELECT行中添加一个变量,2)在WHERE模式中绑定该变量。你可能想为自己的本体添加一个前缀,因为你现在需要参考它两次。喜欢的东西:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX my: <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#> 

SELECT ?ind ?email 
WHERE { 
    ?ind rdf:type my:Student . 
    ?ind my:Email ?email 
} 
+0

::我根据您的回答结果!祝你有个美好的一天!非常感谢! – smartcode 2010-06-08 15:10:38

0

一个更紧凑的方式将是以下几点:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX my: <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#> 

SELECT ?ind ?email 
WHERE { 
     ?ind rdf:type my:Student ; 
      my:Email ?email . 
    }