Ami*_*ian 1 rdf semantic-web sparql dbpedia
我正在尝试使用此SPARQL查询从DBpedia获取所有类型:
select ?type {
?type a owl:Class .
}
Run Code Online (Sandbox Code Playgroud)
现在,我还想包含查询返回的每种类型的英文标签.我需要在查询中添加什么内容?
Jos*_*lor 19
这是一个学习如何从DBpedia中检索任意信息的好机会.您的第一个查询(添加了限制)是:
select ?type {
?type a owl:Class .
}
limit 10
Run Code Online (Sandbox Code Playgroud)
其中一个结果是http://dbpedia.org/ontology/Animal,您可以在Web浏览器中实际访问它,相应的页面将显示所有资源属性.因为animal,并没有那么多,但我们感兴趣的是
rdfs:label Tier
rdfs:label animal
rdfs:label animal
rdfs:label žival
rdfs:label ??
Run Code Online (Sandbox Code Playgroud)
我们在这里感兴趣的属性是rdfs:label,所以我们可以将查询扩展到
select ?type ?label {
?type a owl:Class .
?type rdfs:label ?label .
}
limit 10
Run Code Online (Sandbox Code Playgroud)
我们实际上可以使用分号缩写一点:
select ?type ?label {
?type a owl:Class ;
rdfs:label ?label .
}
limit 10
Run Code Online (Sandbox Code Playgroud)
该查询虽然会为每个查询返回多个结果?type; 事实上,每一个?label,所以我们得到的结果包括:
http://dbpedia.org/ontology/Animal "Tier"@de
http://dbpedia.org/ontology/Animal "animal"@en
Run Code Online (Sandbox Code Playgroud)
请注意,标签不仅仅是字符串,而是带有语言标签的RDF文字.在SPARQL中,我们可以使用该lang函数获取RDF文字的语言标记(如果有的话).可以将语言标记"en"与=运算符进行比较,但是使用更强大的解决方案langMatches,这将处理比文档中给出的更棘手的情况.
filter langMatches( lang(?title), "FR" )
Run Code Online (Sandbox Code Playgroud)
可用于查找选择以下两个值?title,而filter( lang(?title) = "fr" )只会找到第一个:
"Cette Série des Années Soixante-dix"@fr
"Cette Série des Années Septante"@fr-BE
Run Code Online (Sandbox Code Playgroud)
使用langMatches,lang和filter,我们可以再次更新查询
select ?type ?label {
?type a owl:Class ;
rdfs:label ?label .
filter(langMatches(lang(?label),"EN"))
}
limit 10
Run Code Online (Sandbox Code Playgroud)
它检索DBpedia类型及其英文标签.
试试这个:
SELECT ?type (STR(?l) AS ?label) {
?type a owl:Class;
rdfs:label ?l .
FILTER (LANG(?l) = "en")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4244 次 |
| 最近记录: |