我是sparql的新手.
我想提取美国首席执行官的出生地(他们出生的国家的名字).那些首席执行官应该(现在或过去)是标准普尔指数(https://en.wikipedia.org/wiki/List_of_S%26P_500_companies)列表中公司的首席执行官.我很挣扎,因为我不知道如何将首席执行官与公司联系起来,或者根据他们所工作的公司过滤首席执行官.我想知道你是否可以帮我写一个在dbpedia中运行的sparql查询.
最终数据集应该有几个列:CEO姓名,出生地(仅限州),出生日期,公司名称(应该是S&P500公司).
我编写的查询没有工作,所以决定不在这里放任何东西并从头开始.
非常感谢,阿里
第一步是确定定义公司CEO的财产:
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?p
WHERE
{ ?s a dbo:Company .
?s ?p ?o
FILTER regex(str(?p), "ceo", "i")
}
Run Code Online (Sandbox Code Playgroud)
它返回了许多属性:
+--------------------------------------------------------------+
| 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 |
+--------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
其中一些确实可以立即过滤掉,例如http://dbpedia.org/property/placeOfDeath- 或者你会使用更好的正则表达式......
最明显的候选人是http://dbpedia.org/property/ceo,但我们可能会有较低的召回率.
下一步是找出限制公司"标准普尔500指数"的房产.从Wikipedia信息框我只看到"交易为"条目,所以通过SPARQL:
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?p
WHERE
{ ?s a dbo:Company .
?s ?p ?o
FILTER regex(str(?p), "traded", "i")
}
Run Code Online (Sandbox Code Playgroud)
我们得到了
+----------------------------------------------+
| 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 |
+----------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
所以可能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>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |