如果我运行此SPARQL查询
#defaultView:BubbleChart
#TEMPLATE={"template":"Overall causes of death ranking of ?thing ","variables":{"?thing": {"query":"SELECT ?id (COUNT(?id) AS ?count) WHERE { ?sub wdt:P509 ?y. ?sub wdt:P31 ?id. } GROUP BY ?id "} } }
SELECT ?cid ?cause (COUNT(*) AS ?count) WHERE {
BIND(wd:Q5 AS ?thing)
?pid wdt:P31 ?thing.
?pid wdt:P509 ?cid.
OPTIONAL {
?cid rdfs:label ?cause.
FILTER((LANG(?cause)) = "en")
}
}
GROUP BY ?cid ?cause
ORDER BY DESC(?count) ?cause
LIMIT 50
Run Code Online (Sandbox Code Playgroud)
在维基数据查询编辑器中,我可以选择使用菜单下载> SVG图像将气泡图下载为SVG文件
当我以编程方式执行相同的SPARQL脚本时,我正在寻找一种生成或检索此SVG文件的URL的方法.在这种情况下,仅返回原始数据(作为JSON).
{"head":{"vars":["cid","cause","count"]},"results":{"bindings":[{"cid":{"type":"uri","值":" http://www.wikidata.org/entity/Q12152 "},"原因":{"xml:lang":"en","type":"literal","value":"心肌梗塞"},"count":{"datatype":" http://www.w3.org/2001/XMLSchema#integer ","type":"literal","value":"5837"}},{" cid":{"type":"uri","value":" http://www.wikidata.org/entity/Q12192 "},"cause":{"xml:lang":"en","type" …
我正在尝试使用sparql查找基于其股票代码的公司。
此查询将列出企业及其代码(基本查询)
SELECT DISTINCT ?id ?idLabel ?ticker
WHERE {
?id wdt:P31/wdt:P279* wd:Q4830453 .
?id wdt:P249 ?ticker .
?id rdfs:label ?idLabel
FILTER(LANG(?idLabel) = 'en').
}
Run Code Online (Sandbox Code Playgroud)
但是,不包括IBM,因为IBM已将其股票代码放置在P414属性(证券交易所)的“内部”。
https://www.wikidata.org/wiki/Q37156
如何扩大此列表的范围,使其包括“内部”带有P414和P249代码的公司?
这是我可以显示不包括ibm的方法:
SELECT DISTINCT ?id ?idLabel ?exchange ?ticker2
WHERE {
?id wdt:P31/wdt:P279* wd:Q4830453 .
?id wdt:P249 ?ticker . FILTER(LCASE(STR(?ticker)) = 'ibm') .
?id rdfs:label ?idLabel
FILTER(LANG(?idLabel) = 'en').
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 WikiPedia 中的一些值,这些值在某些情况下是数百万年前的(例如月球的形成,WikiData 报告其正在形成:“-4527000000-01-01T00:00:00Z”。在其他情况下,我'我只是看看可能是公元前 10000 年等的年份,仍然表示为“-10000-01-01T00:00:00Z”。
据我所知,测试 NodaTime 并阅读文档,不支持这些古老的年份(或者我忽略了一些东西)。例如,这失败了:
OffsetDateTime defaultValue = new OffsetDateTime(new LocalDateTime(77, 1, 1, 0, 0), Offset.Zero);
var pattern = OffsetDateTimePattern.Create("yyyy-MM-ddTHH:mm:ss'Z'", CultureInfo.InvariantCulture, defaultValue);
string P = "-1000-01-25T20:34:25Z";
var result = pattern.Parse(P);
NodaTime.Text.UnparsableValueException: The value string includes a negative value where only a non-negative one is allowed. Value being parsed: '^-1000-01-25T20:34:25Z'. (^ indicates error position.)
at NodaTime.Text.ParseResult`1.GetValueOrThrow() in C:\Users\jon\Test\Projects\nodatime\build\releasebuild\src\NodaTime\Text\ParseResult.cs:line 81
at TryNodaTime.Program.Main(String[] args
Run Code Online (Sandbox Code Playgroud)
顺便说一句,使用 sing 这个字符串可以正常工作: string P = "1000-01-25T20:34:25Z";
我希望我只是忽略了一些明显的处理非常大的旧日期/年份的事情。其他例子包括老城市顺便说一句,它们的确切日期早在 0 年之前。
关于如何处理这些问题的指导将不胜感激。
编辑:发现这个例子,它要求我首先手动检测年份,如果它是负数,然后使用 LocalDate,但是,这里没有解决更大的问题,因为它在 -9999 以下失败: …