mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-26 00:46:22 +02:00
Feat: TrustGraph i18n & Documentation Translation Updates (#781)
Native CLI i18n: The TrustGraph CLI has built-in translation support that dynamically loads language strings. You can test and use different languages by simply passing the --lang flag (e.g., --lang es for Spanish, --lang ru for Russian) or by configuring your environment's LANG variable. Automated Docs Translations: This PR introduces autonomously translated Markdown documentation into several target languages, including Spanish, Swahili, Portuguese, Turkish, Hindi, Hebrew, Arabic, Simplified Chinese, and Russian.
This commit is contained in:
parent
19f73e4cdc
commit
f95fd4f052
560 changed files with 236300 additions and 99 deletions
775
docs/tech-specs/graph-contexts.tr.md
Normal file
775
docs/tech-specs/graph-contexts.tr.md
Normal file
|
|
@ -0,0 +1,775 @@
|
|||
---
|
||||
layout: default
|
||||
title: "Graph Contexts Technical Specification"
|
||||
parent: "Turkish (Beta)"
|
||||
---
|
||||
|
||||
<<<<<<< HEAD
|
||||
# Graph Contexts Technical Specification
|
||||
|
||||
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
|
||||
|
||||
## Overview
|
||||
|
||||
Bu özellik, TrustGraph'ın temel grafik yapılarına yapılan değişiklikleri tanımlar ve
|
||||
RDF 1.2 ile uyumlu olacak ve tam RDF Dataset semantiğini destekleyecek şekilde tasarlanmıştır. Bu, 2.x yayın serisi için önemli bir değişikliktir.
|
||||
|
||||
|
||||
### Versioning
|
||||
=======
|
||||
# Graph Contexts Teknik Özellikler
|
||||
|
||||
## Genel Bakış
|
||||
|
||||
Bu özellik, TrustGraph'ın temel grafik öğelerindeki değişiklikleri,
|
||||
RDF 1.2 ile uyumlu olacak ve tam RDF Dataset semantiğini destekleyecek şekilde tanımlar. Bu, 2.x sürüm serisi için önemli bir değişikliktir.
|
||||
|
||||
|
||||
### Sürümleme
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
**2.0**: Erken benimseyen sürüm. Temel özellikler mevcut, ancak henüz tamamen
|
||||
üretim ortamına hazır olmayabilir.
|
||||
**2.1 / 2.2**: Üretim sürümü. Kararlılık ve eksiksizlik doğrulandı.
|
||||
|
||||
Olgunluk konusundaki esneklik kasıtlıdır; erken benimseyenler, tüm özellikler
|
||||
üretim ortamına hazır hale gelmeden önce yeni yeteneklere erişebilir.
|
||||
|
||||
<<<<<<< HEAD
|
||||
## Goals
|
||||
=======
|
||||
## Hedefler
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
Bu çalışmanın temel hedefleri, gerçekler/ifadeler hakkında meta veri sağlamaktır:
|
||||
|
||||
**Zaman bilgisi**: Gerçekleri zamanla ilgili bilgilerle ilişkilendirme
|
||||
<<<<<<< HEAD
|
||||
Bir gerçeğin doğru olduğu düşünüldüğü zaman
|
||||
Bir gerçeğin doğru hale geldiği zaman
|
||||
Bir gerçeğin yanlış olduğu tespit edildiği zaman
|
||||
|
||||
**Kaynak/Köken**: Bir gerçeği destekleyen kaynakları izleme
|
||||
"Bu gerçek, X kaynağı tarafından desteklenmektedir"
|
||||
Gerçekleri, köken belgelerine bağlama
|
||||
|
||||
**Doğruluk/Güven**: Gerçekler hakkındaki iddiaları kaydetme
|
||||
"Kişi P, bunun doğru olduğunu iddia etti"
|
||||
"Kişi Q, bunun yanlış olduğunu iddia ediyor"
|
||||
Güven puanlamasını ve çakışma tespitini etkinleştirme
|
||||
|
||||
**Hipotez**: Yeniden tanımlama (RDF-star / tırnak işaretli üçlüler), bu sonuçları
|
||||
elde etmek için temel mekanizmadır, çünkü bunların hepsi ifadeler hakkında ifadeler yapmayı gerektirir.
|
||||
|
||||
## Background
|
||||
|
||||
"Alice'in Bob'u tanıdığı" gerçeğinin "2024-01-15" tarihinde keşfedildiğini veya
|
||||
"X kaynağının (Y'nin Z'ye neden olduğu) iddiasını desteklediğini" ifade etmek için,
|
||||
bir kenara bir şey olarak başvurmanız ve bu kenar hakkında ifadeler yapabilmeniz gerekir. Standart üçlüler bunu desteklemez.
|
||||
|
||||
### Current Limitations
|
||||
|
||||
Mevcut `Value` sınıfı `trustgraph-base/trustgraph/schema/core/primitives.py` içinde
|
||||
=======
|
||||
Bir gerçeğin doğru olduğuna inanıldığı zaman
|
||||
Bir gerçeğin doğru hale geldiği zaman
|
||||
Bir gerçeğin yanlış olduğu keşfedildiğinde
|
||||
|
||||
**Kaynak/Köken**: Bir gerçeği destekleyen kaynakları izleme
|
||||
"Bu gerçek, kaynak X tarafından destekleniyordu"
|
||||
Gerçekleri, köken belgelerine bağlama
|
||||
|
||||
**Doğruluk/Güvenilirlik**: Doğrulukla ilgili ifadeleri kaydetme
|
||||
"Kişi P, bunun doğru olduğunu iddia etti"
|
||||
"Kişi Q, bunun yanlış olduğunu iddia ediyor"
|
||||
Güvenilirlik puanlaması ve çakışma tespitini etkinleştirme
|
||||
|
||||
**Hipotez**: Yeniden tanımlama (RDF-star / tırnaklı üçlüler), bu sonuçları elde etmenin temel mekanizmasıdır, çünkü bunların hepsi ifadeler hakkında ifadeler yapmayı gerektirir.
|
||||
|
||||
|
||||
## Arka Plan
|
||||
|
||||
"Alice'nin Bob'u bildiği gerçeği 2024-01-15'te keşfedildi" veya "kaynak X, (Y'nin Z'ye neden olduğu) iddiasını destekliyor" gibi ifadeleri belirtmek için,
|
||||
bir kenarı, hakkında ifadeler yapılabilecek bir şey olarak referans göstermeniz gerekir. Standart üçlüler bunu desteklemez.
|
||||
|
||||
### Mevcut Sınırlamalar
|
||||
|
||||
|
||||
Mevcut `Value` sınıfı `trustgraph-base/trustgraph/schema/core/primitives.py` içinde:
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
şunları temsil edebilir:
|
||||
URI düğümleri (`is_uri=True`)
|
||||
Literal değerler (`is_uri=False`)
|
||||
|
||||
<<<<<<< HEAD
|
||||
`type` alanı mevcuttur, ancak XSD veri türlerini temsil etmek için kullanılmaz.
|
||||
|
||||
## Technical Design
|
||||
|
||||
### RDF Features to Support
|
||||
|
||||
#### Core Features (Related to Reification Goals)
|
||||
|
||||
Bu özellikler, zaman, kaynak ve doğruluk hedefleriyle doğrudan ilgilidir:
|
||||
|
||||
1. **RDF 1.2 Quoted Triples (RDF-star)**
|
||||
Diğer kenarlara işaret eden kenarlar
|
||||
Bir Üçlü, başka bir Üçlünün konusu veya nesnesi olabilir
|
||||
İfadeler hakkında ifadeler yapmayı sağlar (yeniden tanımlama)
|
||||
Bireysel gerçekleri açıklamak için temel mekanizma
|
||||
|
||||
2. **RDF Dataset / Named Graphs**
|
||||
Bir veri kümesi içindeki birden fazla adlandırılmış grafik için destek
|
||||
Her grafik bir IRI ile tanımlanır
|
||||
Üçlülerden (s, p, o) dörtlülere (s, p, o, g) geçiş
|
||||
Bir varsayılan grafik ve sıfır veya daha fazla adlandırılmış grafik içerir
|
||||
Grafik IRI'si, ifadelerin konusu olabilir, örneğin:
|
||||
Grafik IRI'si, ifadelerde bir özne olabilir, örneğin:
|
||||
=======
|
||||
`type` alanı mevcut, ancak XSD veri tiplerini temsil etmek için kullanılmıyor.
|
||||
|
||||
## Teknik Tasarım
|
||||
|
||||
### Desteklenecek RDF Özellikleri
|
||||
|
||||
#### Temel Özellikler (Somutlaştırma Hedefleriyle İlgili)
|
||||
|
||||
Bu özellikler, zamansallık, köken ve doğruluk
|
||||
hedefleriyle doğrudan ilişkilidir:
|
||||
|
||||
1. **RDF 1.2 Tırnak İşaretli Üçlüler (RDF-star)**
|
||||
Diğer kenarlara işaret eden kenarlar
|
||||
Bir Üçlü, başka bir Üçlünün öznesi veya nesnesi olabilir
|
||||
Üçlüler hakkında ifadeler oluşturmayı sağlar (somutlaştırma)
|
||||
Bireysel gerçekleri açıklamak için temel mekanizma
|
||||
|
||||
2. **RDF Veri Kümesi / Adlandırılmış Grafikler**
|
||||
Bir veri kümesi içinde birden fazla adlandırılmış grafik desteği
|
||||
Her grafik bir IRI ile tanımlanır
|
||||
Üçlülerden (s, p, o) dörtlülere (s, p, o, g) geçiş
|
||||
Bir varsayılan grafik ve sıfır veya daha fazla adlandırılmış grafik içerir
|
||||
Grafik IRI'si, ifadelerin bir öznesi olabilir, örneğin:
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
```
|
||||
<graph-source-A> <discoveredOn> "2024-01-15"
|
||||
<graph-source-A> <hasVeracity> "high"
|
||||
```
|
||||
Not: Adlandırılmış grafikler, somutlaştırmadan ayrı bir özelliktir. Bunlar,
|
||||
yalnızca ifade açıklamasının ötesinde kullanımlara sahiptir (bölümleme, erişim kontrolü, veri kümesi
|
||||
<<<<<<< HEAD
|
||||
organizasyonu) ve ayrı bir yetenek olarak ele alınmalıdır.
|
||||
=======
|
||||
düzeni) ve ayrı bir yetenek olarak ele alınmalıdır.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
3. **Anonim Düğümler** (Sınırlı Destek)
|
||||
Küresel bir URI'ye sahip olmayan anonim düğümler
|
||||
Dış RDF verilerini yüklerken uyumluluk için desteklenir
|
||||
<<<<<<< HEAD
|
||||
**Sınırlı durum:** Yükleme işleminden sonra kararlı bir kimlik konusunda hiçbir garanti yoktur
|
||||
Bunları jokerli sorgular aracılığıyla bulun (bağlantılara göre, kimliğe göre değil)
|
||||
=======
|
||||
**Sınırlı durum**: Yükleme işleminden sonra kararlı bir kimlik konusunda garanti yoktur
|
||||
Bunları jokerli sorgularla bulun (bağlantılara göre, kimliğe göre değil)
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
Birincil bir özellik değildir - kesin anonim düğüm işleme özelliğine güvenmeyin
|
||||
|
||||
#### Fırsatçı Düzeltmeler (2.0'ın Kırıcı Değişikliği)
|
||||
|
||||
Bu özellikler, somutlaştırma hedefleriyle doğrudan ilişkili değildir, ancak
|
||||
kırıcı değişiklikler yaparken dahil edilmesi değerli olan iyileştirmelerdir:
|
||||
|
||||
4. **Literal Veri Tipleri**
|
||||
XSD veri tipleri için `type` alanını doğru şekilde kullanın
|
||||
Örnekler: xsd:string, xsd:integer, xsd:dateTime, vb.
|
||||
<<<<<<< HEAD
|
||||
Mevcut sınırlamayı düzeltir: tarihleri veya tamsayıları düzgün bir şekilde temsil edilemez
|
||||
=======
|
||||
Mevcut sınırlamayı düzeltir: tarihleri veya tamsayıları doğru şekilde temsil edilemez
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
5. **Dil Etiketleri**
|
||||
Dize literal değerleri üzerinde dil öznitelikleri desteği (@en, @fr, vb.)
|
||||
Not: Bir literal değerin ya bir dil etiketi YA da bir veri tipi vardır, ikisi birden değil
|
||||
(rdf:langString hariç)
|
||||
<<<<<<< HEAD
|
||||
Yapay zeka/çok dilli kullanım senaryoları için önemlidir
|
||||
=======
|
||||
Yapay zeka/çok dilli kullanım durumları için önemlidir
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
### Veri Modelleri
|
||||
|
||||
#### Terim (Value adından değiştirildi)
|
||||
|
||||
`Value` sınıfı, RDF terminolojisini daha iyi yansıtmak için `Term` olarak yeniden adlandırılacaktır.
|
||||
<<<<<<< HEAD
|
||||
Bu yeniden adlandırma iki amaca hizmet etmektedir:
|
||||
1. İsimlendirmeyi RDF kavramlarıyla uyumlu hale getirmek (bir "Terim", bir IRI, literal, boş
|
||||
düğüm veya tırnak içindeki üçlü olabilir - sadece bir "değer" değildir).
|
||||
2. Değişikliklere neden olan arayüzde kod incelemesini zorlamak - hala
|
||||
`Value`'a referans veren herhangi bir kod, açıkça hatalıdır ve güncellenmesi gerekir.
|
||||
=======
|
||||
Bu yeniden adlandırmanın iki amacı vardır:
|
||||
1. İsimlendirmeyi RDF kavramlarıyla uyumlu hale getirmek (bir "Terim", bir IRI, literal, boş
|
||||
düğüm veya tırnak içindeki üçlü olabilir - sadece bir "değer" değildir).
|
||||
2. Kod incelemesini, önemli değişikliklerin yapıldığı arayüzde zorunlu kılmak - hala
|
||||
`Value`'a referans veren herhangi bir kod, açıkça hatalı olacaktır ve güncellenmesi gerekecektir.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
Bir Terim şunları temsil edebilir:
|
||||
|
||||
**IRI/URI** - Adlandırılmış bir düğüm/kaynak
|
||||
**Boş Düğüm** - Yerel kapsamı olan anonim bir düğüm
|
||||
**Literal (Değer)** - Ya bir veri türü (XSD türü) veya
|
||||
Bir dil etiketi
|
||||
**Tırnak İçine Alınmış Üçlü** - Bir terim olarak kullanılan bir üçlü (RDF 1.2)
|
||||
|
||||
|
||||
##### Seçilen Yaklaşım: Tip Ayırıcısı Olan Tek Sınıf
|
||||
|
||||
<<<<<<< HEAD
|
||||
Serileştirme gereksinimleri yapıyı belirler - bir tür ayrımcısına ihtiyaç vardır.
|
||||
Python gösteriminden bağımsız olarak, kablo formatında bir tür ayrımcısına ihtiyaç vardır.
|
||||
=======
|
||||
Serileştirme gereksinimleri yapıyı belirler - bir tür belirleyiciye ihtiyaç vardır.
|
||||
Python gösteriminden bağımsız olarak, kablo formatında bir tür belirleyiciye ihtiyaç vardır.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
Tek bir sınıf ve bir tür alanı, doğal bir çözümdür ve mevcut `Value` kalıbıyla uyumludur.
|
||||
|
||||
Tek karakterli tür kodları, kompakt serileştirme sağlar:
|
||||
|
||||
```python
|
||||
from dataclasses import dataclass
|
||||
|
||||
# Term type constants
|
||||
IRI = "i" # IRI/URI node
|
||||
BLANK = "b" # Blank node
|
||||
LITERAL = "l" # Literal value
|
||||
TRIPLE = "t" # Quoted triple (RDF-star)
|
||||
|
||||
@dataclass
|
||||
class Term:
|
||||
type: str = "" # One of: IRI, BLANK, LITERAL, TRIPLE
|
||||
|
||||
# For IRI terms (type == IRI)
|
||||
iri: str = ""
|
||||
|
||||
# For blank nodes (type == BLANK)
|
||||
id: str = ""
|
||||
|
||||
# For literals (type == LITERAL)
|
||||
value: str = ""
|
||||
datatype: str = "" # XSD datatype URI (mutually exclusive with language)
|
||||
language: str = "" # Language tag (mutually exclusive with datatype)
|
||||
|
||||
# For quoted triples (type == TRIPLE)
|
||||
triple: "Triple | None" = None
|
||||
```
|
||||
|
||||
Kullanım örnekleri:
|
||||
|
||||
```python
|
||||
# IRI term
|
||||
node = Term(type=IRI, iri="http://example.org/Alice")
|
||||
|
||||
# Literal with datatype
|
||||
age = Term(type=LITERAL, value="42", datatype="xsd:integer")
|
||||
|
||||
# Literal with language tag
|
||||
label = Term(type=LITERAL, value="Hello", language="en")
|
||||
|
||||
# Blank node
|
||||
anon = Term(type=BLANK, id="_:b1")
|
||||
|
||||
# Quoted triple (statement about a statement)
|
||||
inner = Triple(
|
||||
s=Term(type=IRI, iri="http://example.org/Alice"),
|
||||
p=Term(type=IRI, iri="http://example.org/knows"),
|
||||
o=Term(type=IRI, iri="http://example.org/Bob"),
|
||||
)
|
||||
reified = Term(type=TRIPLE, triple=inner)
|
||||
```
|
||||
|
||||
##### Alternatifler
|
||||
|
||||
**B Seçeneği: Özel sınıfların birleşimi** (`Term = IRI | BlankNode | Literal | QuotedTriple`)
|
||||
Reddedildi: Seri hale getirme işlemi hala bir tür belirleyici gerektirecek, bu da karmaşıklığı artıracaktır.
|
||||
|
||||
**C Seçeneği: Alt sınıflara sahip temel sınıf**
|
||||
Reddedildi: Aynı seri hale getirme sorunu, ayrıca dataclass miras özellikleriyle ilgili sorunlar.
|
||||
|
||||
#### Üçlü / Dörtlü
|
||||
|
||||
`Triple` sınıfı, isteğe bağlı bir grafik alanı kazanarak dörtlü bir yapıya dönüşebilir:
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class Triple:
|
||||
s: Term | None = None # Subject
|
||||
p: Term | None = None # Predicate
|
||||
o: Term | None = None # Object
|
||||
g: str | None = None # Graph name (IRI), None = default graph
|
||||
```
|
||||
|
||||
Tasarım kararları:
|
||||
**Alan adı**: `g`, `s`, `p` ve `o` ile tutarlılık için.
|
||||
**İsteğe bağlı**: `None`, varsayılan grafiği (isim belirtilmemiş) ifade eder.
|
||||
**Tip**: Terim yerine düz bir dize (IRI).
|
||||
Grafik adları her zaman IRI'lerdir.
|
||||
Boş düğümlerin grafik adı olarak kullanılması reddedildi (çok kafa karıştırıcı).
|
||||
Tam Terim mekanizmasına ihtiyaç yok.
|
||||
|
||||
Not: Sınıf adı teknik olarak bir dörtlü olsa bile `Triple` olarak kalır.
|
||||
Bu, karmaşayı önler ve "üçlü" terimi hala s/p/o kısmı için yaygın olarak kullanılan bir terimdir. Grafik bağlamı, üçlünün nerede bulunduğu hakkında meta veridir.
|
||||
|
||||
|
||||
### Olası Sorgu Desenleri
|
||||
|
||||
Mevcut sorgu motoru, S, P, O terimlerinin kombinasyonlarını kabul eder. Tırnak içinde belirtilen
|
||||
üçlüler, bir üçlünün kendisi bu konumlarda geçerli bir terim haline gelir. Aşağıda,
|
||||
orijinal hedefleri destekleyen olası sorgu desenleri bulunmaktadır.
|
||||
|
||||
<<<<<<< HEAD
|
||||
#### Grafik Parametre Anlamları
|
||||
=======
|
||||
#### Grafik Parametre Anlamı
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
Geriye dönük uyumluluk için SPARQL kurallarına uygun olarak:
|
||||
|
||||
**`g` belirtilmemiş / Yok**: Yalnızca varsayılan grafiği sorgula.
|
||||
**`g` = belirli bir IRI**: Yalnızca o adlandırılmış grafiği sorgula.
|
||||
**`g` = joker karakter / `*`**: Tüm grafikler arasında sorgu yap (SPARQL ile eşdeğer
|
||||
`GRAPH ?g { ... }`).
|
||||
|
||||
Bu, basit sorguları basit tutar ve adlandırılmış grafik sorgularını isteğe bağlı hale getirir.
|
||||
|
||||
<<<<<<< HEAD
|
||||
Grafik arası sorgular (g=joker karakter), tamamen desteklenir. Cassandra şeması,
|
||||
g'nin bir kümeleme sütunu olduğu (bölüm anahtarı olmadığı) özel tabloları içerir (SPOG, POSG, OSPG),
|
||||
=======
|
||||
Grafikler arası sorgular (g=joker karakter) tamamen desteklenir. Cassandra şeması,
|
||||
g'nin bir kümeleme sütunu olduğu (bölüm anahtarı değil) özel tabloları içerir (SPOG, POSG, OSPG),
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
bu da tüm grafikler arasında verimli sorgular yapmayı sağlar.
|
||||
|
||||
#### Zamansal Sorgular
|
||||
|
||||
**Belirli bir tarihten sonra keşfedilen tüm bilgileri bul:**
|
||||
```
|
||||
S: ? # any quoted triple
|
||||
P: <discoveredOn>
|
||||
O: > "2024-01-15"^^xsd:date # date comparison
|
||||
```
|
||||
|
||||
**Belirli bir bilginin ne zaman doğru olduğuna inanıldığı bulun:**
|
||||
```
|
||||
S: << <Alice> <knows> <Bob> >> # quoted triple as subject
|
||||
P: <believedTrueFrom>
|
||||
O: ? # returns the date
|
||||
```
|
||||
|
||||
**Yanlış hale gelen bilgileri bulun:**
|
||||
```
|
||||
S: ? # any quoted triple
|
||||
P: <discoveredFalseOn>
|
||||
O: ? # has any value (exists)
|
||||
```
|
||||
|
||||
#### Kaynak Sorguları
|
||||
|
||||
**Belirli bir kaynağa dayanan tüm bilgileri bulun:**
|
||||
```
|
||||
S: ? # any quoted triple
|
||||
P: <supportedBy>
|
||||
O: <source:document-123>
|
||||
```
|
||||
|
||||
**Belirli bir gerçeği destekleyen kaynakları bulun:**
|
||||
```
|
||||
S: << <DrugA> <treats> <DiseaseB> >> # quoted triple as subject
|
||||
P: <supportedBy>
|
||||
O: ? # returns source IRIs
|
||||
```
|
||||
|
||||
#### Doğruluk Sorguları
|
||||
|
||||
**Bir kişinin doğru olarak işaretlediği ifadeleri bulun:**
|
||||
```
|
||||
S: ? # any quoted triple
|
||||
P: <assertedTrueBy>
|
||||
O: <person:Alice>
|
||||
```
|
||||
|
||||
**Çelişkili ifadeleri bulun (aynı gerçek, farklı doğruluk):**
|
||||
```
|
||||
# First query: facts asserted true
|
||||
S: ?
|
||||
P: <assertedTrueBy>
|
||||
O: ?
|
||||
|
||||
# Second query: facts asserted false
|
||||
S: ?
|
||||
P: <assertedFalseBy>
|
||||
O: ?
|
||||
|
||||
# Application logic: find intersection of subjects
|
||||
```
|
||||
|
||||
**Güvenilirlik puanı eşik değerinin altında olan bilgileri bulun:**
|
||||
```
|
||||
S: ? # any quoted triple
|
||||
P: <trustScore>
|
||||
O: < 0.5 # numeric comparison
|
||||
```
|
||||
|
||||
### Mimari
|
||||
|
||||
<<<<<<< HEAD
|
||||
Birden çok bileşende önemli değişiklikler gereklidir:
|
||||
=======
|
||||
Birden fazla bileşende önemli değişiklikler gereklidir:
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### Bu Depo (trustgraph)
|
||||
|
||||
**Şema ilkel öğeleri** (`trustgraph-base/trustgraph/schema/core/primitives.py`)
|
||||
Değer → Terim yeniden adlandırması
|
||||
<<<<<<< HEAD
|
||||
Tip ayrımcısına sahip yeni Terim yapısı
|
||||
=======
|
||||
Tip ayrımcısı ile yeni Terim yapısı
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
Üçlü, grafik bağlamı için `g` alanı kazanır
|
||||
|
||||
**Mesaj çeviricileri** (`trustgraph-base/trustgraph/messaging/translators/`)
|
||||
Yeni Terim/Üçlü yapıları için güncelleme
|
||||
Yeni alanlar için serileştirme/deserileştirme
|
||||
|
||||
**Geçit bileşenleri**
|
||||
Yeni Terim ve dörtlü yapılarını işleyin
|
||||
|
||||
**Bilgi çekirdekleri**
|
||||
Dörtlüleri ve yeniden tanımlamayı desteklemek için çekirdek değişiklikleri
|
||||
|
||||
**Bilgi yöneticisi**
|
||||
Şema değişiklikleri burada yayılır
|
||||
|
||||
**Depolama katmanları**
|
||||
Cassandra: Şema yeniden tasarımı (Ayrıntılar için Uygulama Ayrıntılarına bakın)
|
||||
Diğer arka uçlar: Daha sonraki aşamalara ertelenmiştir
|
||||
|
||||
**Komut satırı araçları**
|
||||
Yeni veri yapıları için güncelleme
|
||||
|
||||
**REST API dokümantasyonu**
|
||||
OpenAPI spesifikasyonunda güncellemeler
|
||||
|
||||
#### Harici Depolar
|
||||
|
||||
**Python API'si** (bu depo)
|
||||
Yeni yapılar için istemci kitaplığı güncellemeleri
|
||||
|
||||
**TypeScript API'leri** (ayrı depo)
|
||||
İstemci kitaplığı güncellemeleri
|
||||
|
||||
**Çalışma alanı** (ayrı depo)
|
||||
Önemli durum yönetimi değişiklikleri
|
||||
|
||||
### API'ler
|
||||
|
||||
#### REST API
|
||||
|
||||
OpenAPI spesifikasyonunda belgelenmiştir
|
||||
Yeni Terim/Üçlü yapıları için güncellenmesi gerekecektir
|
||||
Grafik bağlamı işlemleri için yeni uç noktaları gerekebilir
|
||||
|
||||
#### Python API'si (bu depo)
|
||||
|
||||
Yeni ilkel öğelerle eşleşen istemci kitaplığı değişiklikleri
|
||||
Terim (önceden Değer) ve Üçlü için bozucu değişiklikler
|
||||
|
||||
#### TypeScript API'si (ayrı depo)
|
||||
|
||||
Python API'sine paralel değişiklikler
|
||||
Ayrı sürüm koordinasyonu
|
||||
|
||||
#### Çalışma alanı (ayrı depo)
|
||||
|
||||
Önemli durum yönetimi değişiklikleri
|
||||
<<<<<<< HEAD
|
||||
Grafik bağlamı özellikleriyle ilgili kullanıcı arayüzü güncellemeleri
|
||||
=======
|
||||
Grafik bağlamı özelliklerini destekleyen UI güncellemeleri
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
### Uygulama Ayrıntıları
|
||||
|
||||
#### Aşamalı Depolama Uygulaması
|
||||
|
||||
<<<<<<< HEAD
|
||||
Birden çok grafik depolama arka ucu (Cassandra, Neo4j, vb.) vardır. Uygulama
|
||||
aşağıdaki aşamalarda gerçekleştirilecektir:
|
||||
|
||||
1. **1. Aşama: Cassandra**
|
||||
Yerel Cassandra deposuyla başlayın
|
||||
Depolama katmanı üzerinde tam kontrol, hızlı yinelemeyi sağlar
|
||||
Şema, dörtlüler + yeniden tanımlama için sıfırdan yeniden tasarlanacaktır
|
||||
=======
|
||||
Birden fazla grafik depolama arka ucu (Cassandra, Neo4j, vb.) bulunmaktadır. Uygulama,
|
||||
aşağıdaki aşamalarda gerçekleştirilecektir:
|
||||
|
||||
1. **1. Aşama: Cassandra**
|
||||
Kendi geliştirdiğimiz Cassandra deposuyla başlayın
|
||||
Depolama katmanı üzerinde tam kontrole sahip olmak, hızlı yinelemeyi sağlar
|
||||
Şema, dörtlüler ve yeniden tanımlama için sıfırdan yeniden tasarlanacaktır
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
Veri modelini ve sorgu kalıplarını gerçek kullanım durumlarına göre doğrulayın
|
||||
|
||||
#### Cassandra Şema Tasarımı
|
||||
|
||||
Cassandra, farklı sorgu erişim modellerini desteklemek için birden fazla tablo gerektirir
|
||||
(her tablo, bölüm anahtarı + kümeleme sütunları aracılığıyla verimli bir şekilde sorgulanır).
|
||||
|
||||
##### Sorgu Modelleri
|
||||
|
||||
"quads" (g, s, p, o) ile, her konum belirtilebilir veya joker karakter olabilir ve bu da
|
||||
16 olası sorgu modeli oluşturur:
|
||||
|
||||
| # | g | s | p | o | Açıklama |
|
||||
|---|---|---|---|---|-------------|
|
||||
| 1 | ? | ? | ? | ? | Tüm "quads" |
|
||||
| 2 | ? | ? | ? | o | Nesneye göre |
|
||||
| 3 | ? | ? | p | ? | Özneye göre |
|
||||
| 4 | ? | ? | p | o | Özne + nesneye göre |
|
||||
| 5 | ? | s | ? | ? | Konuya göre |
|
||||
| 6 | ? | s | ? | o | Konu + nesneye göre |
|
||||
<<<<<<< HEAD
|
||||
| 7 | ? | s | p | ? | Konu + öneye göre |
|
||||
| 8 | ? | s | p | o | Tam üçlü (hangi grafikler?) |
|
||||
| 9 | g | ? | ? | ? | Grafiğe göre |
|
||||
| 10 | g | ? | ? | o | Grafik + nesneye göre |
|
||||
| 11 | g | ? | p | ? | Grafik + öneye göre |
|
||||
| 12 | g | ? | p | o | Grafik + öne + nesneye göre |
|
||||
| 13 | g | s | ? | ? | Grafik + konuya göre |
|
||||
| 14 | g | s | ? | o | Grafik + konu + nesneye göre |
|
||||
| 15 | g | s | p | ? | Grafik + konu + öneye göre |
|
||||
=======
|
||||
| 7 | ? | s | p | ? | Konu + özneliğe göre |
|
||||
| 8 | ? | s | p | o | Tam üçlü (hangi grafikler?) |
|
||||
| 9 | g | ? | ? | ? | Grafiğe göre |
|
||||
| 10 | g | ? | ? | o | Grafik + nesneye göre |
|
||||
| 11 | g | ? | p | ? | Grafik + özneliğe göre |
|
||||
| 12 | g | ? | p | o | Grafik + özneliği + nesneye göre |
|
||||
| 13 | g | s | ? | ? | Grafik + konuya göre |
|
||||
| 14 | g | s | ? | o | Grafik + konu + nesneye göre |
|
||||
| 15 | g | s | p | ? | Grafik + konu + özneliğe göre |
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
| 16 | g | s | p | o | Tam "quad" |
|
||||
|
||||
##### Tablo Tasarımı
|
||||
|
||||
<<<<<<< HEAD
|
||||
Cassandra kısıtlaması: Yalnızca bölüm anahtarına göre verimli bir şekilde sorgulayabilirsiniz, ardından
|
||||
=======
|
||||
Cassandra kısıtlaması: Yalnızca bölüm anahtarına göre verimli bir şekilde sorgu yapabilirsiniz, ardından
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
kümeleme sütunları üzerinde soldan sağa filtreleme yapabilirsiniz. "g" joker karakterli sorgular için, "g" bir
|
||||
kümeleme sütunu olmalıdır. "g" belirtilmiş sorgular için, bölüm anahtarında bulunan "g" daha
|
||||
verimlidir.
|
||||
|
||||
**İki tablo ailesi gereklidir:**
|
||||
|
||||
**A Ailesi: "g" joker karakterli sorgular** ("g" kümeleme sütunlarında)
|
||||
|
||||
| Tablo | Bölüm | Kümeleme | Desteklenen modeller |
|
||||
|-------|-----------|------------|-------------------|
|
||||
| SPOG | (kullanıcı, koleksiyon, s) | p, o, g | 5, 7, 8 |
|
||||
| POSG | (kullanıcı, koleksiyon, p) | o, s, g | 3, 4 |
|
||||
| OSPG | (kullanıcı, koleksiyon, o) | s, p, g | 2, 6 |
|
||||
|
||||
**B Ailesi: "g" belirtilmiş sorgular** ("g" bölüm anahtarında)
|
||||
|
||||
| Tablo | Bölüm | Kümeleme | Desteklenen modeller |
|
||||
|-------|-----------|------------|-------------------|
|
||||
| GSPO | (kullanıcı, koleksiyon, g, s) | p, o | 9, 13, 15, 16 |
|
||||
| GPOS | (kullanıcı, koleksiyon, g, p) | o, s | 11, 12 |
|
||||
| GOSP | (kullanıcı, koleksiyon, g, o) | s, p | 10, 14 |
|
||||
|
||||
**Koleksiyon tablosu** (döngüleme ve toplu silme için)
|
||||
|
||||
| Tablo | Bölüm | Kümeleme | Amaç |
|
||||
|-------|-----------|------------|---------|
|
||||
| COLL | (kullanıcı, koleksiyon) | g, s, p, o | Koleksiyondaki tüm "quad"ları numaralandır |
|
||||
|
||||
##### Yazma ve Silme Yolları
|
||||
|
||||
**Yazma yolu**: Tüm 7 tabloya ekleyin.
|
||||
|
||||
**Koleksiyon silme yolu**:
|
||||
1. `(user, collection)` için COLL tablosunu yineleyin
|
||||
2. Her "quad" için, tüm 6 sorgu tablosundan silin
|
||||
3. COLL tablosundan silin (veya aralık silme)
|
||||
|
||||
**Tek bir "quad" silme yolu**: Tüm 7 tabloya doğrudan silin.
|
||||
|
||||
##### Depolama Maliyeti
|
||||
|
||||
Her "quad" 7 kez depolanır. Bu, esnek sorgulama ile
|
||||
verimli koleksiyon silme birleşiminin maliyetidir.
|
||||
|
||||
##### Depolamada Alıntılanmış Üçlüler
|
||||
|
||||
Konu veya nesne kendisi bir üçlü olabilir. Seçenekler:
|
||||
|
||||
**A Seçeneği: Alıntılanmış üçlüleri standart bir dizeye seri hale getirin**
|
||||
```
|
||||
S: "<<http://ex/Alice|http://ex/knows|http://ex/Bob>>"
|
||||
P: http://ex/discoveredOn
|
||||
O: "2024-01-15"
|
||||
G: null
|
||||
```
|
||||
Tırnak içinde belirtilen üçlüleri, seri hale getirilmiş bir dize olarak S veya O sütunlarında saklayın.
|
||||
<<<<<<< HEAD
|
||||
Seri hale getirilmiş forma göre tam eşleşme ile sorgulayın.
|
||||
Artı: Basit, mevcut indeks kalıplarına uyuyor.
|
||||
Eksileri: "Tırnak içinde belirtilen öznenin yüklemesinin X olduğu üçlüleri bul" gibi sorguları yapmak mümkün değil.
|
||||
=======
|
||||
Seri hale getirilmiş forma göre tam eşleşme sorgusu yapın.
|
||||
Artı: Basit, mevcut indeks kalıplarına uyuyor.
|
||||
Eksileri: "Tırnak içinde belirtilen öznenin yüklemesinin X olduğu üçlüleri bul" gibi sorgular yapılamaz.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
**B Seçeneği: Üçlü Kimlikleri / Hash'leri**
|
||||
```
|
||||
Triple table:
|
||||
id: hash(s,p,o,g)
|
||||
s, p, o, g: ...
|
||||
|
||||
Metadata table:
|
||||
subject_triple_id: <hash>
|
||||
p: http://ex/discoveredOn
|
||||
o: "2024-01-15"
|
||||
```
|
||||
Her üçlüye bir kimlik (bileşenlerin karma değeri) atayın.
|
||||
<<<<<<< HEAD
|
||||
Örnek meta veri referansları, kimlik numarasıyla üçlüleri belirtir.
|
||||
Artı: Temiz bir ayrım, üçlü kimlik numaralarının indekslenmesini sağlar.
|
||||
Eksileri: Üçlü kimliğinin hesaplanmasını/yönetilmesini gerektirir, iki aşamalı aramalar.
|
||||
|
||||
**Öneri**: Basitlik için A seçeneğiyle (serileştirilmiş dizeler) başlayın.
|
||||
B seçeneği, tırnak içinde belirtilen üçlü bileşenleri üzerinde gelişmiş sorgu desenleri gerekiyorsa gerekebilir.
|
||||
|
||||
ÇIKTI SÖZLEŞMESİ (tam olarak aşağıdaki formatı takip etmelidir):
|
||||
2. **2. Aşama+: Diğer Altyapılar**
|
||||
Neo4j ve diğer depolama sistemleri, sonraki aşamalarda uygulanmıştır.
|
||||
Cassandra'dan edinilen deneyimler, bu uygulamaları etkilemiştir.
|
||||
|
||||
Bu yaklaşım, tamamen kontrol altında olan bir altyapıda doğrulama yaparak tasarım riskini azaltır.
|
||||
=======
|
||||
Somutlaştırma meta veri referansları, kimlik numarasıyla üçlülere başvurur.
|
||||
Artı: Temiz bir ayrım, üçlü kimlik numaralarını indekslemek mümkündür.
|
||||
Eksileri: Üçlü kimliğini hesaplamayı/yönetmeyi gerektirir, iki aşamalı aramalar.
|
||||
|
||||
**Öneri**: Basitlik için A seçeneğiyle (serileştirilmiş dizeler) başlayın.
|
||||
B seçeneği, tırnak içinde belirtilen üçlü
|
||||
bileşenleri üzerinde gelişmiş sorgu desenleri gerekiyorsa gerekebilir.
|
||||
|
||||
2. **Faz 2+: Diğer Altyapılar**
|
||||
Neo4j ve diğer depolama sistemleri, sonraki aşamalarda uygulanmıştır.
|
||||
Cassandra'dan edinilen deneyimler, bu uygulamaları etkilemiştir.
|
||||
|
||||
Bu yaklaşım, tamamen kontrol altında olan bir altyapıda doğrulama yaparak tasarım risklerini azaltır.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
Tüm depolama sistemlerine yönelik uygulamalara başlamadan önce bu doğrulama yapılır.
|
||||
|
||||
#### Değer → Terim Yeniden Adlandırma
|
||||
|
||||
`Value` sınıfı, `Term` olarak yeniden adlandırılacaktır. Bu, kod tabanındaki yaklaşık 78 dosyayı etkilemektedir.
|
||||
Yeniden adlandırma, bir zorlama işlevi olarak görev görmektedir: hala ⟦CODE_0⟧'ı kullanan herhangi bir kod...
|
||||
`Value`, 2.0 ile uyumluluk açısından gözden geçirilmesi/güncellenmesi gereken bir alan olarak hemen belirlenebilir.
|
||||
|
||||
|
||||
## Güvenlik Hususları
|
||||
|
||||
Adlandırılmış grafikler bir güvenlik özelliği değildir. Kullanıcılar ve koleksiyonlar,
|
||||
<<<<<<< HEAD
|
||||
güvenlik sınırlarıdır. Adlandırılmış grafikler tamamen veri organizasyonu ve
|
||||
=======
|
||||
güvenlik sınırlarıdır. Adlandırılmış grafikler tamamen veri düzenlemesi ve
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
somutlaştırma desteği içindir.
|
||||
|
||||
## Performans Hususları
|
||||
|
||||
Tırnak işaretli üçlüler, iç içe derinliğini artırır - sorgu performansını etkileyebilir.
|
||||
<<<<<<< HEAD
|
||||
Verimli grafik kapsamlı sorgular için adlandırılmış grafik indeksleme stratejilerine ihtiyaç vardır.
|
||||
=======
|
||||
Verimli grafik kapsamlı sorgular için adlandırılmış grafik indeksleme stratejileri gereklidir.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
Cassandra şema tasarımı, dörtlü depolamayı verimli bir şekilde karşılayacak şekilde tasarlanmalıdır.
|
||||
|
||||
### Vektör Depolama Sınırı
|
||||
|
||||
Vektör depoları her zaman yalnızca IRI'lere başvurur:
|
||||
Asla kenarlar (tırnak işaretli üçlüler)
|
||||
Asla literal değerler
|
||||
Asla boş düğümler
|
||||
|
||||
Bu, vektör deposunu basit tutar; adlandırılmış varlıkların semantik benzerliğini işler. Grafik yapısı, ilişkileri, somutlaştırmayı ve meta verileri yönetir.
|
||||
Tırnak içinde belirtilen üçlüler ve adlandırılmış grafikler, vektör işlemlerini karmaşıklaştırmaz.
|
||||
|
||||
## Test Stratejisi
|
||||
|
||||
Mevcut test stratejisini kullanın. Bu, önemli bir değişiklik olduğundan, yeni yapıların tüm bileşenlerde doğru şekilde çalıştığını doğrulamak için uçtan uca test paketine kapsamlı bir şekilde odaklanılmalıdır.
|
||||
|
||||
## Geçiş Planı
|
||||
|
||||
2.0, önemli bir değişiklik içeren bir sürümdür; geriye dönük uyumluluk gerekmemektedir.
|
||||
Mevcut verilerin, yeni şemaya aktarılması gerekebilir (son tasarım bazında belirlenecektir).
|
||||
Mevcut üçlüleri dönüştürmek için geçiş araçlarını göz önünde bulundurun.
|
||||
|
||||
## Açık Sorular
|
||||
|
||||
|
||||
## Açık Sorular
|
||||
|
||||
<<<<<<< HEAD
|
||||
**Boş düğümler**: Sınırlı destek doğrulandı. Boş düğümler için bir skolemleştirme stratejisi belirlemek gerekebilir (yükleme sırasında IRI'lar oluşturmak veya boş düğüm kimliklerini korumak).
|
||||
**Sorgu sözdizimi**: Alıntılanmış üçlüleri sorgularda belirtmek için somut sözdizimi nedir? Sorgu API'sini tanımlamak gerekiyor.
|
||||
~~**Önerme sözlüğü**~~: Çözüldü. Herhangi bir geçerli RDF önermesi izin verilir, kullanıcı tanımlı olanlar dahil. RDF geçerliliği hakkında minimum varsayımlar.
|
||||
Çok az sabit değer (örneğin, bazı yerlerde kullanılan ⟦CODE_0⟧).
|
||||
~~**Önerme sözlüğü**:~~ Çözüldü. Herhangi bir geçerli RDF özneli kabul edilebilir,
|
||||
kullanıcı tarafından tanımlanmış özel özneler de dahil. RDF geçerliliği hakkında çok az varsayım.
|
||||
Çok az sabit değer (örneğin, bazı yerlerde kullanılan `rdfs:label`).
|
||||
Strateji: Mümkün olduğunca hiçbir şeyi kilitlememeye özen gösterin.
|
||||
~~**Vektör depolama etkisi**~~: Çözüldü. Vektör depoları her zaman IRI'lere işaret eder.
|
||||
sadece - asla kenarlara, literal değerlere veya boş düğümlere işaret etmez. Tırnak işaretli üçlüler ve
|
||||
yeniden tanımlama, vektör deposunu etkilemez.
|
||||
~~**Adlandırılmış grafik semantiği**~~: Çözüldü. Sorgular varsayılan olarak
|
||||
grafiğe yöneliktir (SPARQL davranışıyla eşleşir, geriye dönük uyumlu). Adlandırılmış grafiklere veya tüm
|
||||
grafiklere sorgu yapmak için açık bir grafik parametresi gereklidir.
|
||||
=======
|
||||
**Boş düğümler**: Sınırlı destek doğrulandı. Boş düğümler için bir skolemleştirme stratejisi belirlemek gerekebilir (yükleme sırasında IRİ'ler oluşturmak veya boş düğüm kimliklerini korumak).
|
||||
**Sorgu sözdizimi**: Alıntılanmış üçlüleri sorgularda belirtmek için somut sözdizimi nedir? Sorgu API'sini tanımlamak gerekiyor.
|
||||
~~**Önerme sözlüğü**~~: Çözüldü. Herhangi bir geçerli RDF önermesi izin verilir, kullanıcı tanımlı olanlar da dahil. RDF geçerliliği hakkında minimum varsayımlar.
|
||||
Çok az sabit değer (örneğin, bazı yerlerde kullanılan ⟦CODE_0⟧).
|
||||
~~**Önerme sözlüğü**:~~ Çözüldü. Herhangi bir geçerli RDF özneli kabul edilir,
|
||||
kullanıcı tarafından tanımlanmış özel özneler de dahil. RDF geçerliliği hakkında çok az varsayım yapılır.
|
||||
Çok az sabit değer (örneğin, bazı yerlerde kullanılan `rdfs:label`).
|
||||
Strateji: Mümkün olduğunca hiçbir şeyi kilitlememeye özen gösterin.
|
||||
~~**Vektör depolama etkisi**~~: Çözüldü. Vektör depoları her zaman IRI'lara işaret eder.
|
||||
sadece - asla kenarlara, literal değerlere veya boş düğümlere işaret etmez. Tırnak işaretli üçlüler ve
|
||||
yeniden tanımlama, vektör deposunu etkilemez.
|
||||
~~**Adlandırılmış grafik semantiği**~~: Çözüldü. Sorgular, varsayılan
|
||||
grafiğe varsayılan olarak yöneliktir (SPARQL davranışıyla eşleşir, geriye dönük uyumlu). Açık bir grafik
|
||||
parametresi, adlandırılmış grafiklere veya tüm grafiklere sorgu yapmak için gereklidir.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
## Referanslar
|
||||
|
||||
[RDF 1.2 Kavramları](https://www.w3.org/TR/rdf12-concepts/)
|
||||
[RDF-star ve SPARQL-star](https://w3c.github.io/rdf-star/)
|
||||
[RDF Veri Kümesi](https://www.w3.org/TR/rdf11-concepts/#section-dataset)
|
||||
Loading…
Add table
Add a link
Reference in a new issue