1.了解到可以使用jena的jar包
下载链接:http://jena.apache.org/download/index.cgi
2.阅读下载包内的源码,发现有一个奇怪的sql语句,经过查询是sparql语言。学习sparql语言中。
3.发现一个正规讲述sparql
语言的网站,不过他是英文的,正在阅读。
链接:http://www.ontobee.org/tutorial/sparql
4.sparql一些实际的例子。
链接:http://rdf.myexperiment.org/howtosparql?page=SELECT
链接:http://rdf.myexperiment.org/howtosparql?page=WHERE#
5.在where中
一个SPARQL查询的WHERE子句定义了你想你在SELECT子句中定义的变量的值,找到。在圆括号中,基本单位是三元组,它由三个成分组成,一个主语,一个谓语和一个宾语。这很像一个基本自然语言句子的语法结构。
男孩(主) 接住了(谓 ) 一个球(宾)
在SPARQL中,主语、谓语或宾语可以采取两种形式之一,是通过把一个变量定义?在变量名之前 (e.g. ?a, ?text, etc.) 或通用资源标识符(URI)。如PREFIX (and BASE)所讨论的,这取决于查询中定义的URI名称空间前缀是否有两种形式之一。这些三元组可以连接在一起使用一个英文句号(.)。通过这样做,你可以建立一个相互连接的节点图。通常确保每个三元组在图中某个点连接。以下查询首先是一个完全连接图如二并不因此将返回所有可能的网页/ mbox组合的超集。这是一个高数量的结果,有故意不链接运行此查询与Web服务器运行的内存要处理所有的结果。
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX mebase: <http://rdf.myexperiment.org/ontologies/base/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?homepage ?mbox
WHERE {
?x rdf:type mebase:User .
?x foaf:homepage ?homepage .
?x foaf:mbox ?mbox
}
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX mebase: <http://rdf.myexperiment.org/ontologies/base/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?homepage ?mbox
WHERE {
?x rdf:type mebase:User .
?x foaf:homepage ?homepage .
?y foaf:mbox ?mbox
}
就像上面的查询一样,同一主语多次重复并不少见。一个分号(;)而不是一个句号(.)可以在每个三元组替换后面的三元组时使用,如果它是相同的,只需要定义谓语和宾语。这是有用的因为它有助于减少像前面描述的一个错别字的机会。下面的查询与前面的查询相同,但使用这个简写语法:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX mebase: <http://rdf.myexperiment.org/ontologies/base/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?homepage ?mbox
WHERE {
?x rdf:type mebase:User ;
foaf:homepage ?homepage ;
foaf:mbox ?mbox
}
有时,同一主语有多次重复,也可能有相同的谓语。在这种情况下,可以使用逗号(,)分隔每个宾语。另一种节省时间写查询的方法是使用“A”而不是rdf:type来指定特定实体的类型。
BASE <http://www.myexperiment.org/>
PREFIX ore: <http://www.openarchives.org/ore/terms/>
PREFIX mepack: <http://rdf.myexperiment.org/ontologies/packs/>
SELECT ?pack
WHERE {
?pack a mepack:Pack ;
ore:aggregates <workflows/181>, <workflows/246>
}