gpt4 book ai didi

rdf - 如何使用 SPARQL 查找相似内容

转载 作者:行者123 更新时间:2023-12-04 17:09:51 24 4
gpt4 key购买 nike

我正在尝试使用 SPARQL 来识别事物之间的概念重叠。

以电影为例(LinkedMDB 数据),如果我有一部电影“黑客帝国”并且我的目标是列出与该电影相似的电影,我可能会从执行以下操作开始:

  • 矩阵
  • 获取流派
  • 获取 Actor
  • 找导演
  • 获取位置

  • 然后使用我在矩阵中确定的东西,我会查询具有这些属性的东西(伪查询)
    SELECT movie, genre, director, location, actors
    WHERE {
    genre is action or sci-fi .

    director are the Wachowski brothers .

    location is set in a big city .

    OPTIONAL( actors were in the matrix . )
    }

    SPARQL 中有什么东西可以让我检查不同节点之间的属性重叠吗?还是必须像我建议的那样手动完成?

    最佳答案

    匹配一些特定的属性

    听起来你在要求类似的东西

    select ?similarMovie ?genre ?director ?location ?actor where { 
    values ?movie { <http://.../TheMatrix> }
    ?genre ^:hasGenre ?movie, ?similarMovie .
    ?director ^:hasDirectory ?movie, ?similarMovie .
    ?location ^:hasLocation ?movie, ?similarMovie .
    optional { ?actor ^:hasActor ?movie, ?similarMovie .
    }

    使用向后路径表示法 ^和对象列表,使其比以下内容短得多:
    select ?similarMovie ?genre ?director ?location ?actor where { 
    values ?movie { <http://.../TheMatrix> }
    ?movie :hasGenre ?genre .
    ?movie :hasDirector ?director .
    ?movie :hasLocation ?location .
    ?similarMovie :hasGenre ?genre .
    ?similarMovie :hasDirector ?director .
    ?similarMovie :hasLocation ?location .
    optional {
    ?movie :hasActor ?actor .
    ?similarMovie :hasActor ?actor .
    }
    }

    例如,使用 DBpedia,我们可以获得与 The Matrix 具有相同发行商和摄影师的其他电影:
    select ?similar ?cinematographer ?distributor where {
    values ?movie { dbpedia:The_Matrix }
    ?cinematographer ^dbpprop:cinematography ?movie, ?similar .
    ?distributor ^dbpprop:distributor ?movie, ?similar .
    }
    limit 10

    SPARQL Results

    结果都在同一个专营权内;你会得到:黑客帝国、黑客帝国重装上阵、黑客帝国革命、黑客帝国(特许经营)和终极黑客帝国系列。

    匹配至少一些属性

    也可以要求至少具有一些共同属性的事物。两个事物在被视为相似之前需要具有多少共同点显然是主观的,这取决于特定的数据,并且需要一些实验。例如,我们可以在 DBpedia 上查询至少有 35 个与矩阵相同的属性的电影,如下所示:
    select ?similar where { 
    values ?movie { dbpedia:The_Matrix }
    ?similar ?p ?o ; a dbpedia-owl:Film .
    ?movie ?p ?o .
    }
    group by ?similar ?movie
    having count(?p) > 35

    SPARQL results

    这给出了 13 部电影(包括黑客帝国和特许经营中的其他电影):
  • V字仇杀队(电影)
  • 黑客帝国
  • postman (电影)
  • 行政决定
  • 入侵(电影)
  • 拆迁人(电影)
  • 黑客帝国(特许经营)
  • 重装上阵的黑客帝国
  • Freejack
  • 导出伤口
  • 矩阵革命
  • 爆发(电影)
  • 极速赛车(电影)

  • 使用这种方法,您甚至可以使用共同属性的数量作为相似性的度量。例如:
    select ?similar (count(?p) as ?similarity) where { 
    values ?movie { dbpedia:The_Matrix }
    ?similar ?p ?o ; a dbpedia-owl:Film .
    ?movie ?p ?o .
    }
    group by ?similar ?movie
    having count(?p) > 35
    order by desc(?similarity)

    SPARQL results
    The Matrix             206
    The Matrix Revolutions 63
    The Matrix Reloaded 60
    The Matrix (franchise) 55
    Demolition Man (film) 41
    Speed Racer (film) 40
    V for Vendetta (film) 38
    The Invasion (film) 38
    The Postman (film) 36
    Executive Decision 36
    Freejack 36
    Exit Wounds 36
    Outbreak (film) 36

    关于rdf - 如何使用 SPARQL 查找相似内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21290186/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com