BibexPy 2.2.2__py3-none-any.whl → 2.2.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. bibex_core/MergeDB.py +122 -19
  2. bibexpy/__init__.py +7 -1
  3. bibexpy/_server/services/smart_merger.py +13 -0
  4. bibexpy/_web/404/index.html +1 -1
  5. bibexpy/_web/404.html +1 -1
  6. bibexpy/_web/index.html +1 -1
  7. bibexpy/_web/index.txt +6 -6
  8. bibexpy/_web/projects/_/convert/index.html +1 -1
  9. bibexpy/_web/projects/_/convert/index.txt +6 -6
  10. bibexpy/_web/projects/_/disambiguate/index.html +1 -1
  11. bibexpy/_web/projects/_/disambiguate/index.txt +6 -6
  12. bibexpy/_web/projects/_/enrich/index.html +1 -1
  13. bibexpy/_web/projects/_/enrich/index.txt +6 -6
  14. bibexpy/_web/projects/_/export/index.html +1 -1
  15. bibexpy/_web/projects/_/export/index.txt +6 -6
  16. bibexpy/_web/projects/_/merge/index.html +1 -1
  17. bibexpy/_web/projects/_/merge/index.txt +6 -6
  18. bibexpy/_web/projects/_/records/index.html +1 -1
  19. bibexpy/_web/projects/_/records/index.txt +6 -6
  20. bibexpy/_web/projects/_/report/index.html +1 -1
  21. bibexpy/_web/projects/_/report/index.txt +6 -6
  22. bibexpy/_web/projects/_/upload/index.html +1 -1
  23. bibexpy/_web/projects/_/upload/index.txt +6 -6
  24. bibexpy/_web/projects/index.html +1 -1
  25. bibexpy/_web/projects/index.txt +6 -6
  26. bibexpy/_web/settings/index.html +1 -1
  27. bibexpy/_web/settings/index.txt +6 -6
  28. bibexpy/_web/tools/index.html +1 -1
  29. bibexpy/_web/tools/index.txt +6 -6
  30. bibexpy/cli.py +1 -1
  31. {bibexpy-2.2.2.dist-info → bibexpy-2.2.3.dist-info}/METADATA +1 -1
  32. {bibexpy-2.2.2.dist-info → bibexpy-2.2.3.dist-info}/RECORD +61 -61
  33. /bibexpy/_web/_next/static/{kiP541v1aZJ2t7QWY6pup → _W_stYffpyiusUxb9NuR7}/_buildManifest.js +0 -0
  34. /bibexpy/_web/_next/static/{kiP541v1aZJ2t7QWY6pup → _W_stYffpyiusUxb9NuR7}/_ssgManifest.js +0 -0
  35. /bibexpy/_web/_next/static/chunks/{117-243189b36d27f566.js → 117-7ad5186126fa076d.js} +0 -0
  36. /bibexpy/_web/_next/static/chunks/{156-1d0bfe26481e7d6b.js → 156-75beffb8ae92a7f3.js} +0 -0
  37. /bibexpy/_web/_next/static/chunks/{2-60733f71509b56f6.js → 2-80e5ff6ecaab1b8b.js} +0 -0
  38. /bibexpy/_web/_next/static/chunks/{244-394d86488c726903.js → 244-67ea7b435f7b01fe.js} +0 -0
  39. /bibexpy/_web/_next/static/chunks/{361-967842df26f6ffcd.js → 361-da166e1b6724ae19.js} +0 -0
  40. /bibexpy/_web/_next/static/chunks/{367-d7abfef01f42a8b6.js → 367-0588c3750c19cf2a.js} +0 -0
  41. /bibexpy/_web/_next/static/chunks/{382-c2288944949cea21.js → 382-9881b7c21bd839aa.js} +0 -0
  42. /bibexpy/_web/_next/static/chunks/{484-d6534116174cb009.js → 484-94a0c3b42ea6645c.js} +0 -0
  43. /bibexpy/_web/_next/static/chunks/app/_not-found/{page-8200a2660cf860ab.js → page-873ba59b5eb7c342.js} +0 -0
  44. /bibexpy/_web/_next/static/chunks/app/{layout-81f99c0acd50f4fa.js → layout-0d5fc68ac8971a04.js} +0 -0
  45. /bibexpy/_web/_next/static/chunks/app/{page-431018c926501c8c.js → page-cf2bea5edc74459a.js} +0 -0
  46. /bibexpy/_web/_next/static/chunks/app/projects/[id]/convert/{page-a7fdd4dcdfee3e4e.js → page-ab6dd645ae113b64.js} +0 -0
  47. /bibexpy/_web/_next/static/chunks/app/projects/[id]/disambiguate/{page-45cd653a41947da4.js → page-dd98482cc47344e9.js} +0 -0
  48. /bibexpy/_web/_next/static/chunks/app/projects/[id]/enrich/{page-d763f71a4ed22e96.js → page-87685237c8053cee.js} +0 -0
  49. /bibexpy/_web/_next/static/chunks/app/projects/[id]/export/{page-d75bcea17e220a56.js → page-0c0b35cd340c6115.js} +0 -0
  50. /bibexpy/_web/_next/static/chunks/app/projects/[id]/merge/{page-1feb7d142414dc11.js → page-0d07d317cca1a351.js} +0 -0
  51. /bibexpy/_web/_next/static/chunks/app/projects/[id]/records/{page-3113ee5f64fff284.js → page-1d0b2f0f224627c3.js} +0 -0
  52. /bibexpy/_web/_next/static/chunks/app/projects/[id]/report/{page-2b5e662e83bad6b5.js → page-325bf5b09c3ead6b.js} +0 -0
  53. /bibexpy/_web/_next/static/chunks/app/projects/[id]/upload/{page-91c55affa48c27f9.js → page-8df78ca9cdecbcb8.js} +0 -0
  54. /bibexpy/_web/_next/static/chunks/app/projects/{page-23bef227659780b2.js → page-0d5ef841f6819454.js} +0 -0
  55. /bibexpy/_web/_next/static/chunks/app/settings/{page-158aad0a2ea97924.js → page-cf5de5a4789887a7.js} +0 -0
  56. /bibexpy/_web/_next/static/chunks/app/tools/{page-0b8e9c9243494cb7.js → page-2f4bb54673a0a396.js} +0 -0
  57. /bibexpy/_web/_next/static/chunks/{fd9d1056-91bed82f470bd18c.js → fd9d1056-f2718be92181f426.js} +0 -0
  58. {bibexpy-2.2.2.dist-info → bibexpy-2.2.3.dist-info}/WHEEL +0 -0
  59. {bibexpy-2.2.2.dist-info → bibexpy-2.2.3.dist-info}/entry_points.txt +0 -0
  60. {bibexpy-2.2.2.dist-info → bibexpy-2.2.3.dist-info}/licenses/LICENSE +0 -0
  61. {bibexpy-2.2.2.dist-info → bibexpy-2.2.3.dist-info}/top_level.txt +0 -0
bibex_core/MergeDB.py CHANGED
@@ -1,16 +1,60 @@
1
1
  import pandas as pd
2
2
  import re
3
3
  import os
4
- from typing import List, Union
4
+ from typing import List, Union, Optional
5
5
  import numpy as np
6
6
  from unidecode import unidecode
7
7
 
8
+ from bibex_core.cr_normalize import normalize_cr, count_refs
9
+
8
10
  def trim(text: str) -> str:
9
11
  """Removes extra spaces from text"""
10
12
  if pd.isna(text):
11
13
  return ""
12
14
  return re.sub(r'\s+', ' ', str(text)).strip()
13
15
 
16
+ # DOI önek/ayırıcı kalıpları — _canon_doi için.
17
+ _DOI_URL_PREFIX_RE = re.compile(r'^https?://(dx\.)?doi\.org/', re.IGNORECASE)
18
+ _DOI_SEP_RE = re.compile(r'[_\u2010-\u2015]')
19
+
20
+ def _canon_doi(value) -> Optional[str]:
21
+ """DOI'yi karşılaştırma için kanonik biçime indirger.
22
+
23
+ services.smart_merger.normalize_doi'nin bire bir aynadaki eşi. bibex_core
24
+ sunucu (apps/api) kodunu İMPORT ETMEMELİDİR — paket headless kullanımda
25
+ tek başına çalışır — bu yüzden kopya burada yerel tutulur; smart_merger'daki
26
+ kural değişirse bu fonksiyon da güncellenmelidir.
27
+
28
+ Ham 'DI' üzerinde gruplamak aynı makaleyi ayrı gruplara böler: büyük/küçük
29
+ harf, 'https://doi.org/' öneki ve ayırıcı yazımı dizinleyiciden dizinleyiciye
30
+ değişir (WoS '10.4103/jgid.jgid_12_19', Scopus '10.4103/jgid.jgid-12-19').
31
+
32
+ Geçersiz/boş girdi ya da '10.' ile başlamayan sonuç için None döner.
33
+ """
34
+ if value is None:
35
+ return None
36
+ try:
37
+ if pd.isna(value):
38
+ return None
39
+ except (TypeError, ValueError):
40
+ pass
41
+ s = str(value).strip().lower()
42
+ if not s:
43
+ return None
44
+ # Kirli veride önekler üst üste binebilir; değişmez hale gelene dek soy.
45
+ for _ in range(4):
46
+ prev = s
47
+ s = _DOI_URL_PREFIX_RE.sub('', s)
48
+ s = re.sub(r'^doi\s*:\s*', '', s)
49
+ s = re.sub(r'^doi\.org/', '', s)
50
+ if s == prev:
51
+ break
52
+ s = s.rstrip('/. \t')
53
+ s = _DOI_SEP_RE.sub('-', s)
54
+ if not s.startswith('10.'):
55
+ return None
56
+ return s
57
+
14
58
  def merge_values(x):
15
59
  """
16
60
  Merges values from a pandas Series, handling NaN values and duplicates.
@@ -218,6 +262,13 @@ def merge_references(wos_refs: str, scopus_refs: str) -> str:
218
262
  Returns:
219
263
  str: Birleştirilmiş ve temizlenmiş referanslar
220
264
  """
265
+ # ÖNCE normalize et: Scopus dilbilgisinde ';' yazar AYIRICISIDIR — ham
266
+ # Scopus CR'ı aşağıdaki split(';') bir referansı yazar kırıntılarına böler
267
+ # ve sıralamayı bozar. normalize_cr sonrası ';' yalnız referans sınırıdır
268
+ # (WoS dilbilgisi); idempotent olduğundan WoS girdisi değişmez.
269
+ wos_refs = normalize_cr(wos_refs) if isinstance(wos_refs, str) else wos_refs
270
+ scopus_refs = normalize_cr(scopus_refs) if isinstance(scopus_refs, str) else scopus_refs
271
+
221
272
  def split_and_clean_refs(refs_str):
222
273
  if pd.isna(refs_str) or not refs_str:
223
274
  return []
@@ -780,54 +831,69 @@ def merge_db_sources(*dataframes: pd.DataFrame, remove_duplicated: bool = True,
780
831
  M['DB_Original'] = M['DB']
781
832
 
782
833
  if remove_duplicated:
834
+ # Kanonik DOI anahtarı: gruplama/dedupe HAM 'DI' üzerinde yapılamaz.
835
+ # Aynı makale WoS'ta '10.4103/jgid.jgid_12_19', Scopus'ta
836
+ # '10.4103/jgid.jgid-12-19' (ayrıca 'https://doi.org/...' öneki ve
837
+ # büyük/küçük harf farkı) olarak gelir; ham eşitlik bunları ayrı
838
+ # gruplara böler. Anahtarı None olan satırlar (DOI'siz/geçersiz)
839
+ # eskisi gibi başlık+yıl yoluna düşer. Yardımcı kolon çıktıdan silinir.
840
+ if 'DI' in M.columns:
841
+ M['_doi_key'] = M['DI'].map(_canon_doi)
842
+
783
843
  if merge_fields:
784
844
  # Group by DOI and select the most complete data within each group
785
- if 'DI' in M.columns:
845
+ if '_doi_key' in M.columns:
846
+ has_doi = M['_doi_key'].notna()
786
847
  # Group records with DOI
787
- grouped = M[~M['DI'].isna()].groupby('DI', as_index=False).agg(
848
+ grouped = M[has_doi].groupby('_doi_key', as_index=False).agg(
788
849
  lambda x: '; '.join(sorted(set(str(val) for val in x if pd.notna(val)))) if x.name == 'DB_Original'
789
850
  else merge_values(x)
790
851
  )
791
-
852
+
792
853
  # Update DB field for merged records
793
854
  grouped.loc[grouped['DB_Original'].str.contains(';'), 'DB'] = 'BIBEXPY'
794
-
855
+
795
856
  # Add records without DOI
796
- no_doi = M[M['DI'].isna()]
857
+ no_doi = M[~has_doi]
797
858
  M = pd.concat([grouped, no_doi], ignore_index=True)
798
-
859
+
799
860
  # Check duplicates by title and year
800
861
  if 'TI' in M.columns and 'PY' in M.columns:
801
- # Clean titles
802
- M['clean_title'] = M['TI'].apply(lambda x: re.sub(r'[^a-zA-Z0-9\s]', '', str(x)))
862
+ # Clean titles — küçük harfe indirmeden 'Deep Learning' ile
863
+ # 'Deep learning' iki ayrı anahtar üretir ve aynı kayıt iki kez
864
+ # kalır.
865
+ M['clean_title'] = M['TI'].apply(lambda x: re.sub(r'[^a-zA-Z0-9\s]', '', str(x)).lower())
803
866
  M['clean_title'] = M['clean_title'].apply(trim)
804
-
867
+
805
868
  # Group by title and year
806
869
  M['title_year'] = M['clean_title'] + ' ' + M['PY'].astype(str)
807
-
870
+
808
871
  # Select the most complete data for each group
809
872
  grouped = M.groupby('title_year', as_index=False).agg(
810
873
  lambda x: '; '.join(sorted(set(str(val) for val in x if pd.notna(val)))) if x.name == 'DB_Original'
811
874
  else merge_values(x)
812
875
  )
813
-
876
+
814
877
  # Update DB field for merged records
815
878
  grouped.loc[grouped['DB_Original'].str.contains(';'), 'DB'] = 'BIBEXPY'
816
-
879
+
817
880
  M = grouped.drop(['title_year', 'clean_title'], axis=1)
818
881
  else:
819
882
  # Just remove duplicate records
820
- if 'DI' in M.columns:
821
- duplicates = M['DI'].duplicated() & ~M['DI'].isna()
883
+ if '_doi_key' in M.columns:
884
+ duplicates = M['_doi_key'].duplicated() & M['_doi_key'].notna()
822
885
  M = M[~duplicates]
823
-
886
+
824
887
  if 'TI' in M.columns and 'PY' in M.columns:
825
- clean_titles = M['TI'].apply(lambda x: re.sub(r'[^a-zA-Z0-9\s]', '', str(x)))
888
+ clean_titles = M['TI'].apply(lambda x: re.sub(r'[^a-zA-Z0-9\s]', '', str(x)).lower())
826
889
  clean_titles = clean_titles.apply(trim)
827
890
  title_year = clean_titles + ' ' + M['PY'].astype(str)
828
891
  duplicates = title_year.duplicated()
829
892
  M = M[~duplicates]
830
-
893
+
894
+ # Yardımcı anahtar kolonu çıktıya sızmamalı
895
+ M = M.drop(columns=['_doi_key'], errors='ignore')
896
+
831
897
  # If there are multiple databases
832
898
  if len(M['DB'].unique()) > 1:
833
899
  # DB'yi ISI'ya set edelim
@@ -1129,9 +1195,46 @@ def merge_db_sources(*dataframes: pd.DataFrame, remove_duplicated: bool = True,
1129
1195
 
1130
1196
  M.at[idx, 'OA'] = merge_open_access(wos_oa, scopus_oa)
1131
1197
 
1198
+ # Geçici RP kolonları yalnızca çok-kaynaklı dalda düşürülüyordu; dedupe tüm
1199
+ # satırları tek DB değerine indirdiğinde ('BIBEXPY' ya da tek kaynak) o dal
1200
+ # hiç çalışmaz ve RP_WOS/RP_SCOPUS çıktıya sızardı. RP burada zaten kendi
1201
+ # değerini taşır, bu yüzden koşulsuz düşürmek güvenli.
1202
+ M = M.drop(columns=['RP_WOS', 'RP_SCOPUS'], errors='ignore')
1203
+
1204
+ # CR normalizasyonu — Scopus dilbilgisindeki atıflar WoS dilbilgisine
1205
+ # çevrilir. Aksi hâlde VOSviewer/bibliometrix birleştirilmiş dataset'in
1206
+ # Scopus kaynaklı satırlarındaki atıfları hiç eşleştiremez: ölçülen bir
1207
+ # korpusta 436 kaydın 84'ü (ayrı bir korpusta %27) ayrıştırılamayan Scopus
1208
+ # biçimli CR yüzünden coupling ağlarının dışında kalıyordu.
1209
+ # normalize_cr idempotenttir; WoS satırları olduğu gibi geri döner.
1210
+ if 'CR' in M.columns:
1211
+ before = M['CR'].fillna('').astype(str)
1212
+ after = before.map(normalize_cr)
1213
+ # Yalnız dolu hücreler yazılır — boş/NaN CR hücreleri olduğu gibi kalır.
1214
+ filled_cr = before.str.strip() != ''
1215
+ changed = filled_cr & (after != before)
1216
+ if changed.any():
1217
+ M['CR'] = M['CR'].astype(object)
1218
+ M.loc[changed, 'CR'] = after[changed]
1219
+
1220
+ # NR (referans sayısı): CR bu adımda yeniden yazıldıysa VEYA NR boş/0
1221
+ # iken CR doluysa CR'den say. Scopus dosyalarında NR kolonu yoktur;
1222
+ # NR=0 + dolu CR ise eski merge'lerin yanlış değeridir — gerçekten
1223
+ # referanssız kayıtların CR'ı zaten boştur.
1224
+ if 'NR' not in M.columns:
1225
+ M['NR'] = ''
1226
+ nr_str = M['NR'].astype(str).str.strip()
1227
+ blank_or_zero = M['NR'].isna() | nr_str.isin(('', 'nan', 'NaN', 'None', '0', '0.0'))
1228
+ fill = (blank_or_zero | changed) & filled_cr
1229
+ if fill.any():
1230
+ # object'e çevir: int64/float64 kolona tamsayı yazmak 3 yerine
1231
+ # 3.0 üretir ve WoS dosyasına "NR 3.0" olarak düşer.
1232
+ M['NR'] = M['NR'].astype(object)
1233
+ M.loc[fill, 'NR'] = after[fill].map(count_refs)
1234
+
1132
1235
  # Create SR tag
1133
1236
  M = meta_tag_extraction(M, 'SR')
1134
-
1237
+
1135
1238
  return M
1136
1239
 
1137
1240
  def main():
bibexpy/__init__.py CHANGED
@@ -5,5 +5,11 @@ Bundles an embedded FastAPI server and a prebuilt static UI in a single package,
5
5
  requiring no Node.js or npm at runtime.
6
6
  """
7
7
 
8
- __version__ = "2.0.0"
8
+ from importlib.metadata import PackageNotFoundError, version as _pkg_version
9
+
10
+ try:
11
+ __version__ = _pkg_version("bibexpy")
12
+ except PackageNotFoundError: # running from source without an installed dist
13
+ from bibexpy.cli import __version__ # cli.py holds the release literal
14
+
9
15
  __all__ = ["__version__"]
@@ -76,6 +76,9 @@ STOPWORDS: set[str] = {
76
76
  # ════════════════════════════════════════════════════════════════════════
77
77
 
78
78
  _DOI_PREFIX_RE = re.compile(r"^https?://(dx\.)?doi\.org/", re.IGNORECASE)
79
+ # Alt çizgi + Unicode tire ailesi (hyphen, non-breaking hyphen, figure/en/em/
80
+ # horizontal dash) tek kanonik '-' işaretine katlanır.
81
+ _DOI_SEP_RE = re.compile(r"[_\u2010-\u2015]")
79
82
  _PUNCT_RE = re.compile(r"[^a-z0-9 ]+")
80
83
  _WS_RE = re.compile(r"\s+")
81
84
  _LATEX_RE = re.compile(r"\\[a-z]+\{[^}]*\}|\\[\\\\&%$#_{}~^]")
@@ -108,6 +111,7 @@ def normalize_doi(raw: Any) -> Optional[str]:
108
111
  'https://doi.org/10.1234/ABC' → '10.1234/abc'
109
112
  'http://dx.doi.org/10.x' → '10.x'
110
113
  '10.1234/abc/' → '10.1234/abc'
114
+ '10.4103/jgid.jgid_12_19' → '10.4103/jgid.jgid-12-19'
111
115
  """
112
116
  s = _to_str(raw)
113
117
  if not s:
@@ -123,6 +127,15 @@ def normalize_doi(raw: Any) -> Optional[str]:
123
127
  if s == prev:
124
128
  break
125
129
  s = s.rstrip("/. \t")
130
+ # Ayırıcı katlaması: DOI'ler KANONİK biçimde karşılaştırılır, çünkü
131
+ # dizinleyiciler ayırıcıyı farklı yazıyor — WoS aynı makaleyi
132
+ # '10.4103/jgid.jgid_12_19', Scopus '10.4103/jgid.jgid-12-19' verir.
133
+ # Bir registrant'ın YALNIZCA '_' ile '-' farkı olan iki DOI'yi FARKLI
134
+ # eserler için üretmesi pratikte yok denecek kadar nadirdir; buna karşılık
135
+ # mevcut davranış gerçek çiftleri fiilen yasaklıyor: doi_conflict() True
136
+ # döndüğü an çift borderline kuyruğuna bile giremeden vetolanıyor
137
+ # (belirleyici DOI kuralı kanonik form üzerinde işler).
138
+ s = _DOI_SEP_RE.sub("-", s)
126
139
  if not s.startswith("10."):
127
140
  return None
128
141
  return s
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/loader.gif"/><link rel="preload" as="image" href="/images/bibexpy-logo-header.png"/><link rel="preload" as="image" href="/images/bibexpy-logo-in.png"/><link rel="stylesheet" href="/_next/static/css/76020a0003f90b67.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-c81f7fd28659d64f.js"/><script src="/_next/static/chunks/fd9d1056-91bed82f470bd18c.js" async=""></script><script src="/_next/static/chunks/117-243189b36d27f566.js" async=""></script><script src="/_next/static/chunks/main-app-d138a6e2f8c847f6.js" async=""></script><script src="/_next/static/chunks/156-1d0bfe26481e7d6b.js" async=""></script><script src="/_next/static/chunks/244-394d86488c726903.js" async=""></script><script src="/_next/static/chunks/2-60733f71509b56f6.js" async=""></script><script src="/_next/static/chunks/app/layout-81f99c0acd50f4fa.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>BibexPy V2</title><meta name="description" content="Harmonizing the Bibliometric Symphony of Scopus and Web of Science"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-screen flex flex-col bg-bg"><div class="transition-opacity duration-300 opacity-100"><div role="status" aria-live="polite" aria-busy="true" class="fixed inset-0 z-[100] flex items-center justify-center bg-ink/20 backdrop-blur-sm p-4"><div class="flex flex-col items-center justify-center gap-4 rounded-2xl bg-white px-10 py-8 shadow-2xl ring-1 ring-black/5"><img src="/images/loader.gif" alt="BibexPy" width="112" height="112" class="h-24 w-24 select-none object-contain" draggable="false"/></div><span class="sr-only">Loading…</span></div></div><header class="border-b border-slate-300/70 bg-[#f7f9fc] text-slate-900 shadow-[0_1px_0_rgba(255,255,255,0.04)]"><div class="mx-auto flex max-w-7xl flex-wrap items-stretch gap-3 px-4 py-3 sm:px-6"><div class="flex min-w-0 items-stretch overflow-hidden rounded-2xl border border-slate-200 bg-white shadow-[0_4px_14px_-12px_rgba(15,23,42,0.25)] flex-1 justify-between"><a aria-label="BibexPy — ana sayfa" class="group flex shrink-0 items-center border-r border-slate-200 px-4 py-2 transition hover:bg-slate-50/70" href="/"><img src="/images/bibexpy-logo-header.png" alt="BibexPy — V2.0.0 Helium" draggable="false" class="h-full max-h-32 w-auto select-none transition group-hover:opacity-90"/></a><div class="flex min-w-0 flex-col"><div class="flex flex-1 items-stretch justify-center gap-2 px-4 pt-3 pb-2"><a class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]" href="/"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition bg-[#0c2847] text-cyan-200 group-hover:bg-[#173553] group-hover:text-cyan-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-house h-7 w-7"><path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"></path><path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">Home</span></a><a class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]" href="/projects/"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition bg-[#0c2847] text-cyan-200 group-hover:bg-[#173553] group-hover:text-cyan-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-kanban h-7 w-7"><path d="M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z"></path><path d="M8 10v4"></path><path d="M12 10v2"></path><path d="M16 10v6"></path></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">Projects</span></a><a class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]" href="/tools/"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition bg-[#0c2847] text-cyan-200 group-hover:bg-[#173553] group-hover:text-cyan-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wrench h-7 w-7"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"></path></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">Tools</span></a></div><div class="border-t border-slate-200 px-3 py-1.5 text-center text-[10px] font-bold uppercase tracking-[0.18em] text-slate-400">Workspaces</div></div><div class="flex min-w-0 flex-col"><div class="flex flex-1 items-stretch justify-center gap-2 px-4 pt-3 pb-2"><a class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]" href="/settings/"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition bg-[#0c2847] text-cyan-200 group-hover:bg-[#173553] group-hover:text-cyan-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings h-7 w-7"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">Settings</span></a></div><div class="border-t border-slate-200 px-3 py-1.5 text-center text-[10px] font-bold uppercase tracking-[0.18em] text-slate-400">System</div></div><div class="flex min-w-0 flex-col"><div class="flex flex-1 items-stretch justify-center gap-2 px-4 pt-3 pb-2"><a href="/docs" target="_blank" rel="noreferrer" class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition bg-[#0c2847] text-cyan-200 group-hover:bg-[#173553] group-hover:text-cyan-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-code-xml h-7 w-7"><path d="m18 16 4-4-4-4"></path><path d="m6 8-4 4 4 4"></path><path d="m14.5 4-5 16"></path></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">API<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link h-3.5 w-3.5 text-slate-400"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></span></a><a href="https://github.com/bcankara/BibexPy" target="_blank" rel="noreferrer" class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition bg-[#0c2847] text-cyan-200 group-hover:bg-[#173553] group-hover:text-cyan-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open h-7 w-7"><path d="M12 7v14"></path><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"></path></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">Source<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link h-3.5 w-3.5 text-slate-400"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></span></a></div><div class="border-t border-slate-200 px-3 py-1.5 text-center text-[10px] font-bold uppercase tracking-[0.18em] text-slate-400">Resources</div></div><div class="flex min-w-0 flex-col"><div class="flex flex-1 items-stretch justify-center gap-2 px-4 pt-3 pb-2"><button type="button" class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition bg-slate-100 ring-1 ring-slate-200 shadow-[0_4px_14px_-10px_rgba(15,23,42,0.3)]"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition ring-2 ring-cyan-500 shadow-[0_6px_18px_-8px_rgba(12,40,71,0.55)]"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" class="h-full w-full" preserveAspectRatio="xMidYMid slice" aria-label="English" role="img"><clipPath id="gb-flag-clip"><rect width="24" height="24"></rect></clipPath><g clip-path="url(#gb-flag-clip)"><rect width="24" height="24" fill="#012169"></rect><path d="M0,0 L24,24 M24,0 L0,24" stroke="#fff" stroke-width="5"></path><path d="M0,0 L24,24 M24,0 L0,24" stroke="#C8102E" stroke-width="2"></path><path d="M12,0 V24 M0,12 H24" stroke="#fff" stroke-width="8"></path><path d="M12,0 V24 M0,12 H24" stroke="#C8102E" stroke-width="5"></path></g></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-900">English</span></button><button type="button" class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition ring-1 ring-slate-300/70 group-hover:ring-slate-400"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" class="h-full w-full" preserveAspectRatio="xMidYMid slice" aria-label="Türkçe" role="img"><rect width="24" height="24" fill="#E30A17"></rect><circle cx="8.5" cy="12" r="5" fill="#fff"></circle><circle cx="10" cy="12" r="4" fill="#E30A17"></circle><polygon fill="#fff" points="12.8,12 14.32,11.51 14.32,9.91 15.26,11.2 16.78,10.71 15.84,12 16.78,13.29 15.26,12.8 14.32,14.09 14.32,12.49"></polygon></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">Türkçe</span></button></div><div class="border-t border-slate-200 px-3 py-1.5 text-center text-[10px] font-bold uppercase tracking-[0.18em] text-slate-400">Language</div></div></div></div></header><main class="flex-1"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div></main><footer class="relative border-t border-slate-200 bg-gradient-to-b from-white to-[#eef2f8]"><div aria-hidden="true" class="pointer-events-none absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-cyan-400/60 to-transparent"></div><div class="mx-auto max-w-6xl px-6 py-10"><div class="grid grid-cols-2 gap-x-8 gap-y-9 md:grid-cols-[1.7fr_1fr_1fr]"><div class="col-span-2 md:col-span-1"><a aria-label="BibexPy" class="block w-full max-w-xs transition hover:opacity-90" href="/"><img src="/images/bibexpy-logo-in.png" alt="BibexPy — V2.0.0 Helium — Bibliometrics Experience with Python" draggable="false" class="h-auto w-full select-none"/></a><p class="mt-4 max-w-xs text-xs leading-relaxed text-slate-500">Self-hosted, reproducible bibliometric data preparation for Web of Science &amp; Scopus.</p><div class="mt-4 flex items-center gap-1.5"><a href="https://github.com/bcankara/BibexPy" target="_blank" rel="noreferrer" aria-label="GitHub" title="GitHub" class="inline-flex h-8 w-8 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-500 transition hover:-translate-y-0.5 hover:border-cyan-300 hover:text-cyan-700 hover:shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-github h-4 w-4"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path></svg></a><a href="https://www.youtube.com/@BibexPy" target="_blank" rel="noreferrer" aria-label="YouTube" title="YouTube" class="inline-flex h-8 w-8 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-500 transition hover:-translate-y-0.5 hover:border-cyan-300 hover:text-cyan-700 hover:shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-youtube h-4 w-4"><path d="M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17"></path><path d="m10 15 5-3-5-3z"></path></svg></a><a href="https://twitter.com/BibexPy" target="_blank" rel="noreferrer" aria-label="X (Twitter)" title="X (Twitter)" class="inline-flex h-8 w-8 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-500 transition hover:-translate-y-0.5 hover:border-cyan-300 hover:text-cyan-700 hover:shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-twitter h-4 w-4"><path d="M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"></path></svg></a><a href="https://www.instagram.com/bibexpy/" target="_blank" rel="noreferrer" aria-label="Instagram" title="Instagram" class="inline-flex h-8 w-8 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-500 transition hover:-translate-y-0.5 hover:border-cyan-300 hover:text-cyan-700 hover:shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-instagram h-4 w-4"><rect width="20" height="20" x="2" y="2" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" x2="17.51" y1="6.5" y2="6.5"></line></svg></a></div></div><div><h3 class="text-[11px] font-bold uppercase tracking-[0.14em] text-slate-400">Resources</h3><ul class="mt-3.5 space-y-2.5"><li><a href="/docs" target="_blank" rel="noreferrer" class="group inline-flex items-center gap-2 text-xs font-medium text-slate-500 transition hover:text-cyan-700"><span class="text-slate-400 transition group-hover:text-cyan-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-life-buoy h-3.5 w-3.5"><circle cx="12" cy="12" r="10"></circle><path d="m4.93 4.93 4.24 4.24"></path><path d="m14.83 9.17 4.24-4.24"></path><path d="m14.83 14.83 4.24 4.24"></path><path d="m9.17 14.83-4.24 4.24"></path><circle cx="12" cy="12" r="4"></circle></svg></span><span>Documentation</span></a></li><li><a class="group inline-flex items-center gap-2 text-xs font-medium text-slate-500 transition hover:text-cyan-700" href="/tools/"><span class="text-slate-400 transition group-hover:text-cyan-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wrench h-3.5 w-3.5"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"></path></svg></span><span>Tools</span></a></li><li><a class="group inline-flex items-center gap-2 text-xs font-medium text-slate-500 transition hover:text-cyan-700" href="/settings/"><span class="text-slate-400 transition group-hover:text-cyan-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings h-3.5 w-3.5"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg></span><span>Settings</span></a></li></ul></div><div><h3 class="text-[11px] font-bold uppercase tracking-[0.14em] text-slate-400">Project</h3><ul class="mt-3.5 space-y-2.5"><li><a href="https://doi.org/10.1016/j.softx.2025.102098" target="_blank" rel="noreferrer" class="group inline-flex items-center gap-2 text-xs font-medium text-slate-500 transition hover:text-cyan-700"><span class="text-slate-400 transition group-hover:text-cyan-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-text h-3.5 w-3.5"><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 9H8"></path><path d="M16 13H8"></path><path d="M16 17H8"></path></svg></span><span>Paper · SoftwareX</span></a></li><li><a href="https://bibexpy.com" target="_blank" rel="noreferrer" class="group inline-flex items-center gap-2 text-xs font-medium text-slate-500 transition hover:text-cyan-700"><span class="text-slate-400 transition group-hover:text-cyan-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe h-3.5 w-3.5"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg></span><span>Website</span></a></li><li><a href="mailto:info@bibexpy.com" target="_blank" rel="noreferrer" class="group inline-flex items-center gap-2 text-xs font-medium text-slate-500 transition hover:text-cyan-700"><span class="text-slate-400 transition group-hover:text-cyan-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail h-3.5 w-3.5"><rect width="20" height="16" x="2" y="4" rx="2"></rect><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"></path></svg></span><span>Contact</span></a></li></ul></div></div><div class="mt-9 flex flex-col items-start justify-between gap-3 border-t border-slate-200/70 pt-5 text-[11px] text-slate-400 sm:flex-row sm:items-center"><span>© 2025 BibexPy ·<!-- --> <a href="https://www.gnu.org/licenses/gpl-3.0" target="_blank" rel="noreferrer" class="font-medium text-slate-500 transition hover:text-cyan-700">GPL-3.0-or-later</a> <!-- -->· <!-- -->All rights reserved.</span><a href="https://doi.org/10.1016/j.softx.2025.102098" target="_blank" rel="noreferrer" class="group inline-flex items-center gap-1.5 font-semibold text-slate-500 transition hover:text-cyan-700">Kara, Şahin &amp; Dirsehan (2025) · SoftwareX<span class="inline-block text-cyan-600 transition group-hover:translate-x-0.5">Cite →</span></a></div></div></footer><script src="/_next/static/chunks/webpack-c81f7fd28659d64f.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/76020a0003f90b67.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[2846,[],\"\"]\n4:I[4707,[],\"\"]\n5:I[6423,[],\"\"]\n6:I[1514,[\"156\",\"static/chunks/156-1d0bfe26481e7d6b.js\",\"244\",\"static/chunks/244-394d86488c726903.js\",\"2\",\"static/chunks/2-60733f71509b56f6.js\",\"185\",\"static/chunks/app/layout-81f99c0acd50f4fa.js\"],\"InitialLoadGate\"]\n7:I[3554,[\"156\",\"static/chunks/156-1d0bfe26481e7d6b.js\",\"244\",\"static/chunks/244-394d86488c726903.js\",\"2\",\"static/chunks/2-60733f71509b56f6.js\",\"185\",\"static/chunks/app/layout-81f99c0acd50f4fa.js\"],\"I18nProvider\"]\n8:I[5499,[\"156\",\"static/chunks/156-1d0bfe26481e7d6b.js\",\"244\",\"static/chunks/244-394d86488c726903.js\",\"2\",\"static/chunks/2-60733f71509b56f6.js\",\"185\",\"static/chunks/app/layout-81f99c0acd50f4fa.js\"],\"DialogProvider\"]\n9:I[7002,[\"156\",\"static/chunks/156-1d0bfe26481e7d6b.js\",\"244\",\"static/chunks/244-394d86488c726903.js\",\"2\",\"static/chunks/2-60733f71509b56f6.js\",\"185\",\"static/chunks/app/layout-81f99c0acd50f4fa.js\"],\"AppShell\"]\nf:I[1060,[],\"\"]\na:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\nb:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\nc:{\"display\":\"inline-block\"}\nd:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n10:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"kiP541v1aZJ2t7QWY6pup\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\",\"\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/76020a0003f90b67.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-screen flex flex-col bg-bg\",\"children\":[[\"$\",\"$L6\",null,{}],[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$a\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$b\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$c\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$d\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Le\"],\"globalErrorComponent\":\"$f\",\"missingSlots\":\"$W10\"}]\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"BibexPy V2\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Harmonizing the Bibliometric Symphony of Scopus and Web of Science\"}]]\n3:null\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/loader.gif"/><link rel="preload" as="image" href="/images/bibexpy-logo-header.png"/><link rel="preload" as="image" href="/images/bibexpy-logo-in.png"/><link rel="stylesheet" href="/_next/static/css/76020a0003f90b67.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-c81f7fd28659d64f.js"/><script src="/_next/static/chunks/fd9d1056-f2718be92181f426.js" async=""></script><script src="/_next/static/chunks/117-7ad5186126fa076d.js" async=""></script><script src="/_next/static/chunks/main-app-d138a6e2f8c847f6.js" async=""></script><script src="/_next/static/chunks/156-75beffb8ae92a7f3.js" async=""></script><script src="/_next/static/chunks/244-67ea7b435f7b01fe.js" async=""></script><script src="/_next/static/chunks/2-80e5ff6ecaab1b8b.js" async=""></script><script src="/_next/static/chunks/app/layout-0d5fc68ac8971a04.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>BibexPy V2</title><meta name="description" content="Harmonizing the Bibliometric Symphony of Scopus and Web of Science"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-screen flex flex-col bg-bg"><div class="transition-opacity duration-300 opacity-100"><div role="status" aria-live="polite" aria-busy="true" class="fixed inset-0 z-[100] flex items-center justify-center bg-ink/20 backdrop-blur-sm p-4"><div class="flex flex-col items-center justify-center gap-4 rounded-2xl bg-white px-10 py-8 shadow-2xl ring-1 ring-black/5"><img src="/images/loader.gif" alt="BibexPy" width="112" height="112" class="h-24 w-24 select-none object-contain" draggable="false"/></div><span class="sr-only">Loading…</span></div></div><header class="border-b border-slate-300/70 bg-[#f7f9fc] text-slate-900 shadow-[0_1px_0_rgba(255,255,255,0.04)]"><div class="mx-auto flex max-w-7xl flex-wrap items-stretch gap-3 px-4 py-3 sm:px-6"><div class="flex min-w-0 items-stretch overflow-hidden rounded-2xl border border-slate-200 bg-white shadow-[0_4px_14px_-12px_rgba(15,23,42,0.25)] flex-1 justify-between"><a aria-label="BibexPy — ana sayfa" class="group flex shrink-0 items-center border-r border-slate-200 px-4 py-2 transition hover:bg-slate-50/70" href="/"><img src="/images/bibexpy-logo-header.png" alt="BibexPy — V2.0.0 Helium" draggable="false" class="h-full max-h-32 w-auto select-none transition group-hover:opacity-90"/></a><div class="flex min-w-0 flex-col"><div class="flex flex-1 items-stretch justify-center gap-2 px-4 pt-3 pb-2"><a class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]" href="/"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition bg-[#0c2847] text-cyan-200 group-hover:bg-[#173553] group-hover:text-cyan-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-house h-7 w-7"><path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"></path><path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">Home</span></a><a class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]" href="/projects/"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition bg-[#0c2847] text-cyan-200 group-hover:bg-[#173553] group-hover:text-cyan-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-kanban h-7 w-7"><path d="M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z"></path><path d="M8 10v4"></path><path d="M12 10v2"></path><path d="M16 10v6"></path></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">Projects</span></a><a class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]" href="/tools/"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition bg-[#0c2847] text-cyan-200 group-hover:bg-[#173553] group-hover:text-cyan-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wrench h-7 w-7"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"></path></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">Tools</span></a></div><div class="border-t border-slate-200 px-3 py-1.5 text-center text-[10px] font-bold uppercase tracking-[0.18em] text-slate-400">Workspaces</div></div><div class="flex min-w-0 flex-col"><div class="flex flex-1 items-stretch justify-center gap-2 px-4 pt-3 pb-2"><a class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]" href="/settings/"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition bg-[#0c2847] text-cyan-200 group-hover:bg-[#173553] group-hover:text-cyan-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings h-7 w-7"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">Settings</span></a></div><div class="border-t border-slate-200 px-3 py-1.5 text-center text-[10px] font-bold uppercase tracking-[0.18em] text-slate-400">System</div></div><div class="flex min-w-0 flex-col"><div class="flex flex-1 items-stretch justify-center gap-2 px-4 pt-3 pb-2"><a href="/docs" target="_blank" rel="noreferrer" class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition bg-[#0c2847] text-cyan-200 group-hover:bg-[#173553] group-hover:text-cyan-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-code-xml h-7 w-7"><path d="m18 16 4-4-4-4"></path><path d="m6 8-4 4 4 4"></path><path d="m14.5 4-5 16"></path></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">API<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link h-3.5 w-3.5 text-slate-400"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></span></a><a href="https://github.com/bcankara/BibexPy" target="_blank" rel="noreferrer" class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition bg-[#0c2847] text-cyan-200 group-hover:bg-[#173553] group-hover:text-cyan-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open h-7 w-7"><path d="M12 7v14"></path><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"></path></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">Source<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link h-3.5 w-3.5 text-slate-400"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></span></a></div><div class="border-t border-slate-200 px-3 py-1.5 text-center text-[10px] font-bold uppercase tracking-[0.18em] text-slate-400">Resources</div></div><div class="flex min-w-0 flex-col"><div class="flex flex-1 items-stretch justify-center gap-2 px-4 pt-3 pb-2"><button type="button" class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition bg-slate-100 ring-1 ring-slate-200 shadow-[0_4px_14px_-10px_rgba(15,23,42,0.3)]"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition ring-2 ring-cyan-500 shadow-[0_6px_18px_-8px_rgba(12,40,71,0.55)]"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" class="h-full w-full" preserveAspectRatio="xMidYMid slice" aria-label="English" role="img"><clipPath id="gb-flag-clip"><rect width="24" height="24"></rect></clipPath><g clip-path="url(#gb-flag-clip)"><rect width="24" height="24" fill="#012169"></rect><path d="M0,0 L24,24 M24,0 L0,24" stroke="#fff" stroke-width="5"></path><path d="M0,0 L24,24 M24,0 L0,24" stroke="#C8102E" stroke-width="2"></path><path d="M12,0 V24 M0,12 H24" stroke="#fff" stroke-width="8"></path><path d="M12,0 V24 M0,12 H24" stroke="#C8102E" stroke-width="5"></path></g></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-900">English</span></button><button type="button" class="group flex flex-col items-center justify-start gap-2 rounded-lg px-3 py-2.5 text-center transition hover:bg-slate-50 hover:shadow-[0_4px_14px_-10px_rgba(15,23,42,0.4)]"><span class="flex h-14 w-14 items-center justify-center overflow-hidden rounded-xl transition ring-1 ring-slate-300/70 group-hover:ring-slate-400"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" class="h-full w-full" preserveAspectRatio="xMidYMid slice" aria-label="Türkçe" role="img"><rect width="24" height="24" fill="#E30A17"></rect><circle cx="8.5" cy="12" r="5" fill="#fff"></circle><circle cx="10" cy="12" r="4" fill="#E30A17"></circle><polygon fill="#fff" points="12.8,12 14.32,11.51 14.32,9.91 15.26,11.2 16.78,10.71 15.84,12 16.78,13.29 15.26,12.8 14.32,14.09 14.32,12.49"></polygon></svg></span><span class="inline-flex items-center gap-1 text-[13px] font-bold leading-none text-slate-700 group-hover:text-slate-900">Türkçe</span></button></div><div class="border-t border-slate-200 px-3 py-1.5 text-center text-[10px] font-bold uppercase tracking-[0.18em] text-slate-400">Language</div></div></div></div></header><main class="flex-1"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div></main><footer class="relative border-t border-slate-200 bg-gradient-to-b from-white to-[#eef2f8]"><div aria-hidden="true" class="pointer-events-none absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-cyan-400/60 to-transparent"></div><div class="mx-auto max-w-6xl px-6 py-10"><div class="grid grid-cols-2 gap-x-8 gap-y-9 md:grid-cols-[1.7fr_1fr_1fr]"><div class="col-span-2 md:col-span-1"><a aria-label="BibexPy" class="block w-full max-w-xs transition hover:opacity-90" href="/"><img src="/images/bibexpy-logo-in.png" alt="BibexPy — V2.0.0 Helium — Bibliometrics Experience with Python" draggable="false" class="h-auto w-full select-none"/></a><p class="mt-4 max-w-xs text-xs leading-relaxed text-slate-500">Self-hosted, reproducible bibliometric data preparation for Web of Science &amp; Scopus.</p><div class="mt-4 flex items-center gap-1.5"><a href="https://github.com/bcankara/BibexPy" target="_blank" rel="noreferrer" aria-label="GitHub" title="GitHub" class="inline-flex h-8 w-8 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-500 transition hover:-translate-y-0.5 hover:border-cyan-300 hover:text-cyan-700 hover:shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-github h-4 w-4"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path></svg></a><a href="https://www.youtube.com/@BibexPy" target="_blank" rel="noreferrer" aria-label="YouTube" title="YouTube" class="inline-flex h-8 w-8 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-500 transition hover:-translate-y-0.5 hover:border-cyan-300 hover:text-cyan-700 hover:shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-youtube h-4 w-4"><path d="M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17"></path><path d="m10 15 5-3-5-3z"></path></svg></a><a href="https://twitter.com/BibexPy" target="_blank" rel="noreferrer" aria-label="X (Twitter)" title="X (Twitter)" class="inline-flex h-8 w-8 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-500 transition hover:-translate-y-0.5 hover:border-cyan-300 hover:text-cyan-700 hover:shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-twitter h-4 w-4"><path d="M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"></path></svg></a><a href="https://www.instagram.com/bibexpy/" target="_blank" rel="noreferrer" aria-label="Instagram" title="Instagram" class="inline-flex h-8 w-8 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-500 transition hover:-translate-y-0.5 hover:border-cyan-300 hover:text-cyan-700 hover:shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-instagram h-4 w-4"><rect width="20" height="20" x="2" y="2" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" x2="17.51" y1="6.5" y2="6.5"></line></svg></a></div></div><div><h3 class="text-[11px] font-bold uppercase tracking-[0.14em] text-slate-400">Resources</h3><ul class="mt-3.5 space-y-2.5"><li><a href="/docs" target="_blank" rel="noreferrer" class="group inline-flex items-center gap-2 text-xs font-medium text-slate-500 transition hover:text-cyan-700"><span class="text-slate-400 transition group-hover:text-cyan-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-life-buoy h-3.5 w-3.5"><circle cx="12" cy="12" r="10"></circle><path d="m4.93 4.93 4.24 4.24"></path><path d="m14.83 9.17 4.24-4.24"></path><path d="m14.83 14.83 4.24 4.24"></path><path d="m9.17 14.83-4.24 4.24"></path><circle cx="12" cy="12" r="4"></circle></svg></span><span>Documentation</span></a></li><li><a class="group inline-flex items-center gap-2 text-xs font-medium text-slate-500 transition hover:text-cyan-700" href="/tools/"><span class="text-slate-400 transition group-hover:text-cyan-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wrench h-3.5 w-3.5"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"></path></svg></span><span>Tools</span></a></li><li><a class="group inline-flex items-center gap-2 text-xs font-medium text-slate-500 transition hover:text-cyan-700" href="/settings/"><span class="text-slate-400 transition group-hover:text-cyan-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings h-3.5 w-3.5"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg></span><span>Settings</span></a></li></ul></div><div><h3 class="text-[11px] font-bold uppercase tracking-[0.14em] text-slate-400">Project</h3><ul class="mt-3.5 space-y-2.5"><li><a href="https://doi.org/10.1016/j.softx.2025.102098" target="_blank" rel="noreferrer" class="group inline-flex items-center gap-2 text-xs font-medium text-slate-500 transition hover:text-cyan-700"><span class="text-slate-400 transition group-hover:text-cyan-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-text h-3.5 w-3.5"><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 9H8"></path><path d="M16 13H8"></path><path d="M16 17H8"></path></svg></span><span>Paper · SoftwareX</span></a></li><li><a href="https://bibexpy.com" target="_blank" rel="noreferrer" class="group inline-flex items-center gap-2 text-xs font-medium text-slate-500 transition hover:text-cyan-700"><span class="text-slate-400 transition group-hover:text-cyan-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe h-3.5 w-3.5"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg></span><span>Website</span></a></li><li><a href="mailto:info@bibexpy.com" target="_blank" rel="noreferrer" class="group inline-flex items-center gap-2 text-xs font-medium text-slate-500 transition hover:text-cyan-700"><span class="text-slate-400 transition group-hover:text-cyan-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail h-3.5 w-3.5"><rect width="20" height="16" x="2" y="4" rx="2"></rect><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"></path></svg></span><span>Contact</span></a></li></ul></div></div><div class="mt-9 flex flex-col items-start justify-between gap-3 border-t border-slate-200/70 pt-5 text-[11px] text-slate-400 sm:flex-row sm:items-center"><span>© 2025 BibexPy ·<!-- --> <a href="https://www.gnu.org/licenses/gpl-3.0" target="_blank" rel="noreferrer" class="font-medium text-slate-500 transition hover:text-cyan-700">GPL-3.0-or-later</a> <!-- -->· <!-- -->All rights reserved.</span><a href="https://doi.org/10.1016/j.softx.2025.102098" target="_blank" rel="noreferrer" class="group inline-flex items-center gap-1.5 font-semibold text-slate-500 transition hover:text-cyan-700">Kara, Şahin &amp; Dirsehan (2025) · SoftwareX<span class="inline-block text-cyan-600 transition group-hover:translate-x-0.5">Cite →</span></a></div></div></footer><script src="/_next/static/chunks/webpack-c81f7fd28659d64f.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/76020a0003f90b67.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[2846,[],\"\"]\n4:I[4707,[],\"\"]\n5:I[6423,[],\"\"]\n6:I[1514,[\"156\",\"static/chunks/156-75beffb8ae92a7f3.js\",\"244\",\"static/chunks/244-67ea7b435f7b01fe.js\",\"2\",\"static/chunks/2-80e5ff6ecaab1b8b.js\",\"185\",\"static/chunks/app/layout-0d5fc68ac8971a04.js\"],\"InitialLoadGate\"]\n7:I[3554,[\"156\",\"static/chunks/156-75beffb8ae92a7f3.js\",\"244\",\"static/chunks/244-67ea7b435f7b01fe.js\",\"2\",\"static/chunks/2-80e5ff6ecaab1b8b.js\",\"185\",\"static/chunks/app/layout-0d5fc68ac8971a04.js\"],\"I18nProvider\"]\n8:I[5499,[\"156\",\"static/chunks/156-75beffb8ae92a7f3.js\",\"244\",\"static/chunks/244-67ea7b435f7b01fe.js\",\"2\",\"static/chunks/2-80e5ff6ecaab1b8b.js\",\"185\",\"static/chunks/app/layout-0d5fc68ac8971a04.js\"],\"DialogProvider\"]\n9:I[7002,[\"156\",\"static/chunks/156-75beffb8ae92a7f3.js\",\"244\",\"static/chunks/244-67ea7b435f7b01fe.js\",\"2\",\"static/chunks/2-80e5ff6ecaab1b8b.js\",\"185\",\"static/chunks/app/layout-0d5fc68ac8971a04.js\"],\"AppShell\"]\nf:I[1060,[],\"\"]\na:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\nb:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\nc:{\"display\":\"inline-block\"}\nd:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n10:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"_W_stYffpyiusUxb9NuR7\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\",\"\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/76020a0003f90b67.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-screen flex flex-col bg-bg\",\"children\":[[\"$\",\"$L6\",null,{}],[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$a\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$b\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$c\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$d\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Le\"],\"globalErrorComponent\":\"$f\",\"missingSlots\":\"$W10\"}]\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"BibexPy V2\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Harmonizing the Bibliometric Symphony of Scopus and Web of Science\"}]]\n3:null\n"])</script></body></html>