我目前的数据是从 VIVO 获取一些数据。我发现一些大学存在一些 VIVO 端点,例如:
这是一个研究人员的个人页面,由 VIVO 生成:
我如何尝试通过 SPARQL 端点查询该研究人员的出版物?我应该在 SPARQL 查询中放置什么作为 URI?
我目前的数据是从 VIVO 获取一些数据。我发现一些大学存在一些 VIVO 端点,例如:
这是一个研究人员的个人页面,由 VIVO 生成:
我如何尝试通过 SPARQL 端点查询该研究人员的出版物?我应该在 SPARQL 查询中放置什么作为 URI?
您需要通过使用一些一般查询并观察结果来稍微探索端点,以找出数据的一般“形状”。
我做的第一个查询(在您提供的第一个端点上)是一个简单的查询,用于查看哪些类可用:
SELECT DISTINCT ?Concept WHERE {[] a ?Concept}
浏览结果我看到他们显然使用了这个foaf:Person
类,这似乎是一个可以找到人的候选者。所以,第二个查询,看看类的实例是什么foaf:Person
样的:
SELECT * WHERE {?x a foaf:Person; ?p ?y } ORDER BY ?x LIMIT 100
这将检索所有实例?x
person,以及每个实例的属性 ( ?p
) 和这些属性的值 ( ?y
)。我命令?x
将同一个人的所有结果放在一起,并且限制为 100 个,因为我只需要查看所有结果的一小部分(毕竟,我只是在探索形状)。
查看该数据,我发现人们通常有一个带有字符串值的foaf:firstName
andfoaf: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。