Sparql Query Log 分析初步 Jiwei Ding 2019.4.20 - present
研究背景 我们希望从大规模的Sparql查询日志中,分析出常用的原子查 询模式; 常见的原子查询模式有哪些;(哪些查询是可分割的?) Filter 内常用的条件有哪些;(=, !=, <, >, Not Exist, …) 其他关键词使用情况;(Values, Bind, Union, SubQuery, …) 以及这些原子查询模式的组合方式; 例如 {<?x r1 e1>, <?x a c1>} 是一种常见的组合形式; 而 {<?x Max ?.0>, <?.0 Count ?.1>} 是几乎不会出现的组合; 整个Sparql查询图的形状;(链/树状、半径、围长、周长…) 以便于后续挖掘Sparql中的每个部件和自然语言表述的对应
参考文献 [1] (Wikidata query log 官方推荐文章) Adrian Bielefeldt, Julius Gonsior, Markus Krötzsch: Practical Linked Data Access via SPARQL: The Case of Wikidata. LDOW@WWW 2018 [2] (一个Sparql查询的图形化分析工具) Angela Bonifati, Wim Martens, Thomas Timm: DARQL: Deep Analysis of SPARQL Queries. WWW (Companion Volume) 2018: 187-190 [3] (面向DBpedia等多个知识库的query log) Angela Bonifati, Wim Martens, Thomas Timm: An Analytical Study of Large SPARQL Query Logs. PVLDB 11(2): 149-161 (2017)
数据源(Sparql query log) USEWOD - Usage Analysis and the Web of Data (Dbpedia、 Wikidata等) http://usewod.org/data-sets.html (16年版43G) LSQ - The Linked SPARQL Queries Dataset (Dbpedia、Linked Geo Data、Semantic Web Dog Food等) http://aksw.github.io/LSQ/ (DBpedia部分压缩后106M) Wikidata:SPARQL query service/queries/examples https://www.wikidata.org/wiki/Wikidata:SPARQL_query_servic e/queries/examples (几百条,有对应描述,非常难!) Wikidata SPARQL Logs (https://iccl.inf.tu-dresden.de/web/ Wikidata_SPARQL_Logs/en) (10G+,几十万个organic query) DBPedia query logs for 2013, 2014, 2015 and 2016 directly from Openlink (未公开)
Robotic / Organic query [3]
Robotic / Organic query,and query pattern [3]
Most frequent Wikidata properties [3]
各关键词的使用情况 [1] 各个数据集上关键词的分布差异极大,例如:Wikidata17数据集30%有Group by,42%有Order by;DBpedia12到16,分别有18%, 8%, 11%, 38%, 8%的问句有Distinct。
各关键词的使用情况 [3] 机器查询有更多的Offset,Values; 人的查询有更多Filter,聚合
查询中Triple的数量 [1] 统计Triple数量时仅考虑Select / Ask型问句,对于Union、Minus、Filter、Optional限定的triple只统计数量,不考虑上层关系。
关键词之间共现的频次 [1, 3] Filter (F), And (A), Opt (O), Graph (G), Union (U), conjunctive pattern with filters (CPF) Join (J), Filter (F), Optional (O), Union (U), Path (P), Values (V), Subquery (S)
常见的查询形状(无向) [1] CQ: conjunctive query;F: filter(?x=?y);O: Optional Tree: 任意两个顶点间只有一条边;Star: 是树,且只有一个顶 点有多于两个邻居;Forest: Tree的集合;Petal(花瓣): s 到 t 的 路径的集合,任意两条路径至少有一个不同的点;Flower: 一 个中心点x,以及一些附加的部分:从x出发的链、树、花瓣。
属性链的形态 [1] 文章在整个corpus中只找到了247,404个属性链; 在分析时,(!a)和(^a)均表示为a;
一个Sparql展示/日志分析工具 [2] https://github.com/PoDMR/darql 据说可以重现[1]中各数据集上的结果,或用于单个Sparql query的展示。
未来工作 Sparql查询日志的质量相对较差,需要筛选出有意义的部分。 从图的角度进行Sparql分析的工作相对欠缺,对各Graph pattern之间的关系(Minus, Union, Subquery等)没有探讨。 对于Filter内使用的常见公式没有讨论。 [1]提及用户存在不断尝试写Sparql, 不断精化最终得到想要的 查询的过程,能否过滤出相关数据? 如何将QueryLog中挖掘出的结构和自然语言对应仍有待思考。