鉴于实体所属的其他属性的唯一组合,我正在尝试从描述DBPedia上的公司/股票的实体返回属性。
例如,给定字符串NASDAQ
和AAPL
,我希望能够找到http://dbpedia.org/page/Apple_Inc。页面而没有明确知道URI。
我知道此页面包含属性
dbp:symbol
:AAPL
dbp:tradedAs
:dbr:NASDAQ-100
如何使用SPARQL直接在dbp:symbol
上搜索AAPL
并在dbp:tradedAs
上搜索NASDAQ
进行部分匹配,以返回最可能的结果(如果存在) 。
我还必须补充一点,如果存在匹配项,我想从此页面返回的属性是dbo:abstract
,它对应于我想用于解析的公司/股票的大文本描述
编辑:我已成功执行以下操作:
SELECT *
WHERE {
?s1 dbpedia2:symbol ?o1 .
?s1 dbpedia2:tradedAs ?o2 .
?o1 bif:contains '"AAPL"' .
}
返回条目
s1 o1 o2
:Apple_Inc. [http] "AAPL"^^rdf:langString :S&P_500
:Apple_Inc. [http] "AAPL"^^rdf:langString :Dow_Jones_Industrial_Average
:Apple_Inc. [http] "AAPL"^^rdf:langString :NASDAQ-100
我尝试添加?o2 bif:contains 'NASDAQ'
,但这似乎不起作用。
答案 0 :(得分:1)
我设法解决了这个问题:
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT *
WHERE {
?s1 dbpedia2:symbol ?symbol .
?s1 dbpedia2:tradedAs ?exchange .
?s1 dbo:abstract ?abstract .
?symbol bif:contains '"AAPL"' .
FILTER(lang(?abstract) = "en").
FILTER(regex(str(?exchange), "NASDAQ" ) )
}
返回
s1 symbol exchange abstract
:Apple_Inc. "AAPL"^^rdf:langString :NASDAQ-100 "Apple Inc. is an American multinational technology company headquartered in Cupertino, California...
仅需注意,对于此条目,rdfs:comment
对于公司的快速摘要更为有用。