Sparql 如何检索Wikidata中的分类详细信息
我有一个例子列表如下Sparql 如何检索Wikidata中的分类详细信息,sparql,rdf,wikidata,Sparql,Rdf,Wikidata,我有一个例子列表如下 myinstances = ['word2vec', 'tf-idf', 'dijkstra's algorithm'] SELECT * { VALUES ?searchTerm { "word2vec" "tf-idf" "dijkstra's algorithm" } SERVICE wikibase:mwapi { bd:serviceParam wikibase:api "EntitySearch". bd:ser
myinstances = ['word2vec', 'tf-idf', 'dijkstra's algorithm']
SELECT * {
VALUES ?searchTerm { "word2vec" "tf-idf" "dijkstra's algorithm" }
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "EntitySearch".
bd:serviceParam wikibase:endpoint "www.wikidata.org".
bd:serviceParam wikibase:limit 1 .
bd:serviceParam mwapi:search ?searchTerm.
bd:serviceParam mwapi:language "en".
?item wikibase:apiOutputItem mwapi:item.
?num wikibase:apiOrdinal true.
}
?item (wdt:P279|wdt:P31) ?type
}
对于上面列表中的每个myinstance
,我想找到:
1. What are the other instances of `myinstance`'s category (i.e. only one hop)
2. What are the instances of `myinstance`'s category's category (i.e. two hops)
例如,如果考虑“代码> MyStudio=Word2VEC < /代码>
myinstance
类别的其他实例是什么(即仅一个跃点)?
如下图所示,其直系祖先的其他实例为手套。
myinstance
的类别的类别实例是什么(即两个跃点)?换句话说,嵌入
(距离word2vec
两跳)的实例是什么,如下图所示myinstances = ['word2vec', 'tf-idf', 'dijkstra's algorithm']
SELECT * {
VALUES ?searchTerm { "word2vec" "tf-idf" "dijkstra's algorithm" }
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "EntitySearch".
bd:serviceParam wikibase:endpoint "www.wikidata.org".
bd:serviceParam wikibase:limit 1 .
bd:serviceParam mwapi:search ?searchTerm.
bd:serviceParam mwapi:language "en".
?item wikibase:apiOutputItem mwapi:item.
?num wikibase:apiOrdinal true.
}
?item (wdt:P279|wdt:P31) ?type
}
如果需要,我很乐意提供更多详细信息。关于1。它只是在变量
?type
中查找您已经拥有的类型的其他实例,因此它几乎添加了另一个三重模式?otherItem(wdt:P279 | wdt:P31)?type。
这样实例共享相同的类型,并且确实不要忘记选择?otherItem
。并引入了一个避免获取相同项的过滤器:过滤器(?item!=?otherItem)
,但我想这是显而易见的。关于2:这是相同的过程,只需添加另一个三重模式来模拟一个步骤,或者只需在属性路径中添加一个步骤类似于此路径的操作,没有尝试过:?otherItem(wdt:P279 | wdt:P31)/^(wdt:P279 | wdt:P31)?类型
。可能更容易理解,只需先使用适当的三元组模式来获取超级类型,然后获取此超级类型的实例。您必须学习思考图形,即思考边。您已经有了图形的可视化,因此它或多或少是琐碎的。边表示三元组,因此,每条边都可以重新绘制通过三重模式进行试验。?项目(wdt:P279 | wdt:P31)?type.
是项目类型的边。您说过希望该类型的超类型的所有实例,因此,您必须遵循超类型的传出边,因此,您必须向超类型添加三重模式表单type
。我还通过属性路径展示了一种更紧凑但不易理解的方式在我的第3条评论中,我不确定,但您可以尝试以下内容:?项(wdt:P279 | wdt:P31)/(wdt:P279 | wdt:P31)?超类型筛选器(?项!=?其他项)筛选器不存在{其他项(wdt:P279 | wdt:P31)?其他项}
-它将避免节点具有wdt:P279
或wdt:P31
类型的传入边,因此这些节点应该是层次结构上下文中的叶子