我是sparql的新手。
我想提取美国首席执行官的出生地(他们出生的国家的名字)。这些首席执行官应该(现在或过去)是S& P指数(https://en.wikipedia.org/wiki/List_of_S%26P_500_companies)公司的首席执行官。我很挣扎,因为我不知道如何将首席执行官与公司联系起来,或者根据他们所工作的公司过滤首席执行官。我想知道你是否可以帮我写一个在dbpedia中运行的sparql查询。
最终数据集应包含多个列:CEO姓名,出生地(仅限州),出生日期,公司名称(应为S& P500公司)。
我写的所有查询都没有,所以决定不在这里放任何东西,从头开始。
非常感谢, 阿里
答案 0 :(得分:5)
第一步是确定定义公司首席执行官的财产:
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?p
WHERE
{ ?s a dbo:Company .
?s ?p ?o
FILTER regex(str(?p), "ceo", "i")
}
它返回了许多属性:
+--------------------------------------------------------------+
| p |
+--------------------------------------------------------------+
| http://dbpedia.org/property/ceo |
| http://dbpedia.org/property/ceo&Founder |
| http://dbpedia.org/property/president&Ceo |
| http://dbpedia.org/property/president/ceo |
| http://dbpedia.org/property/ceo&Md |
| http://dbpedia.org/property/companyCeo |
| http://dbpedia.org/property/chairman&Ceo |
| http://dbpedia.org/property/georgiGanevPresident&CeoLocation |
| http://dbpedia.org/property/founder&Ceo |
| http://dbpedia.org/property/previousCeo |
| http://dbpedia.org/property/richardOwen,(ceo)Products |
| http://dbpedia.org/property/groupPresident&Ceo |
| http://dbpedia.org/property/owner/founderCoCeo |
| http://dbpedia.org/property/placeOfBirth |
| http://dbpedia.org/property/chairmanAndCeo |
| http://dbpedia.org/property/currentCeo |
| http://dbpedia.org/property/ceo/cfo |
| http://dbpedia.org/property/founder,ceo |
| http://dbpedia.org/property/ceoType |
| http://dbpedia.org/property/ceoChengLuoKeyPeople |
| http://dbpedia.org/property/ceo&President |
| http://dbpedia.org/property/placeOfDeath |
+--------------------------------------------------------------+
其中一些确实可以立即过滤掉,例如http://dbpedia.org/property/placeOfDeath
- 或者你会使用更好的正则表达式......
最明显的候选人是http://dbpedia.org/property/ceo
,但我们可能会有较低的召回率。
下一步是找出将公司限制在&#34; S&amp; P500&#34;的财产。从维基百科信息框中我只看到&#34;交易为&#34;输入,所以通过SPARQL:
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?p
WHERE
{ ?s a dbo:Company .
?s ?p ?o
FILTER regex(str(?p), "traded", "i")
}
我们得到了
+----------------------------------------------+
| p |
+----------------------------------------------+
| http://dbpedia.org/property/tradedAs |
| http://dbpedia.org/property/tradedUnder |
| http://dbpedia.org/property/tradedOn |
| http://dbpedia.org/property/formerlyTradedAs |
| http://dbpedia.org/property/traded |
+----------------------------------------------+
因此,http://dbpedia.org/property/tradedAs
可能是最佳选择。
下一步?使用这些属性并构建最终查询。并希望它返回预期的数据。作为起始查询:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT DISTINCT ?s
WHERE
{ ?s a dbo:Company .
?s dbp:tradedAs <http://dbpedia.org/resource/S&P_500_Index>
}