105 lines
3.5 KiB
Markdown
105 lines
3.5 KiB
Markdown
# TP1 PDS - Traducteur RDF/Turtle vers RDF/Ntriples
|
|
|
|
Réalisé par Thibaut ROCHAS et Tuan Minh VU
|
|
|
|
## Implémentation du ASD
|
|
|
|
```
|
|
turtle ::= Turtle(phrase*)
|
|
phrase ::= Phrase(entity, aff*)
|
|
aff ::= Aff(ntity, complement*)
|
|
complement ::= Complement(entity)
|
|
| Complement_Text(text)
|
|
text ::= Text(entity)
|
|
|TextSTR(String)
|
|
entity ::= Entity(String)
|
|
```
|
|
|
|
## Conversion vers Ntriples par ASD attribuée
|
|
|
|
```
|
|
|
|
turtle ::= Turtle(phrase*)
|
|
phrase ::= Phrase(entity, aff*)
|
|
aff*.s = entity.val
|
|
aff ::= Aff(entity, complement*)
|
|
complement*.s = aff.s
|
|
complement*.v = entity.val
|
|
complement ::= Complement(entity)
|
|
complement.c = entity.val
|
|
| Complement_Text(text)
|
|
complement.c = text.val
|
|
text ::= Text(entity)
|
|
text.val = entity.val
|
|
|TextSTR(String)
|
|
text.val = String.self
|
|
entity ::= Entity(String)
|
|
entity.val=String.self
|
|
|
|
|
|
```
|
|
|TAD |Nom d'attribut |Type | Polarité
|
|
|----------------|-----------------|---------------------|---------|
|
|
|phrase | | |
|
|
|aff |s |String |H
|
|
|complement |s |String |H
|
|
|complement |v |String |H
|
|
|complement |c |String |H/S
|
|
|Entity |val |String |S
|
|
|
|
|
|
|
|
## Analyse lexicale et syntaxique
|
|
|
|
### Lexer
|
|
|
|
### Parser
|
|
- Au début, on créer un objet TutrleAST, il génère la structure Ntriple. On transmet le TurtleAST aux phrases enfants.
|
|
- Les phrases ont accès au sujet et l'enregistrent dans le TurtleAST fourni par le parent (il sauvegarde dans une variable currentSujet), les phrases contiennent de faire "descendre" le TurtleAST aux listes enfants (list vc étant simplement une liste de couple verbe complément*)
|
|
- listvc fait descendre TurtleAST à ses enfants vc (couple verbe complément*)
|
|
- vc sauvegarde dans le TurtleAST le verbe (dans curentVerbe), et fait descendre TurtleAST à ses enfants listc (list de complément)
|
|
- listc génère une phrase, le sujet et le verbe correspondant étant sauvegardés dans TurtleAST, le complément a plusieurs formes : il peut soit être <ID> soit "STRING", soit "ID"
|
|
- et récursivement les phrases sont toutes générées, puis elles sont fusionnées à la fin après le EOF pour faire un Ntriple
|
|
|
|
### Difficulté :
|
|
Nous avons ID qui est un String avec composé de lettres (non accentuées) et de chiffres, commençant obligatoirement par une lettre, et STRING qui peut être n'importe quelle chaîne de caractères (hors "). La grammaire était ambiguë, ce qui provoquait une erreur de compilation de Java
|
|
|
|
|
|
|
|
## Compatibilité
|
|
|
|
- Java JDK 21
|
|
- ANTLR3 3.5.2
|
|
- Gradle 8.5
|
|
|
|
## Construction, exécution
|
|
|
|
Pour construire le projet, depuis la racine du projet :
|
|
|
|
```bash
|
|
./gradlew build
|
|
```
|
|
|
|
Pour exécuter le programme Java TP1.Main, depuis la racine du projet :
|
|
```bash
|
|
java -jar /build/libs/TP1.jar [args]
|
|
```
|
|
|
|
## Structure du projet
|
|
|
|
Fichiers de code source et de tests
|
|
- `src/main/java/` : fichiers sources Java à compléter
|
|
- `src/main/antlr/` : fichier sources ANTLR à compléter
|
|
- `tests/` : fichiers textes à utiliser pour les tests
|
|
|
|
Moteur de production Gradle
|
|
- `settings.gradle`, `build.gradle` : configuration Gradle
|
|
- `gradle/wrapper` : exécutable de Wrapper Gradle
|
|
- `gradlew`, `gradlew.bat` : scripts (unix/windows) à exécuter depuis le terminal pour lancer le moteur de production
|
|
|
|
Environnement VSCode
|
|
- `.vscode` : configuration de VSCode
|
|
- `eclipse-formatter.xml` : formatage de code source Java, optionnel
|
|
|
|
Git
|
|
- `.gitignore` : configuration pour ignorer certains fichiers et répertoires |