Sparql 使用DBpedia查找哪些Wikipedia类别对于几个给定页面是通用的?

Sparql 使用DBpedia查找哪些Wikipedia类别对于几个给定页面是通用的?,sparql,wikipedia,dbpedia,Sparql,Wikipedia,Dbpedia,我已经忘记了我曾经对DBpedia和SPARQL的所有新知识,当我搜索它们时,我发现所有的例子都太复杂和难以理解 我想做的是传入两到三个维基百科页面,并获取所有页面都是其成员的维基百科类别集 这似乎在SPARQL中应该是非常简单的,所以我希望能有一个非常简单的例子来开始。wikipedia和dbpedia URI之间的映射如下: 为了 DBPedia uri是: 因此,要找出上述的分类 PREFIX dcterms: <http://purl.org/dc/terms/> PRE

我已经忘记了我曾经对DBpedia和SPARQL的所有新知识,当我搜索它们时,我发现所有的例子都太复杂和难以理解

我想做的是传入两到三个维基百科页面,并获取所有页面都是其成员的维基百科类别集


这似乎在
SPARQL
中应该是非常简单的,所以我希望能有一个非常简单的例子来开始。

wikipedia和dbpedia URI之间的映射如下:

为了

DBPedia uri是:

因此,要找出上述的分类

PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?categoryUri ?categoryName
WHERE {
  <http://dbpedia.org/resource/Spain> dcterms:subject ?categoryUri.
  ?categoryUri rdfs:label ?categoryName.
  FILTER (lang(?categoryName) = "en")
}
前缀dcterms:
前缀rdfs:
选择?categoryUri?categoryName
在哪里{
主题?分类。
?categoryUri rdfs:标签?categoryName。
过滤器(lang(?categoryName)=“en”)
}

维基百科和dbpedia URI之间的映射如下:

为了

DBPedia uri是:

因此,要找出上述的分类

PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?categoryUri ?categoryName
WHERE {
  <http://dbpedia.org/resource/Spain> dcterms:subject ?categoryUri.
  ?categoryUri rdfs:label ?categoryName.
  FILTER (lang(?categoryName) = "en")
}
前缀dcterms:
前缀rdfs:
选择?categoryUri?categoryName
在哪里{
主题?分类。
?categoryUri rdfs:标签?categoryName。
过滤器(lang(?categoryName)=“en”)
}

这实际上是您先前关于的问题的变体。唯一的区别是,这一次,您需要两个/三个主题而不是对象,因此不能使用逗号分隔的值枚举,而是必须写出要匹配的三重模式

例如,要获取西班牙和葡萄牙都属于的所有类别,只需执行如下查询:

SELECT ?cat   
WHERE { 
 <http://dbpedia.org/resource/Spain> dcterms:subject ?cat .
 <http://dbpedia.org/resource/Portugal> dcterms:subject ?cat .
} 
SELECT?cat
何处{
主题?猫。
主题?猫。
} 
此查询所做的是为受试者“西班牙”和“葡萄牙”的
dcterms:subject
关系选择具有相同值
?cat
的所有三重模式。换句话说,它精确地检索两个资源都属于的类别


诀窍是用一个图形或三元组来思考主题和对象之间的关系。这是一种思想上的转变,但一旦你做到了这一点,编写查询就变得容易多了。

这实际上是你先前关于查询的问题的一个变体。唯一的区别是,这一次,您需要两个/三个主题而不是对象,因此不能使用逗号分隔的值枚举,而是必须写出要匹配的三重模式

例如,要获取西班牙和葡萄牙都属于的所有类别,只需执行如下查询:

SELECT ?cat   
WHERE { 
 <http://dbpedia.org/resource/Spain> dcterms:subject ?cat .
 <http://dbpedia.org/resource/Portugal> dcterms:subject ?cat .
} 
SELECT?cat
何处{
主题?猫。
主题?猫。
} 
此查询所做的是为受试者“西班牙”和“葡萄牙”的
dcterms:subject
关系选择具有相同值
?cat
的所有三重模式。换句话说,它精确地检索两个资源都属于的类别


诀窍是用一个图形或三元组来思考主题和对象之间的关系。这是一种思想上的转变,但一旦你做到了这一点,查询编写就变得容易多了。

这很有帮助,但我仍然不知道如何从这一点到“所有页面中都有哪些类别:页面ABC、页面DEF和页面XYZ。”。也许我的问题不是很清楚?实际上它似乎只是重复了一行
dcterms:subject?categoryUri。
用其他东西代替
Spain
,这正是我想要的,尽管我并不真正理解语法,也不明白它为什么会起作用(-:这很有帮助,但我仍然不知道如何从这一行开始“所有页面中都有哪些类别:第ABC页、第DEF页和第XYZ页。也许我的问题不是很清楚?实际上它似乎只是重复了一行
dcterms:subject?categoryUri。
用其他东西代替
西班牙
,这正是我想要的,尽管我并不真正理解语法,也不明白它为什么起作用。”(:啊哈这两个看起来都比威廉的答案简单,你的解释也很清楚,所以你得到了饼干-谢谢(:啊哈这两个看起来都比威廉的答案简单,你的解释也很清楚,所以你得到了饼干-谢谢(: