如何使用SPARQL获取数据库中所有人的昵称和电子邮件?

时间:2017-02-10 07:42:44

标签: sparql rdf jena ontology apache-jena

我有一个带有一些VCARD数据的Apache Jena数据库。我想制定一个返回

的查询
  1. 电子邮件地址和
  2. 昵称
  3. 为数据库中的每个用户。

    我试过了:

    SELECT ?nick ?email
    WHERE {
        ?x <http://www.w3.org/2001/vcard-rdf/3.0#EMAIL> ?email,
        ?x <http://www.w3.org/2001/vcard-rdf/3.0#N> ?n {
            ?n <http://www.w3.org/2001/vcard-rdf/3.0#NICKNAME> ?nick
        }
    }
    

    当我尝试运行此查询时,收到以下错误消息:

    org.apache.jena.query.QueryParseException: Encountered " <IRIref> "<http://www.w3.org/2001/vcard-rdf/3.0#N> "" at line 4, column 32. Was expecting one of: "values" ... "graph" ... "optional" ... "minus" ... "bind" ... "service" ... "filter" ... "{" ... "}" ... ";" ... "," ... "." ...

    查询的正确版本是什么?

1 个答案:

答案 0 :(得分:2)

在您使用它的方式中,不允许使用逗号,并且内部组模式看起来不必要。

尝试这样的事情 -

SELECT ?nick ?email
WHERE {
   ?x <http://www.w3.org/2001/vcard-rdf/3.0#EMAIL> ?email .
   ?x <http://www.w3.org/2001/vcard-rdf/3.0#N> ?n .
   ?n <http://www.w3.org/2001/vcard-rdf/3.0#NICKNAME> ?nick .
}