如何通过SPARQL查询从Wikibooks获取书籍列表

时间:2017-06-10 10:25:42

标签: sparql dbpedia

如何通过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")。 }

1 个答案:

答案 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:containsPREFIX 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