【问题标题】:Querying VIVO data using SPARQL endpoint使用 SPARQL 端点查询 VIVO 数据
【发布时间】:2013-10-13 20:28:02
【问题描述】:

我目前的数据是从 VIVO 获取一些数据。我发现一些大学存在一些 VIVO 端点,例如:

这是一个研究人员的个人页面,由 VIVO 生成:

如何尝试通过 SPARQL 端点查询该研究人员的出版物?我应该在 SPARQL 查询中放置什么作为 URI?

【问题讨论】:

    标签: rdf sparql


    【解决方案1】:

    您需要稍微探索一下端点,通过使用一些通用查询并观察结果,以确定数据的一般“形状”。

    我做的第一个查询(在您提供的第一个端点上)是一个简单的查询,以查看哪些类可用:

    SELECT DISTINCT ?Concept WHERE {[] a ?Concept}
    

    浏览结果,我看到他们显然使用了 foaf:Person 类,这似乎是在其中找到人的可能候选者。所以,第二个查询,看看类 foaf:Person 的实例是什么样的:

    SELECT * WHERE {?x a foaf:Person; ?p ?y } ORDER BY ?x LIMIT 100
    

    这将检索所有实例 ?x 人,以及每个实例的属性 (?p) 和这些属性的值 (?y)。我在?x 上订购了同一个人的所有结果,我限制为 100 个,因为我只需要查看所有结果的一小部分(毕竟,我只是在探索形状)。

    查看该数据,我发现人们通常有一个带有字符串值的 foaf:firstNamefoaf:lastName 属性,并且他们还有一个 rdfs:label 属性,其中包含完整的“名字,姓氏”字符串作为语言标记的文字。因此,要检索特定的个人,我可以查询这些属性以获取个人的 URI,例如:

    SELECT ?x WHERE {?x a foaf:Person; foaf:lastName "Alonso"; ?p ?y} LIMIT 10 
    

    SELECT ?x WHERE {?x a foaf:Person; rdfs:label "Alonso, Jose-Manuel"@en-us . } LIMIT 10
    

    当然,我们实际上也可以查看?x 的值,它的典型形式是:

    http://reach.suny.edu/individual/Alonso_Jose-Manuel

    如果您真的在浏览器中点击该链接,它会将您重定向到您询问的页面http://reach.suny.edu/display/Alonso_Jose-Manuel。因此,查询该特定个人的另一种方法是获取其网页的 URL,将 display 替换为 individual,并将其用作 SPARQL 查询中的主题 URI。

    【讨论】:

    • 嗨,Jeen 感谢您的详细解释。我明白你的想法。我试了一下,但遇到了一些问题。我把问题放在下面,你可以看看吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多