From 341dc4d0c78627ca5c8a8cc6a733ef68da1c1884 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?=
 <aurelien.lamercerie@laposte.net>
Date: Thu, 30 Sep 2021 23:24:49 +0200
Subject: [PATCH] Update typing of composite list

---
 config/semantic-net.ttl         |  14 +-
 config/transduction-schemes.ttl | 295 ++++++++++++++++----------------
 2 files changed, 158 insertions(+), 151 deletions(-)

diff --git a/config/semantic-net.ttl b/config/semantic-net.ttl
index 576e036d..ce40e75b 100644
--- a/config/semantic-net.ttl
+++ b/config/semantic-net.ttl
@@ -130,9 +130,9 @@ net:has_instance
   rdfs:label "entity instance" ;
   rdfs:subPropertyOf net:objectValue ;
 .
-net:has_mainClass
+net:has_item
   rdf:type rdf:Property ;
-  rdfs:label "has main class" ;
+  rdfs:label "has item" ;
   rdfs:subPropertyOf net:has_object ;
 .
 net:has_mother_class
@@ -150,6 +150,11 @@ net:has_object
   rdfs:label "relation" ;
   rdfs:subPropertyOf net:netProperty ;
 .
+net:has_parent
+  rdf:type rdf:Property ;
+  rdfs:label "has parent" ;
+  rdfs:subPropertyOf net:has_object ;
+.
 net:has_parent_class
   rdf:type rdf:Property ;
   rdfs:label "parent class" ;
@@ -170,11 +175,6 @@ net:has_structure
   rdfs:label "Linguistic Structure (in UNL Document)" ;
   rdfs:subPropertyOf net:netProperty ;
 .
-net:has_subClass
-  rdf:type rdf:Property ;
-  rdfs:label "has sub class" ;
-  rdfs:subPropertyOf net:has_object ;
-.
 net:has_target
   rdf:type rdf:Property ;
   rdfs:label "has target" ;
diff --git a/config/transduction-schemes.ttl b/config/transduction-schemes.ttl
index c57a2119..cbc29dc4 100644
--- a/config/transduction-schemes.ttl
+++ b/config/transduction-schemes.ttl
@@ -57,15 +57,17 @@ CONSTRUCT {
    ?mainInstanceUri rdf:type ?subEntity23Uri.
 }
 WHERE {
-   # net1: entity class list
+   # net1: Composite List
    ?net1 a net:Instance.
-   ?net1 net:type net:entity_class_list.
+   ?net1 net:type net:list.
+   ?net1 net:listOf net:composite.
+   # -- old --- ?net1 net:type net:entity_class_list.
    ?net1 net:has_structure ?req.
    ?net1 net:entityClass ?entityClass.
    ?net1 net:has_node ?uw2, ?uw3.
-   ?net1 net:has_mainClass ?mainEntityObject.	
+   ?net1 net:has_parent ?mainEntityObject.	
    ?mainEntityObject net:has_concept ?mainEntity.
-   ?net1 net:has_subClass ?subEntityObject2, ?subEntityObject3.	
+   ?net1 net:has_item ?subEntityObject2, ?subEntityObject3.	
    ?subEntityObject2 net:concept ?subEntity2.
    ?subEntityObject2 net:has_node ?uw2.
    ?subEntityObject3 net:has_concept ?subEntity3.
@@ -124,15 +126,17 @@ CONSTRUCT {
    ?mainInstanceUri rdf:type ?subEntity23Uri.
 }
 WHERE {
-   # net1: entity class list
+   # net1: Composite List
    ?net1 a net:Instance.
-   ?net1 net:type net:entity_class_list.
+   ?net1 net:type net:list.
+   ?net1 net:listOf net:composite.
+   # -- old --- ?net1 net:type net:entity_class_list.
    ?net1 net:has_structure ?req.
    ?net1 net:entityClass ?entityClass.
    ?net1 net:has_node ?uw2, ?uw3.
-   ?net1 net:has_mainClass ?mainEntityObject.	
+   ?net1 net:has_parent ?mainEntityObject.	
    ?mainEntityObject net:has_concept ?mainEntity.
-   ?net1 net:has_subClass ?subEntityObject2, ?subEntityObject3.	
+   ?net1 net:has_item ?subEntityObject2, ?subEntityObject3.	
    ?subEntityObject2 net:has_concept ?subEntity2.
    ?subEntityObject2 net:has_node ?uw2.
    ?subEntityObject3 net:has_concept ?subEntity3.
@@ -235,56 +239,6 @@ WHERE {
 }""" ;
   sh:order 3.1 ;
 .
-cts:add-list-of-entity-classes
-  rdf:type sh:SPARQLRule ;
-  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
-PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
-PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
-PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
-PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
-PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
-PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
-PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
-PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
-    
-# -- Add Entity classes in System Ontology
-CONSTRUCT { 
-   # Classification
-   ?subEntityUri rdfs:subClassOf ?mainEntityUri.
-   ?subEntityUri rdfs:label ?subEntity.
-   ?subEntityUri sys:from_structure ?req.
-   # -- old --- ?mainEntityUri rdfs:subClassOf ?entityUri.
-   # -- old --- ?mainEntityUri rdfs:label ?mainEntity.
-   # Instantiation (extension)
-   ?mainInstanceUri rdf:type ?subEntityUri.
-   ?mainInstanceUri sys:from_structure ?req.
-}
-WHERE {
-   # net1: entity class list
-   ?net1 a net:Instance.
-   ?net1 net:type net:entity_class_list.
-   ?net1 net:has_structure ?req.
-   ?net1 net:entityClass ?entityClass.
-   ?net1 net:has_mainClass ?mainEntityObject.	
-   ?mainEntityObject net:has_concept ?mainEntity.
-   ?net1 net:has_subClass ?subEntityObject.	
-   ?subEntityObject net:has_concept ?subEntity.
-   ?subEntityObject net:has_instance ?mainInstance.	
-   # Filter -- old --- FILTER NOT EXISTS  { ?net2 net:has_subClass ?mainEntity}	
-   # URI (for classes)
-   sys:Structure sys:has_frame_uri ?frameURI.
-   BIND (concat( ?frameURI, ?entityClass) AS ?s1).
-   BIND (concat(?s1, '#', ?mainEntity) AS ?s2).
-   BIND (concat(?s1, '#', ?subEntity) AS ?s3).
-   BIND (uri(?s2) AS ?mainEntityUri).
-   BIND (uri(?s3) AS ?subEntityUri).
-   # URI (for instance)
-   BIND (concat(?s1, '_', ?mainInstance) AS ?s4).
-   BIND (uri(?s4) AS ?mainInstanceUri).
-}""" ;
-  sh:order 3.2 ;
-.
 cts:add-state-property
   rdf:type sh:SPARQLRule ;
   rdfs:label "add-event" ;
@@ -382,10 +336,9 @@ cts:batch_execution
   sh:rule cts:add-conjunctive-entity-classes ;
   sh:rule cts:add-disjunctive-entity-classes ;
   sh:rule cts:add-event ;
-  sh:rule cts:add-list-of-entity-classes ;
   sh:rule cts:add-state-property ;
   sh:rule cts:bypass-reification ;
-  sh:rule cts:complement-list-of-entity-classes ;
+  sh:rule cts:complement-composite-class ;
   sh:rule cts:compose-agt-verb-obj-as-simple-event ;
   sh:rule cts:compose-aoj-verb-obj-as-simple-state-property ;
   sh:rule cts:compose-atom-with-list-by-mod-1 ;
@@ -400,6 +353,7 @@ cts:batch_execution
   sh:rule cts:extend-list-net ;
   sh:rule cts:generate-atom-class ;
   sh:rule cts:generate-atom-instance ;
+  sh:rule cts:generate-composite-class-from-list-net ;
   sh:rule cts:init-conjunctive-list-net ;
   sh:rule cts:init-disjunctive-list-net ;
   sh:rule cts:instantiate-atom-net ;
@@ -436,7 +390,7 @@ WHERE {
 } """ ;
   sh:order 1.1 ;
 .
-cts:complement-list-of-entity-classes
+cts:complement-composite-class
   rdf:type sh:SPARQLRule ;
   sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -457,9 +411,10 @@ CONSTRUCT {
 WHERE {
    # net1: entity class list
    ?net1 a net:Instance.
-   ?net1 net:type net:entity_class_list.
+   ?net1 net:type net:list.
+   ?net1 net:listOf net:composite.
    ?net1 net:entityClass ?entityClass.	
-   ?net1 net:has_subClass ?subEntityObject.	
+   ?net1 net:has_item ?subEntityObject.	
    ?subEntityObject net:has_concept ?subEntity.	
    ?subEntityObject net:has_feature ?featureObject.	
    # object: feature
@@ -639,30 +594,24 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
     
 # -- Compose an atom net and a list net (with distinct item classes)
 CONSTRUCT { 
-   # Object: composite (A)
-   ?newObject12 a net:Object.
-   ?newObject12 net:objectType net:composite.
-   ?newObject12 net:has_node ?uw1, ?uw2.
-   ?newObject12 net:has_mother_class ?net1Mother.
-   # -- TODO --- ?newObject12 net:has_parent_class ?net1Class.
-   ?newObject12 net:has_concept ?subConceptA.
-   ?newObject12 net:has_feature ?net2ItemA.
-   # Object: composite (B) 
-   ?newObject13 a net:Object.
-   ?newObject13 net:objectType net:composite.
-   ?newObject13 net:has_node ?uw1, ?uw3.
-   ?newObject13 net:has_mother_class ?net1Mother.
-   # -- TODO --- ?newObject13 net:has_parent_class ?net1Class.
-   ?newObject13 net:has_concept ?subConceptB.
-   ?newObject13 net:has_feature ?net2ItemB.
-   # Net: Entity ClassList
+   # Object: Composite
+   ?newObject a net:Object.
+   ?newObject net:objectType net:composite.
+   ?newObject net:has_node ?uw1, ?uw3.
+   ?newObject net:has_mother_class ?net1Mother.
+   # -- TODO --- ?newObject net:has_parent_class ?net1Class.
+   ?newObject net:has_concept ?subConcept.
+   ?newObject net:has_feature ?net2Item.
+   # Net: Composite List
    ?newNet a net:Instance.
-   ?newNet net:type net:entity_class_list.
+   ?newNet net:type net:list.
+   ?newNet net:type ?listSubType.
+   ?newNet net:listOf net:composite.
    ?newNet net:has_structure ?req.
    ?newNet net:has_node ?uw1, ?uw2, ?uw3.
    ?newNet net:entityClass ?net1ParentClass.
-   ?newNet net:has_mainClass ?net1Object.	
-   ?newNet net:has_subClass ?newObject12, ?newObject13.	
+   ?newNet net:has_parent ?net1Object.	
+   ?newNet net:has_item ?newObject.	
 }
 WHERE {
    # net1: atom
@@ -679,36 +628,33 @@ WHERE {
    # net2: list
    ?net2 a net:Instance.
    ?net2 net:type net:list.
-   ?net2 net:listOf ?listItemClass.
+   ?net2 net:type ?listSubType.
+   ?net2 net:listOf net:atom.
    ?net2 net:has_structure ?req. 
    ?net2 net:has_node ?uw2, ?uw3.
-   ?net2 net:has_item ?net2ItemA.
-   ?net2ItemA net:has_node ?uw2.
-   ?net2ItemA net:has_concept ?net2ConceptA.
-   ?net2 net:has_item ?net2ItemB.
-   ?net2ItemB net:has_node ?uw3.
-   ?net2ItemB net:has_concept ?net2ConceptB.
+   ?net2 net:has_item ?net2Item.
+   ?net2Item net:has_node ?uw3.
+   ?net2Item net:has_parent_class ?net2ParentClass.	
+   ?net2Item net:has_concept ?net2Concept.
    # Filter
    FILTER NOT EXISTS { ?net2 net:has_node ?uw1 }.
-   FILTER ( ?net1ParentClass != ?listItemClass  ).
+   FILTER ( ?net1ParentClass != ?net2ParentClass  ).
    # Label: Id, concept
    ?uw1 unl:has_id ?uw1Id.
    ?uw2 unl:has_id ?uw2Id.
    ?uw3 unl:has_id ?uw3Id.
-   BIND (concat( ?net2ConceptA, '_', ?net1Concept) AS ?subConceptA).
-   BIND (concat( ?net2ConceptB, '_', ?net1Concept) AS ?subConceptB).
+   BIND (concat( ?net2Concept, '_', ?net1Concept) AS ?subConcept).
    # URI (for Object)
    cprm:Config_Parameters cprm:netURI ?netURI.
    cprm:Config_Parameters cprm:objectRef ?objectRef.
    BIND (concat( ?netURI, ?objectRef) AS ?o1).
-   BIND (concat(?o1, ?uw1Id, '-', ?uw2Id) AS ?o2).
-   BIND (concat(?o1, ?uw1Id, '-', ?uw3Id) AS ?o3).
-   BIND (uri(?o2) AS ?newObject12).
-   BIND (uri(?o3) AS ?newObject13).
-   # URI (for ClassList Net)
+   BIND (concat(?o1, ?uw1Id, '-', ?uw3Id) AS ?o2).
+   BIND (uri(?o2) AS ?newObject).
+   # URI (for List Net)
    cprm:Config_Parameters cprm:netURI ?netURI.
-   net:class_list rdfs:label ?classListLabel.
-   BIND (concat( ?netURI, ?classListLabel, '_') AS ?n1).
+   net:list rdfs:label ?listLabel.
+   net:composite rdfs:label ?compositeLabel.
+   BIND (concat( ?netURI, ?listLabel, '_', ?compositeLabel, '_') AS ?n1).
    BIND (concat(?n1, ?uw1Id, '-', ?uw2Id) AS ?n2).
    BIND (uri(?n2) AS ?newNet).
 }""" ;
@@ -729,14 +675,16 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
     
 # -- Compose an atom net and an list net (with same item classes)
 CONSTRUCT { 
-   # Net: Entity ClassList
+   # Net: Composite List
    ?newNet a net:Instance.
-   ?newNet net:type net:entity_class_list.
+   ?newNet net:type net:list.
+   ?newNet net:type ?listSubType.
+   ?newNet net:listOf net:composite.
    ?newNet net:has_structure ?req.
    ?newNet net:has_node ?uw1, ?uw2, ?uw3.
    ?newNet net:entityClass ?net1ParentClass.
-   ?newNet net:has_mainClass ?net1Object.	
-   ?newNet net:has_subClass ?object2, ?object3.	
+   ?newNet net:has_parent ?net1Object.	
+   ?newNet net:has_item ?net2Item.	
 }
 WHERE {
    # net1: atom
@@ -751,23 +699,27 @@ WHERE {
    # net2: list
    ?net2 a net:Instance.
    ?net2 net:type net:list.
-   ?net2 net:listOf ?listItemClass.
+   ?net2 net:listOf net:atom.
    ?net2 net:has_structure ?req.
    ?net2 net:has_node ?uw2, ?uw3.
-   ?net2 net:has_item ?object2, ?object3.
+   ?net2 net:has_item ?net2Item.
+   ?net2Item net:has_node ?uw3.
+   ?net2Item net:has_parent_class ?net2ParentClass.	
+   ?net2Item net:has_concept ?net2Concept.
    # Filter
-   FILTER ( ?uw1 != ?uw3  ).
-   FILTER ( ?net1ParentClass = ?listItemClass  ).
+   FILTER NOT EXISTS { ?net2 net:has_node ?uw1 }.
+   FILTER ( ?net1ParentClass = ?net2ParentClass  ).
    # Label: Id, subEntity
    ?uw1 unl:has_id ?uw1Id.
    ?uw2 unl:has_id ?uw2Id.
    ?uw3 unl:has_id ?uw3Id.
-   # URI (for ClassList Net)
+   # URI (for List Net)
    cprm:Config_Parameters cprm:netURI ?netURI.
-   net:class_list rdfs:label ?classListLabel.
-   BIND (concat( ?netURI, ?classListLabel, '_') AS ?s1).
-   BIND (concat(?s1, ?uw1Id, '-', ?uw2Id) AS ?s2).
-   BIND (uri(?s2) AS ?newNet).
+   net:list rdfs:label ?listLabel.
+   net:composite rdfs:label ?compositeLabel.
+   BIND (concat( ?netURI, ?listLabel, '_', ?compositeLabel, '_') AS ?n1).
+   BIND (concat(?n1, ?uw1Id, '-', ?uw2Id) AS ?n2).
+   BIND (uri(?n2) AS ?newNet).
 }""" ;
   sh:order 2.33 ;
 .
@@ -1032,7 +984,7 @@ CONSTRUCT {
    ?newNet a net:Instance.
    ?newNet net:type net:list.
    ?newNet net:type net:unary_list.
-   ?newNet net:listOf ?net1ParentClass.
+   ?newNet net:listOf net:atom.
    ?newNet net:has_structure ?req.
    ?newNet net:has_node ?uw1.
    ?newNet net:has_item ?object1.
@@ -1057,9 +1009,8 @@ WHERE {
    ?uw1 unl:has_id ?uw1Id.
    cprm:Config_Parameters cprm:netURI ?netURI.
    net:list rdfs:label ?listLabel.
-   BIND (strbefore(?uw1Label, '(') AS ?concept1).
-   # -- old --- BIND (strbefore(?uw2Label, '(') AS ?concept2).
-   BIND (concat( ?netURI, ?listLabel, '_') AS ?s1).
+   net:atom rdfs:label ?atomLabel.
+   BIND (concat( ?netURI, ?listLabel, '_', ?atomLabel, '_') AS ?s1).
    BIND (concat(?s1, ?uw1Id) AS ?s2).
    BIND (uri(?s2) AS ?newNet).
 }""" ;
@@ -1191,8 +1142,12 @@ WHERE {
    ?net1 net:has_atom ?atomObject1.
    ?atomObject1 net:has_parent_class ?atomParentClass.
    ?atomObject1 net:has_concept ?atomConcept.	
-   # Filter: entity not present in a class list
-   FILTER NOT EXISTS  { ?net2 net:has_subClass ?atomObject1}
+   # Filter: atom not present in a composite list
+   FILTER NOT EXISTS  { 
+      ?net2 net:type net:list.
+      ?net2 net:listOf net:composite.
+      ?net2 net:has_item ?atomObject1.
+   }
    # URI: class
    sys:Structure sys:has_frame_uri ?frameURI.
    BIND (concat( ?frameURI, ?atomParentClass) AS ?s1).
@@ -1247,6 +1202,57 @@ WHERE {
 }""" ;
   sh:order 3.1 ;
 .
+cts:generate-composite-class-from-list-net
+  rdf:type sh:SPARQLRule ;
+  sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
+PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
+PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
+PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
+PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
+PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
+    
+# -- Add Entity classes in System Ontology
+CONSTRUCT { 
+   # Classification
+   ?subEntityUri rdfs:subClassOf ?mainEntityUri.
+   ?subEntityUri rdfs:label ?subEntity.
+   ?subEntityUri sys:from_structure ?req.
+   # -- old --- ?mainEntityUri rdfs:subClassOf ?entityUri.
+   # -- old --- ?mainEntityUri rdfs:label ?mainEntity.
+   # Instantiation (extension)
+   ?mainInstanceUri rdf:type ?subEntityUri.
+   ?mainInstanceUri sys:from_structure ?req.
+}
+WHERE {
+   # net1: Composite List
+   ?net1 a net:Instance.
+   ?net1 net:type net:list.
+   ?net1 net:listOf net:composite.
+   ?net1 net:has_structure ?req.
+   ?net1 net:entityClass ?entityClass.
+   ?net1 net:has_parent ?mainEntityObject.	
+   ?mainEntityObject net:has_concept ?mainEntity.
+   ?net1 net:has_item ?subEntityObject.	
+   ?subEntityObject net:has_concept ?subEntity.
+   ?subEntityObject net:has_instance ?mainInstance.	
+   # Filter -- old --- FILTER NOT EXISTS  { ?net2 net:has_subClass ?mainEntity}	
+   # URI (for classes)
+   sys:Structure sys:has_frame_uri ?frameURI.
+   BIND (concat( ?frameURI, ?entityClass) AS ?s1).
+   BIND (concat(?s1, '#', ?mainEntity) AS ?s2).
+   BIND (concat(?s1, '#', ?subEntity) AS ?s3).
+   BIND (uri(?s2) AS ?mainEntityUri).
+   BIND (uri(?s3) AS ?subEntityUri).
+   # URI (for instance)
+   BIND (concat(?s1, '_', ?mainInstance) AS ?s4).
+   BIND (uri(?s4) AS ?mainInstanceUri).
+}""" ;
+  sh:order 3.2 ;
+.
 cts:generation
   rdf:type owl:Class ;
   rdf:type sh:NodeShape ;
@@ -1255,15 +1261,15 @@ cts:generation
   sh:rule cts:add-conjunctive-entity-classes ;
   sh:rule cts:add-disjunctive-entity-classes ;
   sh:rule cts:add-event ;
-  sh:rule cts:add-list-of-entity-classes ;
   sh:rule cts:add-state-property ;
-  sh:rule cts:complement-list-of-entity-classes ;
+  sh:rule cts:complement-composite-class ;
   sh:rule cts:compute-class-uri-of-net-object ;
   sh:rule cts:compute-domain-range-of-event-object-properties ;
   sh:rule cts:compute-domain-range-of-state-property-object-properties ;
   sh:rule cts:compute-instance-uri-of-net-object ;
   sh:rule cts:generate-atom-class ;
   sh:rule cts:generate-atom-instance ;
+  sh:rule cts:generate-composite-class-from-list-net ;
 .
 cts:init-conjunctive-list-net
   rdf:type sh:SPARQLRule ;
@@ -1283,7 +1289,7 @@ CONSTRUCT {
    ?newNet a net:Instance.
    ?newNet net:type net:list.
    ?newNet net:type net:conjunctive_list.
-   ?newNet net:listOf ?net1ParentClass.
+   ?newNet net:listOf net:atom.
    ?newNet net:has_structure ?req.
    ?newNet net:has_node ?uw1.
    ?newNet net:has_item ?object1.
@@ -1307,9 +1313,8 @@ WHERE {
    ?uw1 unl:has_id ?uw1Id.
    cprm:Config_Parameters cprm:netURI ?netURI.
    net:list rdfs:label ?listLabel.
-   BIND (strbefore(?uw1Label, '(') AS ?concept1).
-   # -- old --- BIND (strbefore(?uw2Label, '(') AS ?concept2).
-   BIND (concat( ?netURI, ?listLabel, '_') AS ?s1).
+   net:atom rdfs:label ?atomLabel.
+   BIND (concat( ?netURI, ?listLabel, '_', ?atomLabel, '_') AS ?s1).
    BIND (concat(?s1, ?uw1Id) AS ?s2).
    BIND (uri(?s2) AS ?newNet).
 }""" ;
@@ -1333,7 +1338,7 @@ CONSTRUCT {
    ?newNet a net:Instance.
    ?newNet net:type net:list.
    ?newNet net:type net:disjunctive_list.
-   ?newNet net:listOf ?net1ParentClass.
+   ?newNet net:listOf net:atom.
    ?newNet net:has_structure ?req.
    ?newNet net:has_node ?uw1.
    ?newNet net:has_item ?object1.
@@ -1357,9 +1362,8 @@ WHERE {
    ?uw1 unl:has_id ?uw1Id.
    cprm:Config_Parameters cprm:netURI ?netURI.
    net:list rdfs:label ?listLabel.
-   BIND (strbefore(?uw1Label, '(') AS ?concept1).
-   # -- old --- BIND (strbefore(?uw2Label, '(') AS ?concept2).
-   BIND (concat( ?netURI, ?listLabel, '_') AS ?s1).
+   net:atom rdfs:label ?atomLabel.
+   BIND (concat( ?netURI, ?listLabel, '_', ?atomLabel, '_') AS ?s1).
    BIND (concat(?s1, ?uw1Id) AS ?s2).
    BIND (uri(?s2) AS ?newNet).
 }""" ;
@@ -1416,17 +1420,18 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
     
 # -- Instantiate composite in list by extension of instances from parent element
 CONSTRUCT { 
-   ?subObject2 net:has_instance ?parentInstance. 
+   ?itemObject net:has_instance ?parentInstance. 
 }
 WHERE {
-   # net2: list of composite items
-   ?net2 a net:Instance.
-   ?net2 net:type net:entity_class_list.
-   ?net2 net:has_mainClass ?parentObject.
+   # net1: Composite List
+   ?net1 a net:Instance.
+   ?net1 net:type net:list.
+   ?net1 net:listOf net:composite.
+   ?net1 net:has_parent ?parentObject.
    ?parentObject net:has_instance ?parentInstance. 
-   ?net2 net:has_subClass ?subObject2.	
+   ?net1 net:has_item ?itemObject.	
    # Filter
-   FILTER NOT EXISTS { ?subObject2 net:has_instance ?anyInstance } .
+   FILTER NOT EXISTS { ?itemObject net:has_instance ?anyInstance } .
 }""" ;
   sh:order 2.341 ;
 .
@@ -1448,21 +1453,23 @@ CONSTRUCT {
    ?net2SubObject net:has_instance ?parentInstance. 
 }
 WHERE {
-   # net1: list of composite items
+   # net1: Composite Liste
    ?net1 a net:Instance.
-   ?net1 net:type net:entity_class_list.
+   ?net1 net:type net:list.
+   ?net1 net:listOf net:composite.
    ?net1 net:has_structure ?sameReq.
-   ?net1 net:has_mainClass ?parentObject.
+   ?net1 net:has_parent ?parentObject.
    ?parentObject net:has_instance ?parentInstance. 
-   ?net1 net:has_subClass ?net1SubObject.	
+   ?net1 net:has_item ?net1SubObject.	
    ?net1SubObject net:has_concept ?sameEntity.	
-   # net2: another list
+   # net2: Another List
    ?net2 a net:Instance.
-   ?net2 net:type net:entity_class_list.
+   ?net2 net:type net:list.
+   ?net2 net:listOf net:composite.
    ?net2 net:has_structure ?sameReq.
-   ?net2 net:has_mainClass ?net2MainObject.
+   ?net2 net:has_parent ?net2MainObject.
    ?net2MainObject net:has_concept ?sameEntity.	
-   ?net2 net:has_subClass ?net2SubObject.	
+   ?net2 net:has_item ?net2SubObject.	
    # Filter
    FILTER NOT EXISTS { ?net2SubObject net:has_instance ?anyInstance } .
 }""" ;
-- 
GitLab