SPARQL - 从skos中选择:category - Virtuoso 37000

问题描述:

我有SPARQL问题。我想从类别中选择一些东西。例如科目。我在http://dbpedia.org/snorql中提出这样的查询。SPARQL - 从skos中选择:category - Virtuoso 37000

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,第二版 使用SPARQL 1.1查询和更新

+0

二三折模式显然是错误的。请检查那里的语法。 – AKSW

+0

然后,你想“从类别中选择一些东西,例如主题” - 这完全令人困惑,你在混合东西:属于一个类别的东西具有类别的主题。看到下面的答案,这是正确的方法。 – AKSW

+0

为了将来的参考,完整的错误文本通常比错误代码本身更具启发性。另外,至少在您学习SPARQL时,您可能会发现使用[拖放式图形查询构建器iSPARQL](http://dbpedia.org/isparql/)很有帮助。 – TallTed

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

语义上......我并不真正了解dbpedia中的类或谓词...但是可以使用skos:Concept既是一个类型又是一个谓词?

我给你写了一个返回类别“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 

在Virtuoso 37000错误方面,您的错误如下:

  1. 您在之后 skos:概念在第2行,并且您错过了“American_punk_rock_guitarists”的前缀。

  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 
    

    这将返回因为下面的空集:

一个。 skos:概念是一个类,而不是一个属性。根据{?Subject?Predicate?Object},您只能在合适的SPARQL查询中将skos:Concept视为?主体和/或?对象[1]。区分类和属性的简单方法是,类应以大写字母(例如:skos:概念)开头,属性(谓词)应以小写字母开头(例如:rdf:type)。

b。 dbpcat:American_punk_rock_guitarists属于“skos:Concept”类型。如果您查看此实体(?主题)的DBPedia页面,您将在“rdf:type”行中看到这一点。仔细观察,你会发现这个概念是一个dct:subject各种其他实体[2]。

除了@马克·米勒的查询这一块也将提供结果:

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:概念”。

链接:

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