2017-02-13 71 views
1

我試圖通過名字來獲得一個公司,如果它包含文本SPARQL查詢通過名稱獲得一個公司,如果它包含文本

例:本田汽車有限公司

映射到:https://www.wikidata.org/wiki/Q9584

我有這個查詢發現蘋果成功

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> 
PREFIX dbpedia: <http://dbpedia.org/resource/> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>   
PREFIX type: <http://dbpedia.org/class/yago/> 
PREFIX prop: <http://dbpedia.org/property/> 
select distinct ?iri ?logo ?description { 
    ?iri a dbpedia-owl:Company ; 
     dbpedia-owl:abstract ?description ; 
     rdfs:label ?lbl ; 
     foaf:depiction|dbpedia-owl:thumbnail ?logo . 
    ?lbl bif:contains "'apple'"@en . 
    filter(langMatches(lang(?description),"en")) 
} 

,因爲它匹配「蘋果公司」 它返回結果。

但此查詢以下不符合埃森哲

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> 
PREFIX dbpedia: <http://dbpedia.org/resource/> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>   
PREFIX type: <http://dbpedia.org/class/yago/> 
PREFIX prop: <http://dbpedia.org/property/> 
select distinct ?iri ?logo ?description { 
    ?iri a dbpedia-owl:Company ; 
     dbpedia-owl:abstract ?description ; 
     rdfs:label ?lbl ; 
     foaf:depiction|dbpedia-owl:thumbnail ?logo . 
    ?lbl bif:contains "'accenture'"@en . 
    filter(langMatches(lang(?description),"en")) 
} 

我想到:http://dbpedia.org/page/Accenture 但什麼也沒得到

回答

2

不在RDF的每一個資源必須有每個屬性!在您的情況下,徽標不存在,這意味着您應該使其成爲可選功能:

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>   

SELECT DISTINCT ?iri ?logo ?description { 
    ?iri a dbpedia-owl:Company ; 
     dbpedia-owl:abstract ?description ; 
     rdfs:label ?lbl . 
    ?lbl bif:contains "'accenture'"@en . 
    FILTER(langMatches(lang(?description),"en")) 
    OPTIONAL {?iri foaf:depiction|dbpedia-owl:thumbnail ?logo } 
} 
相關問題