From 378652cf289f27cc6683cdb7180a7ceaee71fc91 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?=
 <aurelien.lamercerie@laposte.net>
Date: Thu, 18 Nov 2021 22:37:47 +0100
Subject: [PATCH] CTS update: decomposition of generation in two steps (class
 and relation)

---
 config/transduction-schemes.ttl | 64 +++++++++++++++++++++++++++++++++
 prepare_work_data.py            |  2 +-
 2 files changed, 65 insertions(+), 1 deletion(-)

diff --git a/config/transduction-schemes.ttl b/config/transduction-schemes.ttl
index e525383a..28b9275f 100644
--- a/config/transduction-schemes.ttl
+++ b/config/transduction-schemes.ttl
@@ -268,6 +268,8 @@ cts:batch_execution
   sh:rule cts:link-to-scope-entry ;
   sh:rule cts:specify-axis-of-atom-list-net ;
   sh:rule cts:update-batch-execution-rules ;
+  sh:rule cts:update-generation-class-rules ;
+  sh:rule cts:update-generation-relation-rules ;
   sh:rule cts:update-generation-rules ;
   sh:rule cts:update-net-extension-rules ;
   sh:rule cts:update-preprocessing-rules ;
@@ -296,6 +298,18 @@ WHERE {
 } """ ;
   sh:order 1.1 ;
 .
+cts:class_generation
+  rdf:type owl:Class ;
+  rdf:type sh:NodeShape ;
+  rdfs:label "class generation" ;
+  rdfs:subClassOf cts:Transduction_Schemes ;
+  sh:rule cts:add-conjunctive-classes-from-list-net ;
+  sh:rule cts:add-disjunctive-classes-from-list-net ;
+  sh:rule cts:complement-composite-class ;
+  sh:rule cts:generate-atom-class ;
+  sh:rule cts:generate-atom-instance ;
+  sh:rule cts:generate-composite-class-from-list-net ;
+.
 cts:complement-composite-class
   rdf:type sh:SPARQLRule ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -1866,10 +1880,24 @@ cts:preprocessing
   sh:rule cts:define-uw-id ;
   sh:rule cts:link-to-scope-entry ;
   sh:rule cts:update-batch-execution-rules ;
+  sh:rule cts:update-generation-class-rules ;
+  sh:rule cts:update-generation-relation-rules ;
   sh:rule cts:update-generation-rules ;
   sh:rule cts:update-net-extension-rules ;
   sh:rule cts:update-preprocessing-rules ;
 .
+cts:relation_generation
+  rdf:type owl:Class ;
+  rdf:type sh:NodeShape ;
+  rdfs:label "relation generation" ;
+  rdfs:subClassOf cts:Transduction_Schemes ;
+  sh:rule cts:compute-domain-of-relation-property ;
+  sh:rule cts:compute-range-of-relation-property ;
+  sh:rule cts:generate-event-class ;
+  sh:rule cts:generate-relation-property ;
+  sh:rule cts:link-classes-by-relation-property ;
+  sh:rule cts:link-instances-by-relation-property ;
+.
 cts:specify-axis-of-atom-list-net
   rdf:type sh:SPARQLRule ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -1922,6 +1950,42 @@ VALUES ?nodeShapes {
 }""" ;
   sh:order 1.09 ;
 .
+cts:update-generation-class-rules
+  rdf:type sh:SPARQLRule ;
+  sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX sh: <http://www.w3.org/ns/shacl#>
+
+CONSTRUCT {
+   cts:class_generation sh:rule ?rule.
+}
+WHERE {
+   { ?rule rdf:type sh:SPARQLRule.
+   ?rule sh:order ?order.
+   FILTER ( strStarts(str(?order),\"3.1\")  ). }
+   UNION
+   { ?rule rdf:type sh:SPARQLRule.
+   ?rule sh:order ?order.
+   FILTER ( strStarts(str(?order),\"3.2\")  ). }
+}""" ;
+  sh:order 1.031 ;
+.
+cts:update-generation-relation-rules
+  rdf:type sh:SPARQLRule ;
+  sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX sh: <http://www.w3.org/ns/shacl#>
+
+CONSTRUCT {
+   cts:relation_generation sh:rule ?rule.
+}
+WHERE {
+   ?rule rdf:type sh:SPARQLRule.
+   ?rule sh:order ?order.
+   FILTER ( strStarts(str(?order),\"3.3\")  ).
+}""" ;
+  sh:order 1.032 ;
+.
 cts:update-generation-rules
   rdf:type sh:SPARQLRule ;
   sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
diff --git a/prepare_work_data.py b/prepare_work_data.py
index ef9fd076..6b546ed4 100644
--- a/prepare_work_data.py
+++ b/prepare_work_data.py
@@ -214,7 +214,7 @@ if __name__ == '__main__':
     run(req_200, 'R200f', target_ref)
     run(req_300, 'R300f', target_ref) 
     run(req_1100, 'R1100f', target_ref) 
-    #run(corpus_40, 'Corpus-CCTP-40e', target_ref)
+    run(corpus_40, 'Corpus-CCTP-40f', target_ref)
     #run(corpus_ERTMS, 'Corpus-ERTMS', target_ref)
     #run(corpus_PEV, 'Corpus-PEV', target_ref)
 
-- 
GitLab