You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: paper.md
+15-10Lines changed: 15 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -93,45 +93,50 @@ Requirements include:
93
93
94
94
# Overview of search-query Functionality
95
95
96
-
*search-query* aims to support the entire process of managing academic search queries.
97
-
Its core functionality is shown in Figure 1 and summarized in the following.
96
+
*search-query* treats academic search strategies as structured query objects rather than static strings.
97
+
Query objects can be created programmatically or derived from search strings or JSON files, and are represented as object-oriented structures that capture Boolean logic, nesting, and field restrictions.
98
+
Based on a query object, *search-query* supports the following operations, as illustrated in Figure 1:
98
99
99
100
-**Load:***search-query* provides parsing capabilities to ingest search queries from both raw strings and JSON files.
100
101
It parses database-specific query strings into internal, object-oriented representations of the search strategy.
101
102
This allows the tool to capture complex Boolean logic and field restrictions in a standardized form.
102
103
Currently, parsers are available for Web of Science, PubMed, and EBSCOHost.
103
104
The *load* functionality is extensible and the documentation outlines how to develop parsers for additional databases.
104
105
106
+
-**Save:** Researchers can serialize the query object back into a standard string or file format for reporting and reuse.
107
+
<!-- In practice, this means that a query constructed or edited within the tool can be exported as a well-formatted search string that is ready to be executed in a database or included in the methods section of a paper. -->
108
+
This facilitates transparency and reproducibility by allowing search strategies to be easily reported, shared or deposited.
109
+
105
110
-**Lint:***search-query* can apply linters to detect syntactical errors or inconsistencies that might compromise the search.
106
111
It can check for issues such as unbalanced parentheses, logical operator misuse, or database-specific syntax errors.
107
112
The validation rules are based on an analysis of a large corpus of real-world search strategies from the searchRxiv registry, revealing that many published queries still contained errors even after peer review.
108
113
By identifying such problems early, linters can help researchers validate and refine queries before execution.
109
-
The linting component can be updated to cover more databases and incorporate new messages, such as warnings for database-specific quirks.
114
+
The linting component can be extended to cover more databases and incorporate new messages, such as warnings for database-specific quirks.
110
115
111
116
-**Translate:** The library can convert a query from one database syntax into another, enabling cross-platform use of search strategies.
112
117
Using a generic query object as an intermediate representation, *search-query* currently supports translations between Web of Science, PubMed, and EBSCOHost.
113
118
Such query translation functionality can eliminate manual efforts for rewriting queries and reduce the risk of human error during translation.
114
119
In line with the vision of seamless cross-database literature searches, future development will focus on adding more databases to the translation repertoire.
115
120
116
-
-**Save:** After validation and refinement, *search-query* can serialize the query object back into a standard string or file format for reporting and reuse.
117
-
In practice, this means that a query constructed or edited within the tool can be exported as a well-formatted search string that is ready to be executed in a database or included in the methods section of a paper.
118
-
This facilitates transparency and reproducibility by allowing search strategies to be easily reported, shared or deposited.
119
-
120
121
-**Improve:** Beyond basic syntax checking and translation, *search-query* aims to support semantic query improvement to enhance recall and precision.
121
122
As queries are represented as manipulable objects, researchers can programmatically experiment with modifications — for example, adding synonyms or adjusting field scopes — to observe how these changes affect the search results.
122
123
In future work, this improvement functionality may be augmented with more automated suggestions and optimizations.
123
124
124
-
-**Automate:**Finally, *search-query* is designed to support advanced automation efforts and to integrate with systematic review management systems, such as CoLRev [@WagnerPrester2025].
125
-
The library offers programmatic access via its Python API, which means it can be embedded in scripts and pipelines to run searches or process queries without manual intervention.
125
+
-**Automate:**Automation primarily refers to the integrate with systematic review management systems, such as CoLRev [@WagnerPrester2025].
126
+
The library offers programmatic access via its Python API, which means it can be embedded in scripts and pipelines to run searches automatically.
126
127
It also provides a command-line interface and git pre-commit hooks, allowing researchers to incorporate query validation into version control and continuous integration setups.
127
-
By representing queries in the form of objects, *search-query* further enables advanced use cases such as executing searches on platforms that lack native Boolean query support, for instance, by breaking a complex query into multiple API calls.
128
+
<!--By representing queries in the form of objects, *search-query* further enables advanced use cases such as executing searches on platforms that lack native Boolean query support, for instance, by breaking a complex query into multiple API calls.-->
128
129
130
+
{label="fig_overview" width="340pt"}
131
+
132
+
<!--
129
133
\begin{figure}[ht]
130
134
\centering
131
135
\includegraphics[width=\textwidth]{figure_1.png}
132
136
\caption{Core functionality of the \textit{search-query} library}
0 commit comments