如何通过SPARQL查询从Wikibooks获取书籍列表示例:
前缀dbo:http://dbpedia.org/ontology/
前缀dba:http://dbpedia.org/ontology/
SELECT?author?name?label?text?title?isbn?publisher?literaryGenre?pages WHERE
{?预订dbo:书。
?书dbo:作者?作者。
?预订dbo:numberOfPages?页面。
?书dbp:title?title。
?dba:isbn?isbn。
?book dba:publisher?publisher。
FILTER正则表达式(?title," java")。 }
答案 0 :(得分:2)
我想知道您是否知道维基百科不是维基百科而且DBpedia基于维基百科?!
然后,为什么同一个命名空间http://dbpedia.org/ontology/有两个前缀@Component({
selector: 'aboutus',
template:`
<span class="classone classtwo">{{vari.title}}</span>
<br>
<div ngClass="['classone','classtwo']">{{vari.title}}</div>
<br>
<div [ngClass]="['classone','classtwo']">{{vari.title}}</div>
<br>
<div [className]="classdef">{{vari.title}}</div>
`,
styles: [`
.classone{
font-weight: 'normal' !important;
}
.classtwo{
font-size: '40px' !important;
}
`
]
})
export class AboutusComponent implements OnInit, OnDestroy {
vari: any = {title: 'test'}
classdef: any[] = ['classone', 'classtwo']
constructor() { }
}
和dbo
?我真的建议您了解您正在做什么以及查询的内容,而不是从其他来源复制和粘贴。 SPARQL和RDF教程可能会有所帮助,官方文档也很有用。
下一期,dba
变量SELECT
,?name
,?label
和?text
未绑定在{{1}的三重模式中部分。它还不清楚您期望获得?literaryGenre
的内容。这本书的全文?!当然,这不存在,考虑版权。
WHERE
和?text
之间会有什么区别?我不认为?name
是适当的属性,请参阅
?title
仅返回dbp:title
。
我的建议:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT count(*) WHERE {
?book a dbo:Book ;
dbp:title ?title.
}
使用Virtuoso全文索引谓词19
更高效:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT * WHERE {
?book a dbo:Book .
?book dbo:author ?author .
OPTIONAL { ?book dbo:numberOfPages ?pages }
OPTIONAL { ?book dbo:isbn ?isbn }
OPTIONAL { ?book dbo:publisher ?publisher }
# get the English title
?book rdfs:label ?name.
FILTER(LANGMATCHES(LANG(?name), 'en'))
# get an English description, but not the text
?book rdfs:comment ?text .
FILTER(LANGMATCHES(LANG(?text), 'en'))
# filter for books whose title contains "java"
FILTER regex(str(?name) , "java", "i") .
}
因为一本书可能有多位作者。发布商您可能会获得重复的行,此处bif:contains
与PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT * WHERE {
?book a dbo:Book .
?book dbo:author ?author .
OPTIONAL { ?book dbo:numberOfPages ?pages }
OPTIONAL { ?book dbo:isbn ?isbn }
OPTIONAL { ?book dbo:publisher ?publisher }
# get the English title
?book rdfs:label ?name.
FILTER(LANGMATCHES(LANG(?name), 'en'))
# get an English description, but not the text
?book rdfs:comment ?text .
FILTER(LANGMATCHES(LANG(?text), 'en'))
# filter for books whose title contains "java"
?name bif:contains '"java"'
}
结合使用(按书籍分组):
GROUP_BY