您的位置:首页 > 其它

知识图谱构建4—— SPARQL endpoint以及查询方式

2019-03-17 18:07 1281 查看

SPARQL endpoint以及查询方式

SPARQL endpoint

SPARQL endpoint是SPARQL协议的一部分,用于处理客户端的请求,通过endpoint,我们可以把数据发布在网上,供用户查询。
D2RQ把SPARQL查询,按照mapping文件,翻译成SQL语句完成最终的查询,然后把结果返回给用户。
下面是D2R Server的架构图:

  • 创建好数据库,数据库中有数据,具体见前几个博文(含有文件和操作)
  • 进入d2rq目录,使用下面的命令启动D2R Server:
d2r-server.bat kg_movie.ttl


在浏览器输入“http://localhost:2020/”,可以看到如下界面:

  • 点击1中的一个actor类
  • 选中第一个实例
  • 点击2,进入SPARQL endpoint,如图
  • 输入框默认的SPARQL查询是获取所有的RDF三元组,“LIMIT”关键词指定返回结果数量的上限。点击下图红框中的“Go!”,执行查询:

浏览器中进行查询

例如:“周星驰出演了哪些电影?”

SELECT ?n WHERE {
?s rdf:type :actor.
?s :actor_actor_chName '周星驰'.
?o :movie_movie_chName ?n
}
LIMIT 10

结果为:

编写python脚本进行查询操作

  • 使用Python第三方库:SPARQLWrapper。这是一个Python下的包装器,可以让我们十分方便地和endpoint进行交互。下面是通过SPARQLWrapper,向D2RQ endpoint发送查询“周星驰出演了哪些电影?”。
  • 安装SPARQLWrapper
pip install sparqlwrapper

https://github.com/RDFLib/sparqlwrapper

代码如下:

from SPARQLWrapper import SPARQLWrapper, JSON

sparql = SPARQLWrapper("http://localhost:2020/sparql")
sparql.setQuery("""
PREFIX : <http://www.kg_movie.com#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

SELECT ?n WHERE {
?s rdf:type :actor.
?s :actor_actor_chName '周星驰'.
?o :movie_movie_chName ?n
}
LIMIT 10""")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()

for result in results["results"]["bindings"]:
print(result["n"]["value"])

注意:要开启D2R服务器,不然运行代码会出现错误的
结果如下:

参考:
[1] https://zhuanlan.zhihu.com/p/32880610

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: