Skip to content
Snippets Groups Projects
Select Git revision
  • f2ae0b47febddf277c2e19579b4871c9fbcd02f2
  • main default
  • 35-cgu
  • 34-peertube-support
  • 27-add-autoplay-to-iframe
  • 33-bug-on-youtube-embed-urls
  • RC-Rekall-v1.1-fix_lpo
  • tuleap-140-go-back-to-my-capsules-page-when-i-m-on-capsule-preview-page
  • RC-Rekall-v1.2-fix10
  • RC-Rekall-v1.2-fix9
  • RC-Rekall-v1.2-fix8
  • RC-Rekall-v1.2-fix7
  • RC-Rekall-v1.2-fix6
  • RC-Rekall-v1.2-fix5
  • RC-Rekall-v1.2-fix4
  • RC-Rekall-v1.2-fix3
  • RC-Rekall-v1.2-fix2
  • RC-Rekall-v1.2-fix1
  • RC-Rekall-v1.1-fix-3
  • RC-Rekall-v1.1-fix-2
  • RC-Rekall-v1.1-fix-1
  • RC-Rekall-v1.1-delivered
  • preprod20220209-1535
23 results

index.html.twig

Blame
  • transduction-schemes.ttl 77.51 KiB
    # baseURI: https://unsel.tetras-libre.fr/tenet/transduction-schemes
    # imports: http://datashapes.org/dash
    # prefix: cts
    
    @prefix cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#> .
    @prefix dash: <http://datashapes.org/dash#> .
    @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 sh: <http://www.w3.org/ns/shacl#> .
    @prefix unl: <https://unl.tetras-libre.fr/rdf/schema#> .
    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
    
    sh:SPARQLRule
      rdfs:subClassOf owl:Thing ;
    .
    <https://unsel.tetras-libre.fr/tenet/transduction-schemes>
      rdf:type owl:Ontology ;
      owl:imports <http://datashapes.org/dash> ;
    .
    cts:Transduction_Schemes
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "Transduction Schemes" ;
      rdfs:subClassOf owl:Thing ;
    .
    cts:add-conjunctive-classes-from-list-net
      rdf:type sh:SPARQLRule ;
      rdfs:label "add-conjunctive-entity-classes" ;
      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 disjunctive classes in Ontology
    CONSTRUCT { 
       # Classification
       ?newClassUri rdfs:subClassOf ?parentUri.
       ?newClassUri rdfs:label ?newClassLabel.
       ?newClassUri sys:from_structure ?req.
       ?newClassUri  
    		owl:equivalentClass [	a owl:Class ;
                                    owl:intersectionOf ( ?item1Uri ?item2Uri ) ] .
       # Instantiation (extension)
       ?instanceUri rdf:type ?newClassUri.
    }
    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:has_node ?uw1, ?uw2.
       ?net1 net:has_parent ?parentObject.	
       ?parentObject net:has_class_uri ?parentUri.
       ?parentObject net:has_instance_uri ?instanceUri.	
       ?parentObject net:has_concept ?parentConcept.
       ?net1 net:has_item ?itemObject1, ?itemObject2.	
       ?itemObject1 net:has_class_uri ?item1Uri.
       ?itemObject1 net:has_node ?uw1.
       ?itemObject2 net:has_class_uri ?item2Uri.
       ?itemObject2 net:has_node ?uw2.
       # extension: disjunction of UW
       ?uw1 unl:and ?uw2.
       # Label(s) / URI (for classes)
       ?uw1 rdfs:label ?uw1Label.
       ?uw2 rdfs:label ?uw2Label.
       BIND (strbefore(?uw1Label, '(') AS ?concept1)
       BIND (strbefore(?uw2Label, '(') AS ?concept2)
       BIND (concat(?concept1, '-or-', ?concept2) AS ?disjunctiveConcept)
       BIND (concat(?disjunctiveConcept, '_', ?parentConcept) AS ?newClassLabel).
       # URI (for classes)
       sys:Structure sys:has_frame_uri ?frameURI.
       BIND (concat(?frameURI, ?newClassLabel) AS ?s5).
       BIND (uri(?s5) AS ?newClassUri).
    }""" ;
      sh:order 3.23 ;
    .
    cts:add-disjunctive-classes-from-list-net
      rdf:type sh:SPARQLRule ;
      rdfs:label "add-disjunctive-entity-classes" ;
      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 disjunctive classes in Ontology
    CONSTRUCT { 
       # Classification
       ?newClassUri rdfs:subClassOf ?parentUri.
       ?newClassUri rdfs:label ?newClassLabel.
       ?newClassUri sys:from_structure ?req.
       ?newClassUri  
    		owl:equivalentClass [	a owl:Class ;
                                    owl:unionOf ( ?item1Uri ?item2Uri ) ] .
       # Instantiation (extension)
       ?instanceUri rdf:type ?newClassUri.
    }
    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:has_node ?uw1, ?uw2.
       ?net1 net:has_parent ?parentObject.	
       ?parentObject net:has_class_uri ?parentUri.
       ?parentObject net:has_instance_uri ?instanceUri.	
       ?parentObject net:has_concept ?parentConcept.
       ?net1 net:has_item ?itemObject1, ?itemObject2.	
       ?itemObject1 net:has_class_uri ?item1Uri.
       ?itemObject1 net:has_node ?uw1.
       ?itemObject2 net:has_class_uri ?item2Uri.
       ?itemObject2 net:has_node ?uw2.
       # extension: disjunction of UW
       ?uw1 unl:or ?uw2.
       # Label(s) / URI (for classes)
       ?uw1 rdfs:label ?uw1Label.
       ?uw2 rdfs:label ?uw2Label.
       BIND (strbefore(?uw1Label, '(') AS ?concept1)
       BIND (strbefore(?uw2Label, '(') AS ?concept2)
       BIND (concat(?concept1, '-or-', ?concept2) AS ?disjunctiveConcept)
       BIND (concat(?disjunctiveConcept, '_', ?parentConcept) AS ?newClassLabel).
       # URI (for classes)
       sys:Structure sys:has_frame_uri ?frameURI.
       BIND (concat(?frameURI, ?newClassLabel) AS ?s5).
       BIND (uri(?s5) AS ?newClassUri).
    }""" ;
      sh:order 3.23 ;
    .
    cts:append-domain-to-relation-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#>
    
    # -- Append possible domain, actor to relation nets 
    CONSTRUCT {
       # update: Relation Net (net1)
       ?net1 net:has_node ?uw1, ?uw2.
       ?net1 net:has_source ?sourceObject.	
       ?net1 net:has_possible_domain ?domainClass.	
    }
    WHERE {
       # Relation Net (net1)
       ?net1 a net:Instance.
       ?net1 net:type net:relation.
       ?net1 net:has_structure ?req.
       # -- Relation Object
       ?net1 net:has_relation ?relationObject.	
       ?relationObject net:has_node ?uw1.
       # Atom Net (net2): actor of net1
       ?net2 a net:Instance.
       ?net2 net:type net:atom.
       ?net2 net:has_structure ?req.
       ?net2 net:has_node ?uw2.
       ?net2 net:has_atom ?sourceObject.
       # condition: agt(net1, net2)
       ?uw1 unl:agt ?uw2.
       # Possible Domain
       { ?sourceObject net:has_concept ?domainClass. }
       UNION
       { ?sourceObject net:has_instance ?sourceInstance.
       ?anySourceObject net:has_instance ?sourceInstance.
       ?anySourceObject net:has_concept ?domainClass. }	
    }""" ;
      sh:order 2.42 ;
    .
    cts:append-range-to-relation-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#>
    
    # -- Append possible range, target to relation nets 
    CONSTRUCT {
       # update: Relation Net (net1)
       ?net1 net:has_node ?uw1, ?uw2.
       ?net1 net:has_target ?targetObject.	
       ?net1 net:has_possible_range ?rangeClass.
    }
    WHERE {
       # Relation Net (net1)
       ?net1 a net:Instance.
       ?net1 net:type net:relation.
       ?net1 net:has_structure ?req.
       # -- Relation Object
       ?net1 net:has_relation ?relationObject.	
       ?relationObject net:has_node ?uw1.
       # Atom Net (net2): target of net1
       ?net2 a net:Instance.
       ?net2 net:type net:atom.
       ?net2 net:has_structure ?req.
       ?net2 net:has_node ?uw2.
       ?net2 net:has_atom ?targetObject.
       # condition: agt(net1, net2)
       ?uw1 (unl:obj|unl:res) ?uw2.
       # Possible Domain
       { ?targetObject net:has_concept ?rangeClass. }
       UNION
       { ?targetObject net:has_instance ?targetObjectInstance.
       ?allTargetObject net:has_instance ?targetObjectInstance.
       ?allTargetObject net:has_concept ?rangeClass. }	  
    }""" ;
      sh:order 2.42 ;
    .
    cts:batch_execution
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "batch execution" ;
      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:append-domain-to-relation-net ;
      sh:rule cts:append-range-to-relation-net ;
      sh:rule cts:bypass-reification ;
      sh:rule cts:complement-composite-class ;
      sh:rule cts:compose-atom-with-list-by-mod-1 ;
      sh:rule cts:compose-atom-with-list-by-mod-2 ;
      sh:rule cts:compute-class-uri-of-net-object ;
      sh:rule cts:compute-domain-of-relation-property ;
      sh:rule cts:compute-instance-uri-of-net-object ;
      sh:rule cts:compute-property-uri-of-relation-object ;
      sh:rule cts:compute-range-of-relation-property ;
      sh:rule cts:create-atom-net ;
      sh:rule cts:create-relation-net ;
      sh:rule cts:create-unary-atom-list-net ;
      sh:rule cts:define-uw-id ;
      sh:rule cts:extend-atom-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:generate-event-class ;
      sh:rule cts:generate-relation-property ;
      sh:rule cts:init-conjunctive-atom-list-net ;
      sh:rule cts:init-disjunctive-atom-list-net ;
      sh:rule cts:instantiate-atom-net ;
      sh:rule cts:instantiate-composite-in-list-by-extension-1 ;
      sh:rule cts:instantiate-composite-in-list-by-extension-2 ;
      sh:rule cts:link-classes-by-relation-property ;
      sh:rule cts:link-instances-by-relation-property ;
      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 ;
    .
    cts:bypass-reification
      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#>
        
    # -- Bypass reification (extension of UNL relations) 
    CONSTRUCT { 
        ?node1 ?unlRel ?node2. 
    }
    WHERE {
        ?rel unl:has_source ?node1.
        ?rel unl:has_target ?node2.
        ?rel a ?unlRel.
    } """ ;
      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#>
    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#>
        
    # -- Complement composite classes with feature relation
    CONSTRUCT { 
       # Complement with feature relation
       ?compositeClassUri sys:has_feature ?featureUri.
    }
    WHERE {
       # net1: Composite List
       ?net1 a net:Instance.
       ?net1 net:type net:list.
       ?net1 net:listOf net:composite.
       # -- Item
       ?net1 net:has_item ?itemObject.	
       ?itemObject net:has_class_uri ?compositeClassUri.	
       ?itemObject net:has_feature ?featureObject.	
       # -- Feature
       ?featureObject a net:Object.
       ?featureObject net:has_class_uri ?featureUri.	
    }""" ;
      sh:order 3.22 ;
    .
    cts:compose-atom-with-list-by-mod-1
      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#>
        
    # -- Compose an atom net and a list net (with distinct item classes)
    CONSTRUCT { 
       # Object: Composite
       ?newObject a net:Object.
       ?newObject net:objectType net:composite.
       ?newObject net:has_node ?uw1, ?uw3.
       ?newObject net:has_mother_class ?net1Mother.
       ?newObject net:has_parent_class ?net1Class.
       ?newObject net:has_class ?subConcept.
       ?newObject net:has_concept ?subConcept.
       ?newObject net:has_feature ?net2Item.
       # Net: Composite List
       ?newNet a net:Instance.
       ?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_parent ?net1Object.	
       ?newNet net:has_item ?newObject.	
    }
    WHERE {
       # net1: atom
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:has_structure ?req.
       ?net1 net:has_node ?uw1.
       ?net1 net:has_atom ?net1Object.
       ?net1Object net:has_mother_class ?net1Mother.
       ?net1Object net:has_parent_class ?net1ParentClass.	
       ?net1Object net:has_class ?net1Class.
       ?net1Object net:has_concept ?net1Concept.
       # condition: mod(net1, net2)
       ?uw1 unl:mod ?uw2.
       # net2: list
       ?net2 a net:Instance.
       ?net2 net:type net:list.
       ?net2 net:type ?listSubType.
       ?net2 net:listOf net:atom.
       ?net2 net:has_structure ?req. 
       ?net2 net:has_node ?uw2, ?uw3.
       ?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 != ?net2ParentClass  ).
       # Label: Id, concept
       ?uw1 unl:has_id ?uw1Id.
       ?uw2 unl:has_id ?uw2Id.
       ?uw3 unl:has_id ?uw3Id.
       BIND (concat( ?net2Concept, '_', ?net1Concept) AS ?subConcept).
       # URI (for Object)
       cprm:Config_Parameters cprm:netURI ?netURI.
       cprm:Config_Parameters cprm:objectRef ?objectRef.
       net:composite rdfs:label ?compositeLabel.
       BIND (concat( ?netURI, ?objectRef, ?compositeLabel, '_') AS ?o1).
       BIND (concat(?o1, ?uw1Id, '-', ?uw3Id) AS ?o2).
       BIND (uri(?o2) AS ?newObject).
       # URI (for List Net)
       cprm:Config_Parameters cprm:netURI ?netURI.
       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.32 ;
    .
    cts:compose-atom-with-list-by-mod-2
      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#>
        
    # -- Compose an atom net and an list net (with same item classes)
    CONSTRUCT { 
       # Net: Composite List
       ?newNet a net:Instance.
       ?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_parent ?net1Object.	
       ?newNet net:has_item ?net2Item.	
    }
    WHERE {
       # net1: atom
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:has_structure ?req.
       ?net1 net:has_node ?uw1.
       ?net1 net:has_atom ?net1Object.
       ?net1Object net:has_parent_class ?net1ParentClass.	
       # condition: mod(net1, net2)
       ?uw1 unl:mod ?uw2.
       # net2: list
       ?net2 a net:Instance.
       ?net2 net:type net:list.
       ?net2 net:listOf net:atom.
       ?net2 net:has_structure ?req.
       ?net2 net:has_node ?uw2, ?uw3.
       ?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 = ?net2ParentClass  ).
       # Label: Id, subEntity
       ?uw1 unl:has_id ?uw1Id.
       ?uw2 unl:has_id ?uw2Id.
       ?uw3 unl:has_id ?uw3Id.
       # URI (for List Net)
       cprm:Config_Parameters cprm:netURI ?netURI.
       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 ;
    .
    cts:compute-class-uri-of-net-object
      rdf:type sh:SPARQLRule ;
      rdfs:label "compute-class-uri-of-net-object" ;
      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#>
    
    # -- Compute useful URI
    CONSTRUCT { 
       # Net Object URI
       ?object net:has_mother_class_uri ?motherClassUri.
       ?object net:has_parent_class_uri ?parentClassUri.
       ?object net:has_class_uri ?objectClassUri.
    }
    WHERE {
       # object
       ?object a net:Object.
       ?object net:objectType ?objectType.
       ?object net:has_mother_class ?motherClass.	
       ?object net:has_parent_class ?parentClass.	
       ?object net:has_class ?objectClass.
       # URI (for classes)
       sys:Structure sys:has_frame_uri ?frameURI. 
       BIND (str(?motherClass) AS ?s1). # -- old --- BIND (concat( ?frameURI, ?parentClass) AS ?s1).
       # TODO: BIND (concat( ?frameURI, ?motherClass) AS ?s1). 
       BIND (concat(?frameURI, ?parentClass) AS ?s2). # -- old --- BIND (concat(?s1, '#', ?parentClass) AS ?s2).
       BIND (concat(?frameURI, ?objectClass) AS ?s3). # -- old --- BIND (concat(?s1, '#', ?objectClass) AS ?s3).
       BIND (uri( ?s1) AS ?motherClassUri).
       BIND (uri( ?s2) AS ?parentClassUri).
       BIND (uri(?s3) AS ?objectClassUri).
    }
    VALUES ?objectType { 
       net:atom
       net:composite 
    }""" ;
      sh:order 2.91 ;
    .
    cts:compute-domain-of-relation-property
      rdf:type sh:SPARQLRule ;
      rdfs:label "compute-domain-of-relation-property" ;
      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#>
    
    # -- Compute Domain of Relation Property
    CONSTRUCT { 
       # update Relation Property: add domain
       ?newPropertyUri rdfs:domain ?domainClassUri.
    }
    WHERE {
       # Relation Net (net1)
       ?net1 a net:Instance.
       ?net1 net:type net:relation.
       ?net1 net:relationOf ?relationMother.
       ?net1 net:has_relation ?relationObject.	
       ?relationObject net:has_property_uri ?newPropertyUri.
       # -- Domain  
       ?net1 net:has_possible_domain ?possibleDomainLabel1.
    	?domainClass rdfs:label ?possibleDomainLabel1.
       FILTER (
    		NOT EXISTS {
    			?net1 net:has_possible_domain ?possibleDomainLabel2 .
    	        ?anotherDomainClass rdfs:label ?possibleDomainLabel2 .
    			?anotherDomainClass rdfs:subClassOf ?domainClass.
    		}
    	)
       BIND (uri( ?domainClass) AS ?domainClassUri).
    }""" ;
      sh:order 3.32 ;
    .
    cts:compute-instance-uri-of-net-object
      rdf:type sh:SPARQLRule ;
      rdfs:label "compute-instance-uri-of-net-object" ;
      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#>
    
    # -- Compute useful URI
    CONSTRUCT { 
       # Net Object URI
       ?object net:has_instance_uri ?objectInstanceUri.
    }
    WHERE {
       # object
       ?object a net:Object.
       ?object net:has_parent_class ?parentClass.	
       ?object net:has_instance ?objectInstance. 
       # URI (for classes and instance)
       sys:Structure sys:has_frame_uri ?frameURI.
       BIND (concat( ?frameURI, ?parentClass) AS ?s1).
       BIND (concat(?s1, '#', ?objectInstance) AS ?s2).
       BIND (uri(?s2) AS ?objectInstanceUri).
    }""" ;
      sh:order 2.92 ;
    .
    cts:compute-property-uri-of-relation-object
      rdf:type sh:SPARQLRule ;
      rdfs:label "compute-property-uri-of-relation-object" ;
      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#>
    
    # -- Compute useful URI
    CONSTRUCT { 
       # Net Object URI
       ?object net:has_property_uri ?objectPropertyUri.
    }
    WHERE {
       # Object of type Relation
       ?object a net:Object.
       ?object net:objectType ?objectType.	
       ?object net:has_parent_property ?parentProperty.
       ?object net:has_concept ?objectConcept.
       # URI (for object property)
       sys:Relation sys:has_frame_uri ?frameURI. 
       ?parentProperty sys:has_reference ?relationReference.
       BIND (concat( ?frameURI, ?relationReference) AS ?o1).
       BIND (concat(?o1, '_', ?objectConcept) AS ?o2).
       BIND (uri( ?o2) AS ?objectPropertyUri).
    }
    VALUES ?objectType { 
       net:relation
    }""" ;
      sh:order 2.91 ;
    .
    cts:compute-range-of-relation-property
      rdf:type sh:SPARQLRule ;
      rdfs:label "compute-range-of-relation-property" ;
      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#>
    
    # -- Compute Range of Relation Property
    CONSTRUCT { 
       # update Relation Property: add range
       ?newPropertyUri rdfs:range ?rangeClassUri.
    }
    WHERE {
       # Relation Net (net1)
       ?net1 a net:Instance.
       ?net1 net:type net:relation.
       ?net1 net:relationOf ?relationMother.
       ?net1 net:has_relation ?relationObject.	
       ?relationObject net:has_property_uri ?newPropertyUri.
       # -- Range  
       ?net1 net:has_possible_range ?possibleRangeLabel1.
       ?rangeClass rdfs:label ?possibleRangeLabel1 .
       FILTER (
    		NOT EXISTS {
    			?net1 net:has_possible_domain ?possibleRangeLabel2 .
    	       ?anotherRangeClass rdfs:label ?possibleRangeLabel2 .
    			?anotherRangeClass rdfs:subClassOf ?rangeClass.
    		}
       )
       BIND (uri( ?rangeClass) AS ?rangeClassUri).
    }""" ;
      sh:order 3.32 ;
    .
    cts:create-atom-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#>
        
    # -- Create Atom Net (entity)
    CONSTRUCT { 
       # Object
       ?newObject a net:Object.
       ?newObject net:objectType net:atom.
       ?newObject net:has_node ?uw1.
       ?newObject net:has_mother_class ?atomMother.
       ?newObject net:has_parent_class ?atomClass.
       ?newObject net:has_class ?concept1.
       ?newObject net:has_concept ?concept1.
       # Net
       ?newNet a net:Instance.
       ?newNet net:type net:atom.
       ?newNet net:atomOf ?atomMother.
       ?newNet net:has_structure ?req.
       ?newNet net:has_node ?uw1.
       ?newNet net:has_atom ?newObject.
    }
    WHERE {
       # Atom Description (from System Ontology)
       ?atomMother rdfs:subClassOf* sys:Structure.
       # -- old --- ?targetClass sys:has_mother_class ?atomMother.
       ?atomMother sys:is_class ?atomClass.
       ?atomMother sys:has_restriction ?restriction.
       # UW: type UW-Occurrence and substructure of req sentence
       ?uw1 rdf:type unl:UW_Occurrence.
       ?uw1 unl:is_substructure_of ?req.
       # ------ ?uw1 unl:is_occurrence_of ?lexTrg.
       # Filter on label
       ?uw1 rdfs:label ?uw1Label.
       FILTER ( regex(str(?uw1Label),str(?restriction))  ).
       # Label: Id, concept
       ?uw1 unl:has_id ?uw1Id.
       BIND (strbefore(?uw1Label, '(') AS ?concept1).
       # URI (for Atom Object)
       cprm:Config_Parameters cprm:netURI ?netURI.
       cprm:Config_Parameters cprm:objectRef ?objectRef.
       net:atom rdfs:label ?atomLabel.
       BIND (concat( ?netURI, ?objectRef, ?atomLabel, '_') AS ?o1).
       BIND (concat(?o1, ?uw1Id) AS ?o2).
       BIND (uri(?o2) AS ?newObject).
       # URI (for Atom Net)
       cprm:Config_Parameters cprm:netURI ?netURI.
       sys:Structure sys:has_reference ?classReference.
       BIND (concat( ?netURI, ?classReference, '-', ?atomClass, '_') AS ?n1).
       BIND (concat(?n1, ?uw1Id) AS ?n2).
       BIND (uri(?n2) AS ?newNet).
    }""" ;
      sh:order 2.11 ;
    .
    cts:create-relation-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#>
    
    # -- Create relation net
    CONSTRUCT {
       # Object
       ?newObject a net:Object.
       ?newObject net:objectType net:relation.
       ?newObject net:has_node ?uw1.
       ?newObject net:has_parent_property ?relationMother.
       ?newObject net:has_concept ?verbConcept.
       # create: Relation Net
       ?newNet a net:Instance.
       ?newNet net:type net:relation.
       ?newNet net:relationOf ?relationMother.
       ?newNet net:has_structure ?req.
       ?newNet net:has_node ?uw1.
       ?newNet net:has_relation ?newObject.	
    }
    WHERE {
       # Relation Description (from System Ontology)
       ?targetProperty rdfs:subPropertyOf* sys:Relation.
       ?targetProperty sys:has_mother_property ?relationMother.
       ?targetProperty sys:has_reference ?relationReference.
       ?targetProperty sys:has_restriction_on_class ?classRestriction.
       # Atom Net (net1): restricted net according to its atom category (atomOf) 
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:atomOf ?classRestriction.
       ?net1 net:has_structure ?req.
       ?net1 net:has_node ?uw1.
       # -- Verb Actor
       ?net1 net:has_atom ?verbObject.
       ?verbObject net:has_mother_class ?verbMother.
       ?verbObject net:has_parent_class ?verbParentClass.
       ?verbObject net:has_concept ?verbConcept.
       # Label: Id
       ?uw1 unl:has_id ?uw1Id. 
       # URI (for Atom Object)
       cprm:Config_Parameters cprm:netURI ?netURI.
       cprm:Config_Parameters cprm:objectRef ?objectRef.
       net:relation rdfs:label ?relationLabel.
       BIND (concat( ?netURI, ?objectRef, ?relationLabel, '_') AS ?o1).
       BIND (concat(?o1, ?uw1Id) AS ?o2).
       BIND (uri(?o2) AS ?newObject).
       # URI (for Event Net)
       cprm:Config_Parameters cprm:netURI ?netURI.
       sys:Property sys:has_reference ?propertyReference.
       BIND (concat( ?netURI, ?propertyReference, '-', ?relationReference, '_') AS ?n1).
       BIND (concat(?n1, ?uw1Id) AS ?n2).
       BIND (uri(?n2) AS ?newNet).
    }""" ;
      sh:order 2.41 ;
    .
    cts:create-unary-atom-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#>
        
    # -- Create an unary Atom List net
    CONSTRUCT { 
       # Net: Atom List
       ?newNet a net:Instance.
       ?newNet net:type net:list.
       ?newNet net:type net:unary_list.
       ?newNet net:listOf net:atom.
       ?newNet net:has_structure ?req.
       ?newNet net:has_node ?uw1.
       ?newNet net:has_item ?object1.
    }
    WHERE {   
       # Net: Atom
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:atomOf ?net1Mother.
       ?net1 net:has_structure ?req.
       ?net1 net:has_node ?uw1.
       ?net1 net:has_atom ?object1.
       ?object1 net:has_parent_class ?net1ParentClass.
       # selection: target UW of modifier (mod)
       ?uw0 unl:mod ?uw1.
       FILTER NOT EXISTS  { ?uw1 (unl:and|unl:or) ?uw2 }
       # UW: type UW-Occurrence and substructure of req sentence
       ?uw0 rdf:type unl:UW_Occurrence.
       ?uw0 unl:is_substructure_of ?req.
       # Label(s) / URI
       ?uw1 rdfs:label ?uw1Label.
       ?uw1 unl:has_id ?uw1Id.
       cprm:Config_Parameters cprm:netURI ?netURI.
       sys:Structure sys:has_reference ?classReference.
       net:list rdfs:label ?listLabel.
       net:atom rdfs:label ?atomLabel.
       BIND (concat( ?netURI, ?classReference, '-', ?listLabel, '-', ?atomLabel, '_') AS ?s1).
       BIND (concat(?s1, ?uw1Id) AS ?s2).
       BIND (uri(?s2) AS ?newNet).
    }""" ;
      sh:order 2.21 ;
    .
    cts:define-uw-id
      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#>
        
    # -- Define an ID for each UW (occurrence)
    CONSTRUCT { 
       ?uw1 unl:has_id ?uwId.
    }
    WHERE {
       # UW: type UW-Occurrence and substructure of req sentence
       ?uw1 rdf:type unl:UW_Occurrence.
       ?uw1 unl:is_substructure_of ?req.
       # Label(s) / URI
       ?req unl:has_id ?reqId.
       ?uw1 rdfs:label ?uw1Label.
       BIND (strbefore(?uw1Label, '(') AS ?concept1).
       BIND (strafter(str(?uw1), \"---\") AS ?numOcc).
       BIND (concat( ?reqId, '_', ?concept1, ?numOcc) AS ?uwId).
    } """ ;
      sh:order 1.3 ;
    .
    cts:dev_schemes
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "dev schemes" ;
      rdfs:subClassOf cts:Transduction_Schemes ;
      sh:rule cts:old_add-event ;
      sh:rule cts:old_add-state-property ;
      sh:rule cts:old_compose-agt-verb-obj-as-simple-event ;
      sh:rule cts:old_compose-aoj-verb-obj-as-simple-state-property ;
      sh:rule cts:old_compute-domain-range-of-event-object-properties ;
      sh:rule cts:old_compute-domain-range-of-state-property-object-properties ;
    .
    cts:extend-atom-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#>
        
    # -- Extend an Atom List net
    CONSTRUCT { 
       # Update Atom List net (net1)
       ?net1 net:has_node ?uw2.
       ?net1 net:has_item ?object2.
    }
    WHERE {
       # Net1: Atom List
       ?net1 a net:Instance.
       ?net1 net:type net:list.
       ?net1 net:listOf net:atom.
       ?net1 net:has_structure ?req.
       ?net1 net:has_node ?uw1.
       # extension: disjunction of UW
       ?uw1 (unl:or|unl:and) ?uw2.
       # Net2: Atom
       ?net2 a net:Instance.
       ?net2 net:type net:atom.
       ?net2 net:has_structure ?req.
       ?net2 net:has_node ?uw2.
       ?net2 net:has_atom ?object2.
    }""" ;
      sh:order 2.22 ;
    .
    cts:generate-atom-class
      rdf:type sh:SPARQLRule ;
      rdfs:label "add-entity-classes" ;
      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#>
    
    # -- Generate Atom Class in Target Ontology
    CONSTRUCT { 
       # Classification
       ?newClassUri rdfs:subClassOf ?parentUri.
       ?newClassUri rdfs:label ?atomConcept.
       ?newClassUri sys:from_structure ?req.
    }
    WHERE {
       # net1: atom
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:has_structure ?req.
       ?net1 net:has_atom ?atomObject1.
       ?atomObject1 net:has_parent_class_uri ?parentUri.
       ?atomObject1 net:has_class_uri ?newClassUri.	
       ?atomObject1 net:has_concept ?atomConcept.	
       # 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.
       }
    }""" ;
      sh:order 3.1 ;
    .
    cts:generate-atom-instance
      rdf:type sh:SPARQLRule ;
      rdfs:label "add-entity" ;
      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#>
    
    # -- Generate atom instance in System Ontology
    CONSTRUCT { 
       # Instantiation
       ?newInstanceUri a ?classUri.
       ?newInstanceUri rdfs:label ?atomInstance.
       ?newInstanceUri sys:from_structure ?req.
    }
    WHERE {
       # net1: atom
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:has_structure ?req.
       ?net1 net:has_atom ?atomObject1.
       ?atomObject1 net:has_class_uri ?classUri.	
       ?atomObject1 net:has_instance ?atomInstance. 
       ?atomObject1 net:has_instance_uri ?newInstanceUri.
       # Filter: entity not present in a class list
       FILTER NOT EXISTS  { ?net2 net:has_subClass ?atomConcept}
    }""" ;
      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 Composite Class in Ontology (from Composite List net)
    CONSTRUCT { 
       # Classification
       ?newClassUri rdfs:subClassOf ?parentUri.
       ?newClassUri rdfs:label ?compositeConcept.
       ?newClassUri sys:from_structure ?req.
       # Instantiation (extension)
       ?instanceUri rdf:type ?newClassUri.
       ?instanceUri 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:has_parent ?parentObject.
       ?parentObject net:has_class_uri ?parentUri.
       ?parentObject net:has_instance_uri ?instanceUri.	
       ?net1 net:has_item ?compositeObject.	
       ?compositeObject net:has_class_uri ?newClassUri.		
       ?compositeObject net:has_concept ?compositeConcept.
    }""" ;
      sh:order 3.21 ;
    .
    cts:generate-event-class
      rdf:type sh:SPARQLRule ;
      rdfs:label "add-event" ;
      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 Event Class in Target Ontology
    CONSTRUCT { 
       # Classification
       ?newEventUri rdfs:subClassOf ?eventClassUri.
       ?newEventUri rdfs:label ?eventLabel.
       ?newEventUri sys:from_structure ?req.
    }
    WHERE {
       # Relation Net (net1)
       ?net1 a net:Instance.
       ?net1 net:type net:relation.
       ?net1 net:relationOf ?relationMother.
       ?net1 net:has_structure ?req.
       ?net1 net:has_node ?uw1.
       # -- Relation Object
       ?net1 net:has_relation ?relationObject.	
       ?relationObject net:has_concept ?relationConcept.
       # -- Source Object
       ?net1 net:has_source ?sourceObject.
       ?sourceObject net:has_concept ?sourceConcept.	
       # -- Target Object
       ?net1 net:has_target ?targetObject1.
       ?targetObject1 net:has_concept ?targetConcept.
       # Label: event
       BIND (concat(?sourceConcept, '-', ?relationConcept) AS ?e1).
       BIND (concat(?e1, '-', ?targetConcept) AS ?eventLabel).
       # URI (for classes)
       sys:Structure sys:has_frame_uri ?frameURI.
       sys:Event sys:is_class ?eventClass.
       BIND (concat( ?frameURI, ?eventClass) AS ?c1).
       BIND (concat(?c1, '_', ?eventLabel) AS ?c2).
       BIND (uri( ?c1) AS ?eventClassUri).
       BIND (uri(?c2) AS ?newEventUri).
    }""" ;
      sh:order 3.31 ;
    .
    cts:generate-relation-property
      rdf:type sh:SPARQLRule ;
      rdfs:label "add-event" ;
      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#>
    
    # --  Generate Relation Property in Target Ontology
    CONSTRUCT { 
       # update: Relation Property
       ?newPropertyUri a owl:ObjectProperty.
       ?newPropertyUri rdfs:subPropertyOf ?parentProperty.
       ?newPropertyUri rdfs:label ?relationConcept.
       ?newPropertyUri sys:from_structure ?req.
       # -- old --- ?sourceInstanceUri ?newPropertyUri ?targetInstanceUri.
    }
    WHERE {
       # Relation Net (net1)
       ?net1 a net:Instance.
       ?net1 net:type net:relation.
       ?net1 net:relationOf ?relationMother.
       ?net1 net:has_structure ?req.
       # -- Relation Object
       ?net1 net:has_relation ?relationObject.	
       ?relationObject net:has_parent_property ?parentProperty.
       ?relationObject net:has_property_uri ?newPropertyUri.
       # -- Source Object
       # -- old --- ?net1 net:has_source ?sourceObject.
       # -- old --- ?sourceObject net:has_instance_uri ?sourceInstanceUri.  
       # -- Target Object
       # -- old --- ?net1 net:has_target ?targetObject.
       # -- old --- ?targetObject net:has_instance_uri ?targetInstanceUri. 
    }""" ;
      sh:order 3.31 ;
    .
    cts:generation
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "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:compute-domain-of-relation-property ;
      sh:rule cts:compute-range-of-relation-property ;
      sh:rule cts:generate-atom-class ;
      sh:rule cts:generate-atom-instance ;
      sh:rule cts:generate-composite-class-from-list-net ;
      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:init-conjunctive-atom-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#>
        
    # -- Initialize a conjunctive Atom List net
    CONSTRUCT { 
       # Net: Atom List
       ?newNet a net:Instance.
       ?newNet net:type net:list.
       ?newNet net:type net:conjunctive_list.
       ?newNet net:listOf net:atom.
       ?newNet net:has_structure ?req.
       ?newNet net:has_node ?uw1.
       ?newNet net:has_item ?object1.
    }
    WHERE {
       # Net: Atom
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:atomOf ?net1Mother.
       ?net1 net:has_structure ?req.
       ?net1 net:has_node ?uw1.
       ?net1 net:has_atom ?object1.
       ?object1 net:has_parent_class ?net1ParentClass.
       # selection: target UW of modifier (mod)
       ?uw1 unl:and ?uw2.
       # UW: type UW-Occurrence and substructure of req sentence
       ?uw2 rdf:type unl:UW_Occurrence.
       ?uw2 unl:is_substructure_of ?req.
       # Label(s) / URI
       ?uw1 rdfs:label ?uw1Label.
       ?uw1 unl:has_id ?uw1Id.
       cprm:Config_Parameters cprm:netURI ?netURI.
       net:list rdfs:label ?listLabel.
       net:atom rdfs:label ?atomLabel.
       BIND (concat( ?netURI, ?listLabel, '_', ?atomLabel, '_') AS ?s1).
       BIND (concat(?s1, ?uw1Id) AS ?s2).
       BIND (uri(?s2) AS ?newNet).
    }""" ;
      sh:order 2.21 ;
    .
    cts:init-disjunctive-atom-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#>
        
    # -- Initialize a disjunctive Atom List net
    CONSTRUCT { 
       # Net: Atom List
       ?newNet a net:Instance.
       ?newNet net:type net:list.
       ?newNet net:type net:disjunctive_list.
       ?newNet net:listOf net:atom.
       ?newNet net:has_structure ?req.
       ?newNet net:has_node ?uw1.
       ?newNet net:has_item ?object1.
    }
    WHERE {
       # Net: Atom
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:atomOf ?net1Mother.
       ?net1 net:has_structure ?req.
       ?net1 net:has_node ?uw1.
       ?net1 net:has_atom ?object1.
       ?object1 net:has_parent_class ?net1ParentClass.
       # selection: target UW of modifier (mod)
       ?uw1 unl:or ?uw2.
       # UW: type UW-Occurrence and substructure of req sentence
       ?uw2 rdf:type unl:UW_Occurrence.
       ?uw2 unl:is_substructure_of ?req.
       # Label(s) / URI
       ?uw1 rdfs:label ?uw1Label.
       ?uw1 unl:has_id ?uw1Id.
       cprm:Config_Parameters cprm:netURI ?netURI.
       net:list rdfs:label ?listLabel.
       net:atom rdfs:label ?atomLabel.
       BIND (concat( ?netURI, ?listLabel, '_', ?atomLabel, '_') AS ?s1).
       BIND (concat(?s1, ?uw1Id) AS ?s2).
       BIND (uri(?s2) AS ?newNet).
    }""" ;
      sh:order 2.21 ;
    .
    cts:instantiate-atom-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#>
        
    # -- Instantiate atom net
    CONSTRUCT { 
       # Object: entity 
       ?atomObject1 net:has_instance ?instanceName. 
    }
    WHERE {
       # net1: atom
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:has_structure ?req.
       ?net1 net:has_node ?uw1.
       ?net1 net:has_atom ?atomObject1. 
       # condition: agt/obj(uw0, uw1)
       ?uw0 (unl:agt | unl:obj | unl:aoj) ?uw1.
       # UW: type UW-Occurrence and substructure of req sentence
       ?uw0 rdf:type unl:UW_Occurrence.
       ?uw0 unl:is_substructure_of ?req.
       # Label: id, name
       ?uw1 unl:has_id ?uw1Id.
       BIND (?uw1Id AS ?instanceName).
    }""" ;
      sh:order 2.12 ;
    .
    cts:instantiate-composite-in-list-by-extension-1
      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#>
        
    # -- Instantiate composite in list by extension of instances from parent element
    CONSTRUCT { 
       ?itemObject net:has_instance ?parentInstance. 
    }
    WHERE {
       # 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. 
       ?net1 net:has_item ?itemObject.	
       # Filter
       FILTER NOT EXISTS { ?itemObject net:has_instance ?anyInstance } .
    }""" ;
      sh:order 2.341 ;
    .
    cts:instantiate-composite-in-list-by-extension-2
      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#>
        
    # -- Instantiate entities in class list by extension of instances (2)
    CONSTRUCT { 
       ?net2SubObject net:has_instance ?parentInstance. 
    }
    WHERE {
       # net1: Composite List
       ?net1 a net:Instance.
       ?net1 net:type net:list.
       ?net1 net:listOf net:composite.
       ?net1 net:has_structure ?sameReq.
       ?net1 net:has_parent ?parentObject.
       ?parentObject net:has_instance ?parentInstance. 
       ?net1 net:has_item ?net1SubObject.	
       ?net1SubObject net:has_concept ?sameEntity.	
       # net2: Another List
       ?net2 a net:Instance.
       ?net2 net:type net:list.
       ?net2 net:listOf net:composite.
       ?net2 net:has_structure ?sameReq.
       ?net2 net:has_parent ?net2MainObject.
       ?net2MainObject net:has_concept ?sameEntity.	
       ?net2 net:has_item ?net2SubObject.	
       # Filter
       FILTER NOT EXISTS { ?net2SubObject net:has_instance ?anyInstance } .
    }""" ;
      sh:order 2.342 ;
    .
    cts:link-classes-by-relation-property
      rdf:type sh:SPARQLRule ;
      rdfs:label "link-classes-by-relation-property" ;
      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#>
    
    # -- Link two classes by relation property (according existence of domain and range)
    CONSTRUCT { 
       # relation between domain/range classes
       ?domainClassUri ?propertyUri ?rangeClassUri.
    }
    WHERE {
       # Relation Net (net1)
       ?propertyUri rdfs:domain ?domainClass.
       ?propertyUri rdfs:range ?rangeClass.
       BIND (uri( ?domainClass) AS ?domainClassUri).
       BIND (uri( ?rangeClass) AS ?rangeClassUri).
    }""" ;
      sh:order 3.33 ;
    .
    cts:link-instances-by-relation-property
      rdf:type sh:SPARQLRule ;
      rdfs:label "add-event" ;
      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#>
    
    CONSTRUCT { 
       ?sourceInstanceUri ?newPropertyUri ?targetInstanceUri.
    }
    WHERE {
       # Relation Net (net1)
       ?net1 a net:Instance.
       ?net1 net:type net:relation.
       ?net1 net:relationOf ?relationMother.
       ?net1 net:has_structure ?req.
       # -- Relation Object
       ?net1 net:has_relation ?relationObject.	
       ?relationObject net:has_parent_property ?parentProperty.
       ?relationObject net:has_property_uri ?newPropertyUri.
       # -- Source Object
       ?net1 net:has_source ?sourceObject.
       ?sourceObject net:has_instance_uri ?sourceInstanceUri.  
       # -- Target Object
       ?net1 net:has_target ?targetObject.
       ?targetObject net:has_instance_uri ?targetInstanceUri. 
    }""" ;
      sh:order 3.33 ;
    .
    cts:link-to-scope-entry
      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#>
        
    # -- Link UNL relation to scope entry 
    # (by connecting the source node of the scope to the entry node of the scope) 
    CONSTRUCT { 
        ?node1Occ ?unlRel ?node2Occ. 
    }
    WHERE {
        ?scope rdf:type unl:UNL_Scope.
        ?node1Occ unl:is_source_of ?rel.
        ?rel unl:has_target ?scope.
        ?scope unl:is_scope_of ?scopeRel.
        ?scopeRel unl:has_source ?node2Occ.
        ?node2Occ unl:has_attribute \".@entry\".
        ?rel a ?unlRel.
    } """ ;
      sh:order 1.2 ;
    .
    cts:net_extension
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "net extension" ;
      rdfs:subClassOf cts:Transduction_Schemes ;
      sh:rule cts:append-domain-to-relation-net ;
      sh:rule cts:append-range-to-relation-net ;
      sh:rule cts:compose-atom-with-list-by-mod-1 ;
      sh:rule cts:compose-atom-with-list-by-mod-2 ;
      sh:rule cts:compute-class-uri-of-net-object ;
      sh:rule cts:compute-instance-uri-of-net-object ;
      sh:rule cts:compute-property-uri-of-relation-object ;
      sh:rule cts:create-atom-net ;
      sh:rule cts:create-relation-net ;
      sh:rule cts:create-unary-atom-list-net ;
      sh:rule cts:extend-atom-list-net ;
      sh:rule cts:init-conjunctive-atom-list-net ;
      sh:rule cts:init-disjunctive-atom-list-net ;
      sh:rule cts:instantiate-atom-net ;
      sh:rule cts:instantiate-composite-in-list-by-extension-1 ;
      sh:rule cts:instantiate-composite-in-list-by-extension-2 ;
      sh:rule cts:specify-axis-of-atom-list-net ;
    .
    cts:old_add-event
      rdf:type sh:SPARQLRule ;
      rdfs:label "add-event" ;
      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 Verb class / instance in System Ontology
    CONSTRUCT { 
       # Classification
       ?newEventUri rdfs:subClassOf ?eventClassUri.
       ?newEventUri rdfs:label ?eventLabel.
       ?newEventUri sys:from_structure ?req.
       # Object Property
       ?newEventObjectPropertyUri a owl:ObjectProperty.
       ?newEventObjectPropertyUri rdfs:subPropertyOf ?eventObjectPropertyUri.
       ?newEventObjectPropertyUri rdfs:label ?verbConcept.
       ?newEventObjectPropertyUri sys:from_structure ?req.
       ?actorInstanceUri ?newEventObjectPropertyUri ?targetInstanceUri.
    }
    WHERE {
       # net1: entity
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:atomOf sys:Event.
       ?net1 net:has_structure ?req.
       ?net1 net:has_verb ?verbObject1.
       ?verbObject1 net:has_parent_class ?verbClass.	
       ?verbObject1 net:has_concept ?verbConcept.
       ?net1 net:has_actor ?actorObject1.
       ?actorObject1 net:has_parent_class ?actorClass.	
       ?actorObject1 net:has_concept ?actorConcept.
       ?actorObject1 net:has_instance ?actorInstance.
       ?actorObject1 net:has_instance_uri ?actorInstanceUri.  
       ?net1 net:has_target ?targetObject1.
       ?targetObject1 net:has_parent_class ?targetClass.	
       ?targetObject1 net:has_concept ?targetConcept.
       ?targetObject1 net:has_instance ?targetInstance. 
       ?targetObject1 net:has_instance_uri ?targetInstanceUri. 
       # Label: event
       BIND (concat(?actorConcept, '-', ?verbConcept) AS ?e1).
       BIND (concat(?e1, '-', ?targetConcept) AS ?eventLabel).
       # URI (for classes)
       sys:Structure sys:has_frame_uri ?frameURI.
       sys:Event sys:is_class ?eventClass.
       BIND (concat( ?frameURI, ?eventClass) AS ?c1).
       BIND (concat(?c1, '_', ?eventLabel) AS ?c2).
       BIND (uri( ?c1) AS ?eventClassUri).
       BIND (uri(?c2) AS ?newEventUri).
       # URI (for object property)
       sys:Event sys:has_object_property ?eventObjectProperty.
       BIND (concat( ?frameURI, ?eventObjectProperty) AS ?o1).
       BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
       BIND (uri( ?o1) AS ?eventObjectPropertyUri).
       BIND (uri( ?o2) AS ?newEventObjectPropertyUri).
    }""" ;
      sh:order 0.331 ;
    .
    cts:old_add-state-property
      rdf:type sh:SPARQLRule ;
      rdfs:label "add-event" ;
      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 Verb class / instance in System Ontology
    CONSTRUCT { 
       # Classification
       ?newStatePropertyUri rdfs:subClassOf ?statePropertyClassUri.
       ?newStatePropertyUri rdfs:label ?statePropertyLabel.
       ?newStatePropertyUri sys:from_structure ?req.
       # Object Property
       ?newStatePropertyObjectPropertyUri a owl:ObjectProperty.
       ?newStatePropertyObjectPropertyUri rdfs:subPropertyOf ?statePropertyObjectPropertyUri.
       ?newStatePropertyObjectPropertyUri rdfs:label ?verbConcept.
       ?newStatePropertyObjectPropertyUri sys:from_structure ?req.
       ?actorInstanceUri ?newStatePropertyObjectPropertyUri ?targetInstanceUri.
    }
    WHERE {
       # net1: state property
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:atomOf sys:State_Property.
       ?net1 net:has_structure ?req.
       ?net1 net:has_verb ?verbObject1.
       ?verbObject1 net:has_parent_class ?verbClass.	
       ?verbObject1 net:has_concept ?verbConcept.
       ?net1 net:has_actor ?actorObject1.
       ?actorObject1 net:has_parent_class ?actorClass.	
       ?actorObject1 net:has_concept ?actorConcept.
       ?actorObject1 net:has_instance ?actorInstance.
       ?actorObject1 net:has_instance_uri ?actorInstanceUri.  
       ?net1 net:has_target ?targetObject1.
       ?targetObject1 net:has_parent_class ?targetClass.	
       ?targetObject1 net:has_concept ?targetConcept.
       ?targetObject1 net:has_instance ?targetInstance. 
       ?targetObject1 net:has_instance_uri ?targetInstanceUri. 
       # Label: event
       BIND (concat(?actorConcept, '-', ?verbConcept) AS ?e1).
       BIND (concat(?e1, '-', ?targetConcept) AS ?statePropertyLabel).
       # URI (for classes)
       sys:Structure sys:has_frame_uri ?frameURI.
       sys:State_Property sys:is_class ?statePropertyClass.
       BIND (concat( ?frameURI, ?statePropertyClass) AS ?c1).
       BIND (concat(?c1, '_', ?statePropertyLabel) AS ?c2).
       BIND (uri( ?c1) AS ?statePropertyClassUri).
       BIND (uri(?c2) AS ?newStatePropertyUri).
       # URI (for object property)
       sys:State_Property sys:has_object_property ?statePropertyObjectProperty.
       BIND (concat( ?frameURI, ?statePropertyObjectProperty) AS ?o1).
       BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
       BIND (uri( ?o1) AS ?statePropertyObjectPropertyUri).
       BIND (uri( ?o2) AS ?newStatePropertyObjectPropertyUri).
    }""" ;
      sh:order 0.331 ;
    .
    cts:old_compose-agt-verb-obj-as-simple-event
      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#>
    
    # -- Compose a subject (agt), an action Verb and an object (obj) to obtain an event    
    CONSTRUCT {
       # Net: Event
       ?newNet a net:Instance.
       ?newNet net:type net:atom.
       ?newNet net:atomOf sys:Event.
       ?newNet net:has_structure ?req.
       ?newNet net:has_node ?uw1, ?uw2, ?uw3.
       ?newNet net:has_actor ?actorObject.	
       ?newNet net:has_verb ?verbObject.	
       ?newNet net:has_target ?targetObject.	
       ?newNet net:has_possible_domain ?domainClass.	
       ?newNet net:has_possible_range ?rangeClass.	
    }
    WHERE {
       # net1: verb
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:atomOf sys:action_verb.
       ?net1 net:has_structure ?req.
       ?net1 net:has_node ?uw1.
       ?net1 net:has_atom ?verbObject.
       # net2: entity (actor)
       ?net2 a net:Instance.
       ?net2 net:type net:atom.
       # -- old --- ?net2 net:atomOf sys:Entity.
       ?net2 net:has_structure ?req.
       ?net2 net:has_node ?uw2.
       ?net2 net:has_atom ?actorObject.
       # net3: entity (target)
       ?net3 a net:Instance.
       ?net3 net:type net:atom.
       # -- old --- ?net3 net:atomOf sys:Entity.
       ?net3 net:has_structure ?req.
       ?net3 net:has_node ?uw3.
       ?net3 net:has_atom ?targetObject.
       # condition: agt(net1, net2) et obj(net1, net3)
       ?uw1 unl:agt ?uw2.
       ?uw1 (unl:obj|unl:res) ?uw3.	
       # Label: Id
       ?uw1 unl:has_id ?uw1Id.
       ?uw2 unl:has_id ?uw2Id.
       ?uw3 unl:has_id ?uw3Id.
       # Possible domain/range
       ?actorObject net:has_instance ?actorObjectInstance.
       ?allActorObject net:has_instance ?actorObjectInstance.
       ?allActorObject net:has_concept ?domainClass.	
       ?targetObject net:has_instance ?targetObjectInstance.
       ?allTargetObject net:has_instance ?targetObjectInstance.
       ?allTargetObject net:has_concept ?rangeClass.	   
       # URI (for Event Net)
       cprm:Config_Parameters cprm:netURI ?netURI.
       net:event rdfs:label ?eventLabel.
       BIND (concat( ?netURI, ?eventLabel, '_') AS ?n1).
       BIND (concat(?n1, ?uw1Id, '-', ?uw2Id, '-', ?uw3Id) AS ?n2).
       BIND (uri(?n2) AS ?newNet).
    }""" ;
      sh:order 0.241 ;
    .
    cts:old_compose-aoj-verb-obj-as-simple-state-property
      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#>
    
    # -- Compose a subject (aoj), an attributibe Verb and an object (obj) / result (res) to obtain a state property
    CONSTRUCT {
       # Net: State Property
       ?newNet a net:Instance.
       ?newNet net:type net:atom.
       ?newNet net:atomOf sys:State_Property.
       ?newNet net:has_structure ?req.
       ?newNet net:has_node ?uw1, ?uw2, ?uw3.
       ?newNet net:has_actor ?actorObject.	
       ?newNet net:has_verb ?verbObject.	
       ?newNet net:has_target ?targetObject.	
       ?newNet net:has_possible_domain ?domainClass.	
       ?newNet net:has_possible_range ?rangeClass.	
    }
    WHERE {
       # net1: verb
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:atomOf sys:attributive_verb.
       ?net1 net:has_structure ?req.
       ?net1 net:has_node ?uw1.
       ?net1 net:has_atom ?verbObject.
       # net2: entity (actor)
       ?net2 a net:Instance.
       ?net2 net:type net:atom.
       # -- old --- ?net2 net:atomOf sys:Entity.
       ?net2 net:has_structure ?req.
       ?net2 net:has_node ?uw2.
       ?net2 net:has_atom ?actorObject.
       # net3: entity (target)
       ?net3 a net:Instance.
       ?net3 net:type net:atom.
       # -- old --- ?net3 net:atomOf sys:Entity.
       ?net3 net:has_structure ?req.
       ?net3 net:has_node ?uw3.
       ?net3 net:has_atom ?targetObject.
       # condition: aoj(net1, net2) et obj(net1, net3)
       ?uw1 unl:aoj ?uw2.
       ?uw1 (unl:obj|unl:res) ?uw3.	
       # Label: Id
       ?uw1 unl:has_id ?uw1Id.
       ?uw2 unl:has_id ?uw2Id.
       ?uw3 unl:has_id ?uw3Id.
       # Possible domain/range
       ?actorObject net:has_instance ?actorObjectInstance.
       ?allActorObject net:has_instance ?actorObjectInstance.
       ?allActorObject net:has_concept ?domainClass.	
       ?targetObject net:has_instance ?targetObjectInstance.
       ?allTargetObject net:has_instance ?targetObjectInstance.
       ?allTargetObject net:has_concept ?rangeClass.	   
       # URI (for State Property Net)
       cprm:Config_Parameters cprm:netURI ?netURI.
       net:state_property rdfs:label ?statePropertyLabel.
       BIND (concat( ?netURI, ?statePropertyLabel, '_') AS ?n1).
       BIND (concat(?n1, ?uw1Id, '-', ?uw2Id, '-', ?uw3Id) AS ?n2).
       BIND (uri(?n2) AS ?newNet).
    }""" ;
      sh:order 0.241 ;
    .
    cts:old_compute-domain-range-of-event-object-properties
      rdf:type sh:SPARQLRule ;
      rdfs:label "compute-domain-range-of-object-properties" ;
      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#>
    
    # -- Compute domain/range of object properties
    CONSTRUCT { 
       # Object Property: domain, range and relation between domain/range classes
       ?newEventObjectPropertyUri rdfs:domain ?domainClass.
       ?newEventObjectPropertyUri rdfs:range ?rangeClass.
       ?domainClass ?newEventObjectPropertyUri ?rangeClass. # relation between domain/range classes
    }
    WHERE {
       # net1: event
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:atomOf sys:Event.
       ?net1 net:has_structure ?req.
       ?net1 net:has_verb ?verbObject1.	
       ?verbObject1 net:has_concept ?verbConcept.
       # domain  
       ?net1 net:has_possible_domain ?possibleDomainLabel1.
    	?domainClass rdfs:label ?possibleDomainLabel1 .
       FILTER (
    		NOT EXISTS {
    			?net1 net:has_possible_domain ?possibleDomainLabel2 .
    	        ?anotherDomainClass rdfs:label ?possibleDomainLabel2 .
    			?anotherDomainClass rdfs:subClassOf ?domainClass.
    		}
    	)
       # range  
       ?net1 net:has_possible_range ?possibleRangeLabel1.
       ?rangeClass rdfs:label ?possibleRangeLabel1 .
       FILTER (
    		NOT EXISTS {
    			?net1 net:has_possible_domain ?possibleRangeLabel2 .
    	        ?anotherRangeClass rdfs:label ?possibleRangeLabel2 .
    			?anotherRangeClass rdfs:subClassOf ?rangeClass.
    		}
       )
       # URI (for object property)
       sys:Structure sys:has_frame_uri ?frameURI.
       sys:Event sys:has_object_property ?eventObjectProperty.
       BIND (concat( ?frameURI, ?eventObjectProperty) AS ?o1).
       BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
       BIND (uri( ?o2) AS ?newEventObjectPropertyUri).
    }""" ;
      sh:order 0.332 ;
    .
    cts:old_compute-domain-range-of-state-property-object-properties
      rdf:type sh:SPARQLRule ;
      rdfs:label "compute-domain-range-of-object-properties" ;
      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#>
    
    # -- Compute domain/range of object properties
    CONSTRUCT { 
       # Object Property: domain, range and relation between domain/range classes
       ?objectPropertyUri rdfs:domain ?domainClass.
       ?objectPropertyUri rdfs:range ?rangeClass.
       ?domainClass ?objectPropertyUri ?rangeClass. # relation between domain/range classes
    }
    WHERE {
       # net1: event
       ?net1 a net:Instance.
       ?net1 net:type net:atom.
       ?net1 net:atomOf sys:State_Property.
       ?net1 net:has_structure ?req.
       ?net1 net:has_verb ?verbObject1.	
       ?verbObject1 net:has_concept ?verbConcept.
       # domain  
       ?net1 net:has_possible_domain ?possibleDomainLabel1.
    	?domainClass rdfs:label ?possibleDomainLabel1 .
       FILTER (
    		NOT EXISTS {
    			?net1 net:has_possible_domain ?possibleDomainLabel2 .
    	        ?anotherDomainClass rdfs:label ?possibleDomainLabel2 .
    			?anotherDomainClass rdfs:subClassOf ?domainClass.
    		}
    	)
       # range  
       ?net1 net:has_possible_range ?possibleRangeLabel1.
       ?rangeClass rdfs:label ?possibleRangeLabel1 .
       FILTER (
    		NOT EXISTS {
    			?net1 net:has_possible_domain ?possibleRangeLabel2 .
    	       ?anotherRangeClass rdfs:label ?possibleRangeLabel2 .
    			?anotherRangeClass rdfs:subClassOf ?rangeClass.
    		}
       )
       # URI (for object property)
       sys:Structure sys:has_frame_uri ?frameURI.
       sys:State_Property sys:has_object_property ?objectPropertyRef.
       BIND (concat( ?frameURI, ?objectPropertyRef) AS ?o1).
       BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
       BIND (uri( ?o2) AS ?objectPropertyUri).
    }""" ;
      sh:order 0.332 ;
    .
    cts:preprocessing
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "preprocessing" ;
      rdfs:subClassOf cts:Transduction_Schemes ;
      sh:rule cts:bypass-reification ;
      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:relation_generation_1
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "relation generation 1" ;
      rdfs:subClassOf cts:Transduction_Schemes ;
      sh:rule cts:generate-event-class ;
      sh:rule cts:generate-relation-property ;
    .
    cts:relation_generation_2
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "relation generation 2" ;
      rdfs:subClassOf cts:Transduction_Schemes ;
      sh:rule cts:compute-domain-of-relation-property ;
      sh:rule cts:compute-range-of-relation-property ;
    .
    cts:relation_generation_3_1
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "relation generation 3 1" ;
      rdfs:subClassOf cts:Transduction_Schemes ;
      sh:rule cts:link-classes-by-relation-property ;
    .
    cts:relation_generation_3_2
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "relation generation 3 2" ;
      rdfs:subClassOf cts:Transduction_Schemes ;
      sh:rule cts:link-instances-by-relation-property ;
    .
    cts:relation_generation_dga_patch
      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-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#>
    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#>
        
    # -- Specify axis of Atom List net
    CONSTRUCT { 
       # Update Atom List net (net1)
       ?net1 net:listBy ?unlRel.
    }
    WHERE {
       # UW: type UW-Occurrence and substructure of req sentence
       ?uw0 rdf:type unl:UW_Occurrence.
       ?uw0 unl:is_substructure_of ?req.
       # Net: Atom List
       ?net1 a net:Instance.
       ?net1 net:type net:list.
       ?net1 net:listOf net:atom.
       ?net1 net:has_node ?uw1.
       # selection: target UW of modifier (mod)
       ?uw0 ?unlRel ?uw1.
       FILTER NOT EXISTS { ?net1 net:has_node ?uw0 }.
    }""" ;
      sh:order 2.23 ;
    .
    cts:update-batch-execution-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:batch_execution sh:rule ?rule.
    }
    WHERE {
       ?nodeShapes sh:rule ?rule.
    }
    VALUES ?nodeShapes {
       cts:preprocessing
       cts:net_extension
       cts:generation
    }""" ;
      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#>
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX sh: <http://www.w3.org/ns/shacl#>
    
    CONSTRUCT {
       cts:generation sh:rule ?rule.
    }
    WHERE {
       ?rule rdf:type sh:SPARQLRule.
       ?rule sh:order ?order.
       FILTER ( strStarts(str(?order),\"3.\")  ).
    }""" ;
      sh:order 1.03 ;
    .
    cts:update-net-extension-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:net_extension sh:rule ?rule.
    }
    WHERE {
       ?rule rdf:type sh:SPARQLRule.
       ?rule sh:order ?order.
       FILTER ( strStarts(str(?order),\"2.\")  ).
    }""" ;
      sh:order 1.02 ;
    .
    cts:update-preprocessing-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:preprocessing sh:rule ?rule.
    }
    WHERE {
       ?rule rdf:type sh:SPARQLRule.
       ?rule sh:order ?order.
       FILTER ( strStarts(str(?order),\"1.\")  ).
    }""" ;
      sh:order 1.01 ;
    .