如果它包含文本,我试图通过名称获得公司
示例:honda motor co ltd
地图: 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") ) }返回结果,因为它匹配'Apple Inc'http: //dbpedia.org/page/Apple_Inc 。
但是下面的查询与埃森哲不符
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但什么都没得到
I'm trying to get a company by name if it contains text
Example: honda motor co ltd
Maps to: https://www.wikidata.org/wiki/Q9584
I have this query that finds apple successfully
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") ) }Which returns results since it matches 'Apple Inc' http://dbpedia.org/page/Apple_Inc.
But this query below doesn't match Accenture
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") ) }I expect: http://dbpedia.org/page/Accenture but get nothing
最满意答案
并非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 } }Not every resource in RDF must have every property! In your case, the logo doesn't exist which means you should make it an optional feature:
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 } }
更多推荐
发布评论