SPARQL查询DBpedia美国投资者出生日期及出生地问题求助
修正后的SPARQL查询及修改说明
可运行的查询代码
PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX dbr: <http://dbpedia.org/resource/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?name ?birthPlaceName ?birthDate WHERE { ?person a dbo:Investor . ?person dbo:nationality dbr:United_States . ?person rdfs:label ?name . FILTER(LANG(?name) = 'en') OPTIONAL { ?person dbo:birthPlace ?birthPlace . ?birthPlace rdfs:label ?birthPlaceName . FILTER(LANG(?birthPlaceName) = 'en') } OPTIONAL { ?person dbo:birthDate ?birthDate } } ORDER BY ?name
核心修改点说明
- 调整类筛选逻辑:原查询强制要求人物同时属于
BusinessPerson、Entrepreneur、Investor三个类,这会过滤掉仅被标记为Investor的条目(这类数据占比很高)。改为仅筛选dbo:Investor类,确保覆盖所有符合条件的美国投资者。 - 修正国籍属性:
dbo:country多用于标注组织/实体的所属国家,人物国籍的标准属性是dbo:nationality,指向dbr:United_States资源才符合DBpedia的本体规范。 - 放宽必填属性限制:将
birthPlace和birthDate改为OPTIONAL块,避免因部分投资者缺失这些信息而被完全过滤;同时为出生地添加英文标签,返回可读名称而非原始URI。 - 优化结果可读性:添加
ORDER BY ?name让结果按姓名排序,便于浏览。
可选扩展(如需包含关联类)
如果需要同时筛选属于BusinessPerson或Entrepreneur的投资者,可将类筛选部分替换为:
?person a dbo:Investor ; a ?relatedClass . FILTER (?relatedClass IN (dbo:BusinessPerson, dbo:Entrepreneur))
内容的提问来源于stack exchange,提问作者Erik Hovrud
相关产品推荐
相关产品推荐

