SPARQL/DBPedia:在不知道实体页面 URI 的情况下通过属性获取实体
SPARQL/DBPedia: Fetch entity via properties without knowing entity page URI
我正在尝试从描述 DBPedia 上的 company/stock 的实体中 return 属性,给定该实体所属的其他属性的独特组合。
例如,给定字符串 NASDAQ
和 AAPL
,我希望能够找到 http://dbpedia.org/page/Apple_Inc。没有明确知道 URI 的页面。
我知道此页面包含属性
dbp:symbol
: AAPL
dbp:tradedAs
: dbr:NASDAQ-100
我如何使用 SPARQL 直接搜索 dbp:symbol
寻找 AAPL
并搜索 dbp:tradedAs
寻找 NASDAQ
的部分匹配,最多 return可能的结果,如果存在的话。
我还必须补充一点,我想从这个页面 return 属性,如果有匹配项,是 dbo:abstract
,它对应于 company/stock 我想用它来解析。
编辑: 我已经成功执行了以下操作:
SELECT *
WHERE {
?s1 dbpedia2:symbol ?o1 .
?s1 dbpedia2:tradedAs ?o2 .
?o1 bif:contains '"AAPL"' .
}
其中 return 个条目
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'
但这似乎不起作用。
我已经解决了:
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" ) )
}
哪个returns
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
对于公司的快速摘要更有用。
我正在尝试从描述 DBPedia 上的 company/stock 的实体中 return 属性,给定该实体所属的其他属性的独特组合。
例如,给定字符串 NASDAQ
和 AAPL
,我希望能够找到 http://dbpedia.org/page/Apple_Inc。没有明确知道 URI 的页面。
我知道此页面包含属性
dbp:symbol
:AAPL
dbp:tradedAs
:dbr:NASDAQ-100
我如何使用 SPARQL 直接搜索 dbp:symbol
寻找 AAPL
并搜索 dbp:tradedAs
寻找 NASDAQ
的部分匹配,最多 return可能的结果,如果存在的话。
我还必须补充一点,我想从这个页面 return 属性,如果有匹配项,是 dbo:abstract
,它对应于 company/stock 我想用它来解析。
编辑: 我已经成功执行了以下操作:
SELECT *
WHERE {
?s1 dbpedia2:symbol ?o1 .
?s1 dbpedia2:tradedAs ?o2 .
?o1 bif:contains '"AAPL"' .
}
其中 return 个条目
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'
但这似乎不起作用。
我已经解决了:
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" ) )
}
哪个returns
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
对于公司的快速摘要更有用。