Sparql查询使用dbpedia

时间:2016-08-12 15:07:09

标签: sparql dbpedia

我是sparql的新手。

我想提取美国首席执行官的出生地(他们出生的国家的名字)。这些首席执行官应该(现在或过去)是S& P指数(https://en.wikipedia.org/wiki/List_of_S%26P_500_companies)公司的首席执行官。我很挣扎,因为我不知道如何将首席执行官与公司联系起来,或者根据他们所工作的公司过滤首席执行官。我想知道你是否可以帮我写一个在dbpedia中运行的sparql查询。

最终数据集应包含多个列:CEO姓名,出生地(仅限州),出生日期,公司名称(应为S& P500公司)。

我写的所有查询都没有,所以决定不在这里放任何东西,从头开始。

非常感谢, 阿里

1 个答案:

答案 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>
  }