{
  "arac": "kosu-tempo-pace",
  "surum": "1.0.0",
  "deterministik": true,
  "offline": true,
  "girdiler": [
    {
      "ad": "mesafe",
      "tip": "number",
      "birim": "km|mil|m",
      "zorunlu": "üçlüden ikisi"
    },
    {
      "ad": "sure",
      "tip": "string",
      "birim": "toplam_dakika:saniye|saat:dakika:saniye|dakika",
      "zorunlu": "üçlüden ikisi"
    },
    {
      "ad": "tempo",
      "tip": "string",
      "birim": "dk/km|dk/mil",
      "zorunlu": "üçlüden ikisi"
    }
  ],
  "sure_grameri": {
    "iki_parca": {
      "bicim": "toplam_dakika:saniye",
      "toplam_dakika": "0 veya daha büyük; 59 ile sınırlı değil",
      "saniye": "0–59"
    },
    "uc_parca": {
      "bicim": "saat:dakika:saniye",
      "saat": "0 veya daha büyük",
      "dakika": "0–59",
      "saniye": "0–59"
    },
    "ciplak_sayi": "Dakika sayılır; ondalık dakika kabul edilir.",
    "ornekler": [
      "45:30 → 2730 sn",
      "60:00 → 3600 sn",
      "90:00 → 5400 sn",
      "1:45:30 → 6330 sn",
      "90 → 5400 sn"
    ],
    "gecersiz_ornekler": [
      "10:60 → GECERSIZ_SURE_BICIMI",
      "1:60:00 → GECERSIZ_SURE_BICIMI"
    ]
  },
  "opsiyonel_girdiler": [
    {
      "ad": "mesafeBirimi",
      "tip": "enum",
      "degerler": ["km", "mil", "m"],
      "varsayilan": "km"
    },
    {
      "ad": "tempoBirimi",
      "tip": "enum",
      "degerler": ["dk/km", "dk/mil"],
      "varsayilan": "dk/km"
    },
    {
      "ad": "splitAraligi",
      "tip": "number",
      "birim_kurali": "mesafeBirimi=\"mil\" ise mil; diğer tüm durumlarda km",
      "minimum_haric": 0,
      "en_fazla_split_satiri": 5000,
      "varsayilan": 1
    },
    {
      "ad": "splitStratejisi",
      "tip": "enum",
      "degerler": ["esit", "negatif", "pozitif"],
      "varsayilan": "esit"
    },
    {
      "ad": "splitYuzde",
      "tip": "number",
      "birim": "%",
      "minimum": 0,
      "maksimum": 50,
      "sinirlar_dahil": true,
      "varsayilan": 2
    },
    {
      "ad": "riegelUs",
      "tip": "number",
      "aralik": "1.05–1.08",
      "varsayilan": 1.06
    },
    {
      "ad": "esasAlinan",
      "tip": "enum",
      "degerler": ["mesafe-sure", "mesafe-tempo", "sure-tempo"],
      "zorunlu": "mesafe, süre ve tempo üçü de verilirse"
    }
  ],
  "cikti_semasi": {
    "mesafe_km": {
      "tip": "number",
      "birim": "km"
    },
    "mesafe_gosterim": {
      "tip": "string",
      "birim": "mesafeBirimi ile biçimlendirilmiş"
    },
    "sure_sn": {
      "tip": "number",
      "birim": "saniye"
    },
    "sure_gosterim": {
      "tip": "string",
      "birim": "dd:ss veya s:dd:ss; tam saniye"
    },
    "sure_hassas_gosterim": {
      "tip": "string",
      "birim": "dd:ss,d veya s:dd:ss,d; onda bir saniye"
    },
    "tempo_sn_km": {
      "tip": "number",
      "birim": "saniye/km"
    },
    "tempo_gosterim": {
      "tip": "string",
      "birim": "dd:ss/km"
    },
    "tempo_mil_gosterim": {
      "tip": "string",
      "birim": "dd:ss,ss/mil"
    },
    "hiz_kmsa": {
      "tip": "number",
      "birim": "km/sa"
    },
    "hiz_mph": {
      "tip": "number",
      "birim": "mil/sa (mph)"
    },
    "splitler": {
      "tip": "array",
      "oge": {
        "mesafe_km": {
          "tip": "number",
          "birim": "km"
        },
        "mesafe_gosterim": {
          "tip": "string",
          "birim": "split birimi ile biçimlendirilmiş"
        },
        "kumulatif_sn": {
          "tip": "number",
          "birim": "saniye"
        },
        "kumulatif_gosterim": {
          "tip": "string",
          "birim": "dd:ss veya s:dd:ss; tam saniye"
        },
        "kumulatif_hassas_gosterim": {
          "tip": "string",
          "birim": "dd:ss,d veya s:dd:ss,d; onda bir saniye"
        },
        "ara_sn": {
          "tip": "number",
          "birim": "saniye"
        },
        "ara_gosterim": {
          "tip": "string",
          "birim": "dd:ss veya s:dd:ss; tam saniye"
        },
        "ara_hassas_gosterim": {
          "tip": "string",
          "birim": "dd:ss,d veya s:dd:ss,d; onda bir saniye"
        }
      }
    },
    "split_ozeti": {
      "tip": "object",
      "alanlar": {
        "strateji": {
          "tip": "enum",
          "degerler": ["esit", "negatif", "pozitif"]
        },
        "yuzde": {
          "tip": "number",
          "birim": "%"
        },
        "ilk_yari_sn": {
          "tip": "number",
          "birim": "saniye"
        },
        "ikinci_yari_sn": {
          "tip": "number",
          "birim": "saniye"
        },
        "ilk_yari_gosterim": {
          "tip": "string",
          "birim": "dd:ss veya s:dd:ss; tam saniye"
        },
        "ikinci_yari_gosterim": {
          "tip": "string",
          "birim": "dd:ss veya s:dd:ss; tam saniye"
        }
      }
    },
    "esdegerler": {
      "tip": "array",
      "oge": {
        "mesafe": {
          "tip": "enum",
          "degerler": ["5K", "10K", "yari", "maraton"]
        },
        "mesafe_km": {
          "tip": "number",
          "birim": "km"
        },
        "tahmini_sure_sn": {
          "tip": "number",
          "birim": "saniye"
        },
        "tahmini_sure_gosterim": {
          "tip": "string",
          "birim": "dd:ss veya s:dd:ss; tam saniye"
        },
        "yontem": {
          "tip": "sabit",
          "deger": "Riegel"
        },
        "us": {
          "tip": "number",
          "birim": "boyutsuz"
        },
        "kesinlik": {
          "tip": "sabit",
          "deger": "TAHMIN"
        }
      }
    },
    "riegel_us": {
      "tip": "number",
      "birim": "boyutsuz"
    },
    "vdot": {
      "tip": "number|null",
      "birim": "boyutsuz; uygun sonuçta onda bire yuvarlanmış"
    },
    "vdot_detay": {
      "tip": "object|null",
      "alanlar": {
        "vdot": {
          "tip": "number",
          "birim": "boyutsuz; ham değer"
        },
        "v": {
          "tip": "number",
          "birim": "m/dk"
        },
        "vo2": {
          "tip": "number",
          "birim": "ml/kg/dk"
        },
        "yuzde": {
          "tip": "number",
          "birim": "oran (0–1)"
        }
      }
    },
    "yorumlar": {
      "tip": "object",
      "alanlar": {
        "sure": {
          "tip": "string",
          "zorunlu": false
        },
        "tempo": {
          "tip": "string",
          "zorunlu": false
        }
      }
    },
    "uyarilar": {
      "tip": "array",
      "oge_tipi": "string"
    }
  },
  "ornek_cagri": {
    "girdi": {
      "mesafe": 10,
      "mesafeBirimi": "km",
      "sure": "50:00"
    },
    "cikti": {
      "tempo_gosterim": "5:00/km",
      "hiz_kmsa": 12
    }
  },
  "formul_aciklamasi": "tempo = süre/mesafe; süre = tempo×mesafe; hız = 3600/tempo_sn_km; Riegel T2=T1(D2/D1)^1.06",
  "hata_kodlari": [
    {
      "kod": "COK_FAZLA_SPLIT",
      "anlam": "Seçilen split aralığı 5000'den fazla satır üretir."
    },
    {
      "kod": "EKSIK_GIRDI",
      "anlam": "Mesafe, süre ve tempo üçlüsünden en az iki değer verilmemiştir."
    },
    {
      "kod": "GECERSIZ_MESAFE",
      "anlam": "Mesafe sonlu bir sayı değildir, ayrıştırılamaz veya negatiftir."
    },
    {
      "kod": "GECERSIZ_MESAFE_BIRIMI",
      "anlam": "Mesafe birimi km, mil veya m değildir."
    },
    {
      "kod": "GECERSIZ_RIEGEL_GIRDISI",
      "anlam": "Riegel yardımcı fonksiyonunun süre, mesafe veya üs girdilerinden biri pozitif ve sonlu değildir."
    },
    {
      "kod": "GECERSIZ_RIEGEL_USSU",
      "anlam": "Riegel üssü 1,05–1,08 kapalı aralığında değildir."
    },
    {
      "kod": "GECERSIZ_SONUC",
      "anlam": "Hesap veya Riegel tahmini sonlu ve pozitif sonuç üretmemiştir ya da dönüş ağacı sonlu olmayan/JSON-güvenli olmayan değer içerir."
    },
    {
      "kod": "GECERSIZ_SPLIT",
      "anlam": "Split yardımcı fonksiyonundaki sayısal değerlerden biri sonlu değildir."
    },
    {
      "kod": "GECERSIZ_SPLIT_ARALIGI",
      "anlam": "Split aralığı ayrıştırılamaz, sonlu değildir veya sıfırdan büyük değildir."
    },
    {
      "kod": "GECERSIZ_SPLIT_STRATEJISI",
      "anlam": "Split stratejisi esit, negatif veya pozitif değildir."
    },
    {
      "kod": "GECERSIZ_SPLIT_YUZDESI",
      "anlam": "Split yüzdesi 0–50 kapalı aralığında değildir."
    },
    {
      "kod": "GECERSIZ_SURE_BICIMI",
      "anlam": "Süre ayrıştırılamaz, sonlu değildir, negatiftir veya süre gramerindeki 0–59 parça sınırlarını aşar."
    },
    {
      "kod": "GECERSIZ_TEMPO_BICIMI",
      "anlam": "Tempo ayrıştırılamaz, sonlu değildir veya negatiftir."
    },
    {
      "kod": "GECERSIZ_TEMPO_BIRIMI",
      "anlam": "Tempo birimi dk/km veya dk/mil değildir."
    },
    {
      "kod": "SIFIR_MESAFE",
      "anlam": "Mesafe sıfırdır; bölme yapılmaz."
    },
    {
      "kod": "SIFIR_SURE",
      "anlam": "Süre sıfırdır; bölme yapılmaz."
    },
    {
      "kod": "SIFIR_TEMPO",
      "anlam": "Tempo sıfırdır; bölme yapılmaz."
    },
    {
      "kod": "TUTARSIZ_UCLU",
      "anlam": "Üç alan da verilmiş, ancak hangi ikisinin esas alınacağı geçerli bir esasAlinan değeriyle belirtilmemiştir."
    }
  ],
  "model_sinirlamalari": [
    {
      "model": "Riegel",
      "sonuc_isareti": "TAHMIN",
      "ornekleme_bagli": true,
      "uyari": "BMC 2016'nın rekreasyonel koşucu örnekleminde Riegel maraton tahminleri, koşucuların yaklaşık yarısında gerçekleşen süreden en az 10 dakika daha hızlıydı; bu örnekleme bağlı bulgu özellikle kısa yarıştan maratona aktarımı ihtiyatla yorumlamayı gerektirir.",
      "kaynak": "https://doi.org/10.1186/s13102-016-0052-y"
    },
    {
      "model": "VDOT",
      "sonuc_isareti": "TAHMIN",
      "uyari": "Denklem çıktısı laboratuvar VO2max ölçümü veya sağlık değerlendirmesi değildir."
    }
  ],
  "sinirlar": [
    "Riegel eşdeğeri tahmindir",
    "VDOT denklem çıktısı laboratuvar ölçümü değildir",
    "antrenman programı değildir"
  ],
  "kaynaklar": {
    "resmi_mesafeler": "https://worldathletics.org/about-iaaf/documents/book-of-rules",
    "resmi_mesafeler_tr": "https://taf.org.tr/wp-content/uploads/2026/02/taf_atk_2020_baski-1-1.pdf",
    "mil_tanimi": "https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nbsspecialpublication447.pdf",
    "riegel_orijinal_1977": "https://www.rrtc.net/Articles/TechTips.pdf",
    "riegel": "https://pmc.ncbi.nlm.nih.gov/articles/PMC4919094/",
    "riegel_us_araligi": "https://pmc.ncbi.nlm.nih.gov/articles/PMC5000509/",
    "vdot_denklemleri": "https://jmh.cl/index.php/jmh/article/view/211"
  }
}
