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
    两跳)的实例是什么,如下图所示

  • 我只是想知道这样的查询搜索是否可以在sparql中执行

    我目前的代码如下

    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
    类型的传入边,因此这些节点应该是层次结构上下文中的叶子