Board logo

标题: 借助语义技术构建 Wikipedia 查询表单 -2 应用程序一:数据库和查询 [打印本页]

作者: look_w    时间: 2018-8-23 09:50     标题: 借助语义技术构建 Wikipedia 查询表单 -2 应用程序一:数据库和查询

第一个应用程序自动化针对特定数据库的查询递送以及对所返回数据的格式化,我们不妨从其数据库和查询开始。 (IMDb) 内包含大量有关已经制作完毕的所有英文影片的信息,它不接受您对信息的查询。比如,如果我想知道有无演员既出现在由 Sofia Coppola 执导的电影,又出现在由她的父亲 Francis Ford Coppola 导演的电影中时,我必须要访问六个 IMDb Web 页面来获得由 Sofia 执导的电影,访问 32 个页面来获得由她父亲执导的电影,然后手动整理演员列表,然后进行交叉比对。
所幸的是,linkedmdb.org 的  提供了一个包含电影信息的数据库,可接受 SPARQL  查询。比如, 中的查询就是要让它列出所有由 Sofia Coppola 执导的电影名:
清单 1. 查询由 Sofia Coppola 执导的电影
1
2
3
4
5
6
7
8
PREFIX m: <http://data.linkedmdb.org/resource/movie/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?filmTitle WHERE {
  ?film rdfs:label ?filmTitle.
  ?film m:director ?dir.
  ?dir  m:director_name "Sofia Coppola".
}




SPARQL 被设计用来查询以 RDF 数据模型表示的数据,这种数据模型用一个三元组来表示数据,每个三元组都具有一个主语、一个谓语和一个宾语。有时,为了方便,不妨将其看成是条目、属性名、属性和值。例如,比方说有这样的三元组,其描述可以是:“ID 为 http://data.linkedmdb.org/resource/director/7764 的条目的 director_name 值为 ‘Sofia Coppola’。”
在 SPARQL 内,变量以问号开头。上述查询使用的是三元组,并且变量插在特定位置来描述想要返回的电影标题需要满足的三个条件:
1
SELECT DISTINCT ?p WHERE {?s ?p ?o}




很多 SPARQL 端点,包括 linkedmdb.org 上的这个,都会提供基于表单的界面来尝试使用 SPARQL 查询。若访问它们的 ,粘贴进上述两个查询中的任何一个,并单击 Go!,应该会看到由 Sofia Coppola 执导的电影的一个列表。(如果默认 Results: 设置无法工作,可以尝试其他的设置,特别是 JSON 格式的,这也是在我们的应用程序中将要使用的格式。)
所示的是另一个可在 linkedmdb.org 的 SNORQL 表单上尝试使用的查询。这个查询会列出在 Sofia Coppola 执导的电影中出现的所有演员:
清单 2. 检索演员的查询
1
2
3
4
5
6
7
8
9
10
PREFIX m: <http://data.linkedmdb.org/resource/movie/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?actorName ?filmTitle WHERE {
  ?film rdfs:label ?filmTitle;
        m:director ?dir;
        m:actor ?actor.
  ?dir  m:director_name "Sofia Coppola".
  ?actor m:actor_name ?actorName.
}




除了查询她执导的电影的标题之外,此查询还会查询每部电影中的演员 — 或更甚者,查询符合每部电影演员标识符的演员的姓名。在您的第一个查询(以及大多数的    SPARQL 查询)中,使用的是 URI 来标识您想要查找的数据,但是在输出时列出的却是与这些 URI 相关的可被人读懂的标签。这非常类似于 SQL 查询使用产品 ID 值来交叉比对产品,而实际输出时却使用的是产品名称。
此查询还引入了一些 SPARQL 的简略表述方式。它没有拼写出三个完整的三元组来表达希望得到与每部电影相关的标题、导演和演员数据,相反,它使用分号来表示谓语/宾语对 m:director ?dir 和 m:actor ?actor 与主语 ?film 的关系,正如谓语/宾语对 rdfs:label ?filmTitle 所做的一样。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0