File size: 21,031 Bytes
e70050b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
# 🔬 SysCRED - Documentation Complète

## Système Neuro-Symbolique de Vérification de Crédibilité

> **Version:** 2.0  
> **Auteur:** Dominique S. Loyer  
> **Citation Key:** `loyerModelingHybridSystem2025`  
> **DOI:** [10.5281/zenodo.17943226](https://doi.org/10.5281/zenodo.17943226)  
> **Dernière mise à jour:** Janvier 2026

---

## 📋 Table des Matières

1. [Vue d'ensemble](#vue-densemble)
2. [Architecture du système](#architecture-du-système)
3. [Modules et fichiers](#modules-et-fichiers)
4. [Installation et configuration](#installation-et-configuration)
5. [Commandes et utilisation](#commandes-et-utilisation)
6. [Choix de conception](#choix-de-conception)
7. [Améliorations réalisées](#améliorations-réalisées)
8. [Améliorations futures](#améliorations-futures)
9. [API Reference](#api-reference)
10. [Ontologie OWL](#ontologie-owl)

---

## Vue d'ensemble

### Qu'est-ce que SysCRED?

SysCRED (System for CREdibility Detection) est un **système hybride neuro-symbolique** conçu pour évaluer automatiquement la crédibilité des informations en ligne. Il combine:

- **Approche symbolique** (règles explicites, transparentes et explicables)
- **Approche neuronale** (modèles NLP pour sentiment, biais, entités)
- **Ontologie OWL** (traçabilité et raisonnement sémantique)

### Philosophie du projet

Le système est conçu comme **prototype de recherche doctorale** avec ces principes:

1. **Explicabilité (xAI)**: Chaque décision peut être tracée et justifiée
2. **Hybridité**: Combine le meilleur des règles et du ML
3. **Reproductibilité**: Code open-source, documentation complète
4. **Modularité**: Chaque composant est indépendant et testable

---

## Architecture du système

```
┌─────────────────────────────────────────────────────────────────┐
│                        SysCRED v2.0                              │
├─────────────────────────────────────────────────────────────────┤
│  ┌───────────────┐  ┌───────────────┐  ┌───────────────┐        │
│  │   INPUT       │  │   APIs        │  │   OUTPUT      │        │
│  │  URL / Texte  │──│  Externes     │──│   Rapport     │        │
│  └───────────────┘  └───────────────┘  └───────────────┘        │
│         │                  │                  ▲                  │
│         ▼                  ▼                  │                  │
│  ┌─────────────────────────────────────────────────────┐        │
│  │            VERIFICATION SYSTEM                       │        │
│  │  ┌─────────────────┐  ┌─────────────────┐           │        │
│  │  │ RULE-BASED      │  │ NLP ANALYSIS    │           │        │
│  │  │ • Réputation    │  │ • Sentiment     │           │        │
│  │  │ • Âge domaine   │  │ • NER           │           │        │
│  │  │ • Fact-check    │  │ • Biais         │           │        │
│  │  │ • Marqueurs     │  │ • Cohérence     │           │        │
│  │  └─────────────────┘  └─────────────────┘           │        │
│  │                    ↓                                 │        │
│  │         ┌─────────────────────────┐                 │        │
│  │         │  SCORE CALCULATION      │                 │        │
│  │         │  (pondération hybride)  │                 │        │
│  │         └─────────────────────────┘                 │        │
│  └─────────────────────────────────────────────────────┘        │
│         │                                                        │
│         ▼                                                        │
│  ┌─────────────────────────────────────────────────────┐        │
│  │            ONTOLOGY MANAGER (OWL/RDF)               │        │
│  │         Traçabilité et raisonnement                 │        │
│  └─────────────────────────────────────────────────────┘        │
└─────────────────────────────────────────────────────────────────┘
```

### Flux de traitement

1. **Entrée** → URL ou texte brut
2. **Récupération** → Contenu web (si URL)
3. **Prétraitement** → Nettoyage du texte
4. **Données externes** → WHOIS, fact-check APIs
5. **Analyse règles** → Marqueurs linguistiques, réputation
6. **Analyse NLP** → Sentiment, biais, entités
7. **Calcul score** → Pondération hybride (0-1)
8. **Génération rapport** → JSON structuré
9. **Sauvegarde ontologie** → Triplets RDF

---

## Modules et fichiers

### Structure du projet

```
syscred/
├── __init__.py              # Package init
├── config.py                # Configuration centralisée
├── verification_system.py   # Système principal
├── api_clients.py           # Clients APIs externes
├── ontology_manager.py      # Gestion OWL/RDF
├── seo_analyzer.py          # Analyse SEO/PageRank
├── backend_app.py           # API Flask REST
├── eval_metrics.py          # Métriques d'évaluation
├── ir_engine.py             # Moteur de recherche
├── requirements.txt         # Dépendances Python
├── setup.py                 # Installation package
├── syscred_kaggle.ipynb     # Notebook Kaggle
├── syscred_colab.ipynb      # Notebook Colab (avec Drive)
└── kaggle_to_gdrive_backup.ipynb  # Backup notebooks
```

### Description des modules

#### `config.py` - Configuration centralisée

**But:** Centraliser tous les paramètres du système dans un seul fichier.

**Classes:**

- `Config` - Configuration de base
- `DevelopmentConfig` - Pour développement local
- `ProductionConfig` - Pour production
- `TestingConfig` - Pour tests (ML désactivé)

**Paramètres clés:**

| Paramètre | Description | Valeur par défaut |
|-----------|-------------|-------------------|
| `HOST` | Adresse du serveur | `0.0.0.0` |
| `PORT` | Port du serveur | `5000` |
| `DEBUG` | Mode debug | `true` |
| `LOAD_ML_MODELS` | Charger les modèles ML | `true` |
| `WEB_FETCH_TIMEOUT` | Timeout HTTP (sec) | `10` |

**Pondérations des scores:**

```python
SCORE_WEIGHTS = {
    'source_reputation': 0.25,  # Réputation de la source
    'domain_age': 0.10,         # Âge du domaine
    'sentiment_neutrality': 0.15, # Neutralité du ton
    'entity_presence': 0.15,    # Présence d'entités vérifiables
    'coherence': 0.15,          # Cohérence textuelle
    'fact_check': 0.20          # Résultats fact-check
}
```

**Variables d'environnement:**

```bash
export SYSCRED_ENV=production      # Environnement (dev/prod/testing)
export SYSCRED_PORT=8080           # Port personnalisé
export SYSCRED_GOOGLE_API_KEY=xxx  # Clé Google Fact Check
export SYSCRED_LOAD_ML=false       # Désactiver ML
```

---

#### `verification_system.py` - Système principal

**But:** Pipeline principal de vérification de crédibilité.

**Classe principale:** `CredibilityVerificationSystem`

**Méthodes principales:**

| Méthode | Description |
|---------|-------------|
| `__init__()` | Initialise le système, charge les modèles |
| `verify_information(input)` | Pipeline principal de vérification |
| `rule_based_analysis(text, data)` | Analyse symbolique |
| `nlp_analysis(text)` | Analyse NLP (ML) |
| `calculate_overall_score()` | Calcule le score final |
| `generate_report()` | Génère le rapport JSON |

**Modèles ML utilisés:**

| Modèle | Usage |
|--------|-------|
| `distilbert-base-uncased-finetuned-sst-2-english` | Sentiment |
| `dbmdz/bert-large-cased-finetuned-conll03-english` | NER |
| `bert-base-uncased` | Détection de biais (placeholder) |
| `LIME` | Explication des prédictions |

---

#### `api_clients.py` - Clients APIs externes

**But:** Abstraire toutes les interactions avec les APIs externes.

**Classe principale:** `ExternalAPIClients`

**APIs intégrées:**

| API | Méthode | Description |
|-----|---------|-------------|
| Web Content | `fetch_web_content()` | Récupère et parse le HTML |
| WHOIS | `whois_lookup()` | Âge et registrar du domaine |
| Google Fact Check | `google_fact_check()` | Vérification des faits |
| Source Reputation | `get_source_reputation()` | Base de données interne |
| CommonCrawl | `estimate_backlinks()` | Estimation backlinks |

**Data classes:**

- `WebContent` - Contenu web parsé
- `DomainInfo` - Informations WHOIS
- `FactCheckResult` - Résultat fact-check
- `ExternalData` - Données agrégées

---

#### `ontology_manager.py` - Gestion OWL/RDF

**But:** Traçabilité sémantique avec ontologie OWL.

**Fonctionnalités:**

- Chargement d'ontologie de base (.ttl)
- Ajout de triplets RDF pour chaque évaluation
- Sauvegarde des données accumulées
- Requêtes SPARQL

**Ontologie utilisée:**

- Format: Turtle (.ttl)
- Namespace: `http://syscred.uqam.ca/ontology#`
- Concepts: `Evaluation`, `Source`, `CredibilityScore`, `Evidence`

---

#### `backend_app.py` - API Flask

**But:** Exposer SysCRED via API REST.

**Endpoints:**

| Endpoint | Méthode | Description |
|----------|---------|-------------|
| `/api/verify` | POST | Vérification principale |
| `/api/seo` | POST | Analyse SEO uniquement |
| `/api/ontology/stats` | GET | Statistiques ontologie |
| `/api/health` | GET | Vérification santé |
| `/api/config` | GET | Configuration actuelle |

**Exemple requête:**

```bash
curl -X POST http://localhost:5000/api/verify \
  -H "Content-Type: application/json" \
  -d '{"input_data": "https://example.com/article"}'
```

---

## Installation et configuration

### Prérequis

- Python 3.8+
- pip
- Git

### Installation locale

```bash
# Cloner le repository
git clone https://github.com/DominiqueLoyer/syscred.git
cd syscred

# Créer environnement virtuel
python -m venv venv
source venv/bin/activate  # Linux/Mac
# ou: venv\Scripts\activate  # Windows

# Installer les dépendances
pip install -r requirements.txt

# Installer le package en mode développement
pip install -e .
```

### Installation des dépendances

```bash
# Dépendances principales
pip install transformers torch numpy
pip install flask flask-cors
pip install rdflib owlrl
pip install requests beautifulsoup4

# Dépendances optionnelles
pip install python-whois  # Pour WHOIS
pip install lime          # Pour explications ML
```

### Fichier requirements.txt

```
transformers>=4.30.0
torch>=2.0.0
numpy>=1.24.0
flask>=2.3.0
flask-cors>=4.0.0
rdflib>=6.3.0
owlrl>=6.0.0
requests>=2.31.0
beautifulsoup4>=4.12.0
python-whois>=0.8.0
lime>=0.2.0
```

---

## Commandes et utilisation

### Démarrer l'API Flask

```bash
# Mode développement
cd /path/to/syscred
python backend_app.py

# Avec variables d'environnement
SYSCRED_PORT=8080 SYSCRED_DEBUG=true python backend_app.py

# Mode production
SYSCRED_ENV=production python backend_app.py
```

### Tester le système en ligne de commande

```bash
# Test direct du module
python -m syscred.verification_system

# Test avec entrée personnalisée
python -c "
from syscred.verification_system import CredibilityVerificationSystem
sys = CredibilityVerificationSystem(load_ml_models=False)
result = sys.verify_information('https://www.lemonde.fr')
print(result['scoreCredibilite'])
"
```

### Utilisation dans Kaggle/Colab

Ouvrez le notebook `syscred_kaggle.ipynb` ou `syscred_colab.ipynb`:

```python
# Cellule 1: Installation
!pip install transformers torch rdflib requests beautifulsoup4

# Cellule 2: Importer et tester
from syscred import CredibilityVerificationSystem
sys = CredibilityVerificationSystem()
result = sys.verify_information("https://example.com")
```

### API REST - Exemples

```bash
# Vérifier une URL
curl -X POST http://localhost:5000/api/verify \
  -H "Content-Type: application/json" \
  -d '{"input_data": "https://www.bbc.com/article"}'

# Vérifier du texte
curl -X POST http://localhost:5000/api/verify \
  -H "Content-Type: application/json" \
  -d '{"input_data": "This is a verified news report."}'

# Vérifier la santé
curl http://localhost:5000/api/health

# Obtenir la configuration
curl http://localhost:5000/api/config
```

---

## Choix de conception

### Pourquoi approche hybride neuro-symbolique?

| Approche | Forces | Faiblesses |
|----------|--------|------------|
| **Règles** | Transparent, explicable, rapide | Rigide, couverture limitée |
| **ML/NLP** | Flexible, patterns complexes | Boîte noire, besoin données |
| **Hybride** | Combine les deux! | Plus complexe |

**Décision:** Utiliser les règles pour les cas clairs (réputation connue, marqueurs linguistiques) et le ML pour les nuances (sentiment, biais).

### Pourquoi ces pondérations?

Les poids par défaut reflètent l'importance relative de chaque facteur selon la littérature:

```python
SCORE_WEIGHTS = {
    'source_reputation': 0.25,  # Le plus important: source connue
    'fact_check': 0.20,         # Vérification externe
    'sentiment_neutrality': 0.15,
    'entity_presence': 0.15,
    'coherence': 0.15,
    'domain_age': 0.10          # Moins important seul
}
```

### Pourquoi LIME pour l'explicabilité?

- **Local Interpretable Model-agnostic Explanations**
- Fonctionne avec n'importe quel modèle
- Génère des explications compréhensibles
- Standard académique reconnu

### Pourquoi OWL/RDF?

- **Traçabilité**: Chaque évaluation est enregistrée
- **Raisonnement**: Inférences automatiques possibles (OWL-RL)
- **Interopérabilité**: Standard W3C, compatible SPARQL
- **Publication**: Données linked data

---

## Améliorations réalisées

### Version 2.0 (Janvier 2026)

1. **Configuration centralisée** (`config.py`)
   - Variables d'environnement
   - Profils dev/prod/testing
   - Pondérations configurables

2. **API Clients refactorisés** (`api_clients.py`)
   - Data classes typées
   - Gestion d'erreurs robuste
   - WHOIS lookup réel

3. **Notebooks Kaggle/Colab**
   - `syscred_kaggle.ipynb` - Version Kaggle
   - `syscred_colab.ipynb` - Version avec Google Drive
   - Badges "Open in" pour facilité

4. **Fix du bug `NameError: result`**
   - Variable locale dans section RDF
   - Fallback si aucun résultat

5. **README professionnel**
   - Badge DOI Zenodo
   - Quick start
   - API endpoints documentés

6. **Notebook backup Kaggle→Drive**
   - `kaggle_to_gdrive_backup.ipynb`
   - Sauvegarde automatique

---

## Améliorations futures

### Court terme (Prochains mois)

- [ ] **Google Fact Check API réel** - Intégrer la clé API
- [ ] **CommonCrawl backlinks** - Analyse réelle des backlinks
- [ ] **Plus de sources** - Étendre `SOURCE_REPUTATIONS`
- [ ] **Tests unitaires** - Couverture >80%

### Moyen terme (6-12 mois)

- [ ] **Modèle de biais fine-tuné** - Entraîner sur donées réelles
- [ ] **Cache Redis** - Mise en cache des résultats
- [ ] **Interface web moderne** - React/Vue frontend
- [ ] **Docker** - Conteneurisation

### Long terme (Thèse)

- [ ] **Évaluation formelle** - Dataset de benchmark
- [ ] **Multi-langue** - Support français natif
- [ ] **Graphe de connaissances** - Neo4j intégration
- [ ] **Apprentissage continu** - Feedback loop

---

## API Reference

### Classe `CredibilityVerificationSystem`

```python
class CredibilityVerificationSystem:
    def __init__(
        self, 
        google_api_key: Optional[str] = None,
        ontology_base_path: Optional[str] = None,
        ontology_data_path: Optional[str] = None,
        load_ml_models: bool = True
    ):
        """
        Initialize the credibility verification system.
        
        Args:
            google_api_key: API key for Google Fact Check
            ontology_base_path: Path to base ontology TTL
            ontology_data_path: Path to store data
            load_ml_models: Whether to load ML models
        """
    
    def verify_information(self, input_data: str) -> Dict[str, Any]:
        """
        Main pipeline to verify credibility.
        
        Args:
            input_data: URL or text to verify
            
        Returns:
            Complete evaluation report with:
            - idRapport: Unique report ID
            - scoreCredibilite: 0.0-1.0
            - resumeAnalyse: French summary
            - detailsScore: Score breakdown
            - reglesAppliquees: Rule-based results
            - analyseNLP: NLP analysis results
        """
```

### Classe `Config`

```python
class Config:
    # Chemins
    BASE_DIR: Path
    ONTOLOGY_BASE_PATH: Path
    ONTOLOGY_DATA_PATH: Path
    
    # Serveur
    HOST: str = "0.0.0.0"
    PORT: int = 5000
    DEBUG: bool = True
    
    # API Keys
    GOOGLE_FACT_CHECK_API_KEY: Optional[str]
    
    # Modèles ML
    LOAD_ML_MODELS: bool = True
    SENTIMENT_MODEL: str
    NER_MODEL: str
    
    # Pondérations
    SCORE_WEIGHTS: Dict[str, float]
    CREDIBILITY_THRESHOLDS: Dict[str, float]
    SOURCE_REPUTATIONS: Dict[str, str]
    
    @classmethod
    def load_external_reputations(cls, filepath: str) -> None:
        """Charger réputations depuis fichier JSON."""
    
    @classmethod
    def update_weights(cls, new_weights: Dict[str, float]) -> None:
        """Mettre à jour les pondérations."""
    
    @classmethod
    def to_dict(cls) -> Dict:
        """Exporter configuration en dictionnaire."""
```

---

## Ontologie OWL

### Structure conceptuelle

```
syscred:Evaluation
  └── syscred:evaluates → syscred:Information
  └── syscred:hasScore → xsd:float
  └── syscred:hasEvidence → syscred:Evidence
  └── syscred:generatedAt → xsd:dateTime

syscred:Information
  └── syscred:hasSource → syscred:Source
  └── syscred:hasContent → xsd:string

syscred:Source
  └── syscred:hasDomain → xsd:string
  └── syscred:hasReputation → syscred:ReputationLevel
  └── syscred:hasDomainAge → xsd:integer

syscred:Evidence
  └── syscred:type → xsd:string (Linguistic, FactCheck, etc.)
  └── syscred:value → xsd:string
  └── syscred:impact → xsd:float
```

### Exemple de triplets générés

```turtle
@prefix syscred: <http://syscred.uqam.ca/ontology#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

syscred:eval_1705890000 a syscred:Evaluation ;
    syscred:evaluates syscred:info_lemonde_article ;
    syscred:hasScore "0.85"^^xsd:float ;
    syscred:generatedAt "2026-01-21T13:40:00"^^xsd:dateTime ;
    syscred:hasEvidence syscred:evidence_1 .

syscred:evidence_1 a syscred:Evidence ;
    syscred:type "SourceReputation" ;
    syscred:value "High" ;
    syscred:impact "0.25"^^xsd:float .
```

---

## Scripts utilitaires

### Script de backup vers Obsidian/Notion

Créez ce script dans `/Users/bk280625/documents041025/MonCode/`:

```bash
#!/bin/bash
# save_syscred_docs.sh
# Usage: ./save_syscred_docs.sh

DOC_SOURCE="/Users/bk280625/documents041025/MonCode/syscred/SysCRED_Documentation.md"
OBSIDIAN_VAULT="/Users/bk280625/Documents/Obsidian/PhD"
DATE=$(date +%Y%m%d)

# Copier vers Obsidian
cp "$DOC_SOURCE" "$OBSIDIAN_VAULT/SysCRED_Documentation_$DATE.md"
echo "✅ Copié vers Obsidian: $OBSIDIAN_VAULT"

# Ouvrir dans Obsidian (Mac)
open "obsidian://open?vault=PhD&file=SysCRED_Documentation_$DATE"

# Pour Notion: utiliser l'API ou copier manuellement
# Notion n'a pas d'import direct de fichiers locaux
echo "📋 Pour Notion: Copiez le contenu de $DOC_SOURCE"
echo "   Ou utilisez: https://notion.so/import"
```

---

## Références

- Loyer, D. S. (2025). *Modeling and Hybrid System for Verification of Sources Credibility*. UQAM.
- Loyer, D. S. (2025). *Ontology of a Verification System for Liability of the Information*. DIC-9335.

---

*Documentation générée le 21 janvier 2026*  
*SysCRED v2.0 - Dominique S. Loyer - UQAM*