You are browsing a read-only backup copy of Wikitech. The live site can be found at wikitech.wikimedia.org
User:AKhatun/Wikidata Subgraph Query Analysis
Analysis on Subgraphs in Wikidata showed how large each of the subgraphs are in Wikidata and how connected they are. This page shows the results from analysis on the queries that relate to these subgraph. The questions that needed to be answered were:
- How many(percent) queries access each subgraph?
- How many queries access multiple subgraphs at once? i.e, how much overlap can we expect in subgraphs?
- How long do these queries take?
- How many user-agents access each subgraph? How many of them access lots of subgraphs, or are they confined to a small set of subgraphs? Do some of them dominate queries in mutiple subgraphs?
- Are there chunks of similar queries in these subgraphs? i.e, how diverse the queries in each subgraph are.
We define some parameters to identify whether a query touches on a subgraph based on the items and properties a query uses. Some queries may even touch on mutiple subgraphs. See more on what a subgraph means here. Note: Subgraphs have overlaps.
The parameters that define which subgraph a query belongs to are:
- If the query uses the subgraph's Qid. Example: Q5 containing queries are part of Q5 subgraph.
- If the query uses items that are
instance ofa particular subgraph.
- If the query uses items that occur 99% of the times in a particular subgraph.
- If the query uses properties that occur 99% of the times in a particular subgraph.
- If the query uses literals that occur 99% of the times in a particular subgraph. The literals can occur with or without language tags. Both versions are compared to check for match. Note that whole literals are matched in queries and Wikidata. Queries that ask for partial matches, using regex for example, are not included. The assumption is that such queries are more likely to contain other items from a subgraph and are caught anyways. This of course excludes generic queries that wish to search the entirety of Wikidata for a certain label or other strings.
The following analysis uses Wikidata dump of
20211101 and WDQS public SPARQL queries of 10/2021. All query related values below are monthly counts.
Query count and time
- All queries here refer to queries with status code 200 and 500, i.e correct queries, successful or time-out.
- WDQS receives ~220M queries a month.
- Total query time for all queries for a month is ~16,000 hours.
The table below lists the top 50 most queried subgraphs with subgraph size and query time information. A breakdown of what caused the match is also present, which corresponds to the parameters mentioned in #What are subgraph related queries. It also ranks the subgraphs by size, query count, and query time consumed.
A more complete list containing 341 subgraphs, that form ~90% of Wikidata triples, is available here: [csvlink|all_subgraph_data.csv]
|Subgraph rank by size||Subgraph rank by query count||Subgraph rank by query time||Subgraph||Subgraph label||%of triples||%of entities||Days to recover (4.77M rate)||Query count||%count of all queries||Query time (hr)||%time of all queries||%count of query from Qid||%count of query from instance items||%count of query from items||%count of query from properties||%count of query from literals|
|7||6||9||Q4167410||Wikimedia disambiguation page||1.374||1.459||38||3,737,550||1.691||223||0.014||0.195||0.484||0.554||0.0||0.938|
|20||11||22||Q13406463||Wikimedia list article||0.252||0.352||7||1,283,160||0.58||73||0.005||0.018||0.409||0.357||0.0||0.048|
|243||13||24||Q14204246||Wikimedia project page||0.008||0.033||0||1,114,113||0.504||62||0.004||0.009||0.227||0.016||0.0||0.275|
|26||15||29||Q484170||commune of France||0.18||0.043||5||866,766||0.392||46||0.003||0.006||0.278||0.004||0.098||0.007|
|138||28||57||Q18340514||events in a specific year or time period||0.019||0.048||1||463,683||0.21||17||0.001||0.0||0.2||0.056||0.0||0.005|
|41||31||56||Q22808320||Wikimedia human name disambiguation page||0.078||0.075||2||433,986||0.196||17||0.001||0.0||0.174||0.154||0.0||0.001|
|37||33||32||Q3331189||version, edition, or translation||0.087||0.19||2||410,352||0.186||34||0.002||0.103||0.053||0.118||0.004||0.028|
|71||35||25||Q86850539||Whitaker's Latin frequency type C||0.048||0.011||1||355,247||0.161||56||0.003||0.0||0.0||0.0||0.0||0.16|
|49||37||167||Q2225692||fourth-level administrative division in Indonesia||0.07||0.088||2||344,964||0.156||5||0.0||0.0||0.147||0.098||0.0||0.009|
|112||39||76||Q476028||association football club||0.026||0.038||1||320,422||0.145||14||0.001||0.006||0.12||0.029||0.0||0.003|
|192||50||143||Q3464665||television series season||0.011||0.02||0||254,318||0.115||6||0.0||0.031||0.077||0.009||0.0||0.0|
More on query time
The query time can be broken down to classes for better visualization. Below is a figure with the query class distribution (number of queries per query time class per subgraph) for the top 50 subgraphs. Some of the takeaways are:
- Most subgraphs have most queries in the range of 10-100ms
- Second most commons class is 100ms to 1s
photographhave most queries (~150k) timed at 1-10s. Around 10 more subgraphs have a little (~10-20k) query in this time range.
Analysis on user-agent is an approximation because these don't completely represent distint users. For example lots people use the same bot or script without changing the user-agent, or the same person or bot uses multiple user-agent strings. Yet based on the available data we can get an idea nevertheless.
User agent count
- Total number of unique user agents across all subgraphs: 981,180
- First, a list of subgraphs with most and least distinct user-agents is listed. It seems the least number of user-agents a subgraph has is atleast 10. So the large subgraphs are used by mutiple users.
- The largest numbers of user-agents are present in a variety of type of subgraphs, gene-protien-biological_process-molecular_function appear to be similar among them. It is possible the same queries represent several of these subgraphs. More on subgraph connectivity in #Subgraph Connectivity.
- There are 50 subgraphs with more than 1000 user agents, and 300 subgraphs with less than 1000 user agents. Most subgraphs are therefore not queried overly-widely. The distribution of user-agent counts less than 1000 is shown in the figure below. This clearly shows the small number of user counts in most subgraphs.
User agent distribution in subgraphs
- Next, the user agent vs query count distribution was analyzed for some of the top subgraphs. While user agent count gives us an idea of how many users may be using a subgraph, it is not clear whether all of them query the subgraph equally, or very few user agents perform most of the queries.
- ~30 out of 341 subgraphs have a user agent that queries >=50% of all queries of that particular subgraphs.
- 6 subgraphs have a user agent querying around 80-90% of the time.
- So the trend of dominating single source queries is not wide spread among subgraphs, but is present in few subraphs nonetheless.
The figure below shows the top 2 user-agent query percents for 341 subgraphs. This shows whether there is a dominating pattern in a subgraph with the top user agents per subgraph. This figure shows the top 2 user-agent query percents for 341 subgraphs. This shows whether there is a dominating pattern in a subgraph with the top user agents per subgraph.
The figure below shows 100 subgraphs with their user agent query usage distribution in percents. Usage greater than 50% is marked in red. A birds-eye view of the plots shows how some subgraphs have a dominating user agent while most subgraphs have at least 1 or 2 user agents that query the most. The rest of the user agents form the long tail of the distribution This figure shows 100 subgraphs with their user agent query usage distribution in percents. Usage greater than 50% is marked in red. A birds-eye view of the plots shows how some subgraphs have a dominating user agent while most subgraphs have at least 1 or 2 user agents that query the most. The rest of the user agents form the long tail 10% of the distribution.
Top user agents in subgraphs
- The top user agents in various subgraphs is listed below. More analysis on Q5 (human) and Q16521 (taxon) is done at the end of the page as they are the most queried subgraphs.
|Subgraph||Subgraph label||User agent||Query count (in subgraph)||Query percent (within subgraph)||Query percent overall|
|Q5||human||UA # 2||9017930||13.134||4.079|
|Q5||human||UA # 3||5059258||7.369||2.289|
|Q5||human||UA # 4||4020496||5.856||1.819|
|Q5||human||UA # 5||3828747||5.576||1.732|
|Q101352||family name||UA # 5||3828747||68.811||1.732|
|Q5||human||UA # 6||2685807||3.912||1.215|
|Q5||human||UA # 7||2434486||3.546||1.101|
|Q4830453||business||UA # 8||2403677||59.476||1.087|
|Q5||human||UA # 9||2020598||2.943||0.914|
|Q5||human||UA # 11||1877700||2.735||0.849|
|Q5||human||UA # 12||1781161||2.594||0.806|
|Q16521||taxon||UA # 13||1294113||2.293||0.585|
User agent vs Subgraph
So far we have explored the user-agent count and distribution per subgraph. It is also important to note the user agent's query across subgraphs. In other words,
- Do users have a very specific use case and so the queries spans only a few subgraphs? or is it spread across a lot of subgraphs?
- Are there some user agents that query the most in mutiple subgraphs? This could be due to the nature of the use case or simply because several subgraphs overlap a lot.
We start by looking at how many user agents acces how many subgraphs. From the table below, we see that most user agents (89% of them) query one subgraphs only. Some user agents query a lot of subgraphs as well. A clearer picture is seem from the plot below.
|File:Ua vs subgraph.png|
Next we isolate user agents from each subgraph who query drastically more (>=10% difference) than other user agents in the same subgraph, and perform at least 100k queries (0.05% of all queries) a month. A list of ~30 such user agents was found. A plot with subgraph distributions of all these user agents was observed to find some large buckets where they tend to query. The plot is shows below, followed by some explicit observations.
Percentages below are percent of all monthly queries.
Subgraph connectivity through queries
Subgraph connectivity was explored to some extent using only Wikidata in Wikidata_Subgraph_Analysis. This was based on what items or properties were common between subgraphs and how many direct connections were present between them. A visualization was created to show the strength of this connectivity between subgraphs here: wikidata_graph. This section aims to analyze the connectivity of subgraphs through the queries, i.e, how often are some subgraphs queried together.
- Subgaph Queries: The total number of queries that touch on at least one of the top 341 subgraps is 72% of all queries.
- First we look at how many subgraphs do most queries access. The tables below show the least and most query groups by number of subgraphs accessed.
- 70% of all queries (97% of subgraph queries) touch on 1 or 2 subgraph. 64% of all queries (90% of subgraph queries) touch on only 1 subgraph.
- It is hard to view which subgraphs occur together from the data above. So the subgraphs that occured together were broken into pairs and pars of subgraphs that occur together the most were listed.
- There are 57,970 subgraphs pairs that occur togther in queries. Total possible subgrah pair count is (340*341)/2 = 57,970. This shows that every subgraph is connected to every other subgraph through queries! Ofcourse the number of queries vary widely.
- A list of some of the most queried subgraphs is shown below.
|Subgraph 1||Subgraph 2||Query|
|Subgraph||Subgraph label||Subgraph||Subgraph label||#of Query||%of Query|
|Q3305213||painting||Q4167410||Wikimedia disambiguation page||629633||0.285|
|Q11424||film||Q14204246||Wikimedia project page||483338||0.219|
|Q4167410||Wikimedia disambiguation page||Q5||human||466217||0.211|
|Q14204246||Wikimedia project page||Q4167410||Wikimedia disambiguation page||436192||0.197|
|Q13406463||Wikimedia list article||Q5||human||394815||0.179|
|Q13442814||scholarly article||Q4167410||Wikimedia disambiguation page||316720||0.143|
|Q13406463||Wikimedia list article||Q18340514||events in a specific year or time period||274841||0.124|
|Q3331189||version, edition, or translation||Q5||human||273761||0.124|
|Q4167410||Wikimedia disambiguation page||Q811979||architectural structure||204572||0.093|
|Q4167410||Wikimedia disambiguation page||Q838948||work of art||200810||0.091|
|Q2225692||fourth-level administrative division in Indonesia||Q532||village||171086||0.077|
|Q3305213||painting||Q838948||work of art||161979||0.073|
- The distribution of the number of times each subgraph pair in wikidata occurs in queries is shown below. Note that (A,B) pair is the same as (B,A) pair, so there is no duplication in the plots. Since the plot is extremely skewed, three plots with various limits on the number of occurrences are shown. We can see how only a small number of pairs occur a lot together, they can be viewed from the table above. Whereas a huge number of pairs occur a very small number of times.
- Below is a heatmap of the number of queries, where both x and y axis represent subgraph indices (names of subgrahps not shown due to space)
- The diagonals show queries that use only 1 subgraph and are represented as Q5-Q5, or Q42-Q42 for example. Other are represented as Q5-Q42 or Q42-Q5 for example (Symmetrical plot).
- The tons of vertical and horizontal lines indicate there are lots of subgraphs that happen to pair with many other subgraphs. More analysis on this below.