SPARQL - 从skos中选择:类别 - Virtuoso 37000

时间:2017-05-03 16:16:48

标签: sparql semantic-web dbpedia virtuoso linked-data

我遇到SPARQL问题。我想从类别中选择一些东西。例如科目。我在http://dbpedia.org/snorql中进行了类似的查询。

SELECT ?category ?subject WHERE
    {
    ?category a skos:Concept .
    ?category skos:Concept: American_punk_rock_guitarists.
    ?category dct:subject ?subject .
    } LIMIT 1000

我有错误Virtuoso 37000.我不明白为什么。

P.S。对于SPARQL中的初学者来说它是否是好书 - 学习SPARQL,第2版 使用SPARQL 1.1查询和更新

2 个答案:

答案 0 :(得分:2)

您至少有一个语法错误:第二个三元组中的第二个冒号(:)。

语义上......我真的不知道dbpedia中的类或谓词......但是skos:概念既可以是类型也可以是谓词?

我写了一个有效查询,返回“American_punk_rock_guitarists”类别的10个成员

我把这个放在一起,转到dbpedia's faceted free text search并熟悉American punk rock guitarists的概念,特别是Joey Ramone

 prefix dbpcat: <http://dbpedia.org/resource/Category:>

    SELECT  ?subject ?category
    WHERE
      { values ?category { dbpcat:American_punk_rock_guitarists  } .
      ?subject dct:subject ?category }
    LIMIT   10

答案 1 :(得分:0)

就Virtuoso 37000错误而言,您的错误如下:

  1. 您在第2行的 skos:Concept 后面有,并且您错过了&#34; American_punk_rock_guitarists&#34;的前缀。

  2. American_punk_rock_guitarists 应该是 dbpcat:American_punk_rock_guitarists 。虽然这会给你一个空结果,但语法正确的版本或你的查询是:

    prefix dbpcat: <http://dbpedia.org/resource/Category:>
    
    SELECT ?category ?subject WHERE
        {
        ?category a skos:Concept .
        ?category skos:Concept dbp:catAmerican_punk_rock_guitarists.
        ?category dct:subject ?subject .
        } LIMIT 1000
    

    由于以下原因,它返回一个空集:

  3. 一个。 skos:概念是一个类,而不是属性。就{?Subject?Predicate?Object}而言,您只能在适当的SPARQL查询中看到skos:Concept作为?Subject和/或?Object [1]。区分类和属性的一种简单方法是,类应该以大写字母开头(例如: skos:Concept ),属性(谓词)应该以小写字母开头(例如:的rdf:类型

    dbpcat:American_punk_rock_guitarists 属于&#34; skos:Concept&#34;。如果你查看这个实体的DBPedia页面(?subject),你会在&#34; rdf:type&#34;中看到这个。行。进一步观察,你会发现这个概念是各种其他实体的 dct:subject [2]。

    除了@Mark Miller的查询之外,这个还将提供结果:

    prefix dbpcat: <http://dbpedia.org/resource/Category:>
    
        SELECT  ?subject ?category
        WHERE
          { ?subject dct:subject ?category.
            ?category a skos:Concept.
            filter(?category = dbpcat:American_punk_rock_guitarists).
    
          }
        LIMIT   10
    
    skos:这里不需要概念,仅作为如何使用它的一个例子,如果你正在寻找类似的类型 - 所有类型 - skos:概念&#34;。 / p>

    链接:

    1. https://www.w3.org/2009/08/skos-reference/skos.html#Concept
    2. http://dbpedia.org/resource/Category:American_punk_rock_guitarists