Skip to content
Snippets Groups Projects
Select Git revision
  • da26b1e1b5cad3fc4836efde9e035e672c01e227
  • master default protected
  • multiprocessing
  • experiment/clara
  • experiment/spec2B-poc
  • experiment/qivalio-poc
  • experiment/ertms
  • MAY-2023
  • FEB-2023
  • EGC-2023
  • 0.2.1
  • v0.2.0
  • v0.1.2
13 results

transduction-schemes.ttl

Blame
  • transduction-schemes.ttl 34.32 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-entity-classes
      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 Entity classes in System Ontology
    CONSTRUCT { 
       ?subEntity23Uri rdfs:subClassOf ?mainEntityUri.
       ?subEntity23Uri rdfs:label ?subEntity23.
       ?subEntity23Uri  
    		owl:equivalentClass [	a owl:Class ;
                                    owl:intersectionOf ( ?subEntity2Uri ?subEntity3Uri ) ] .
    }
    WHERE {
       # net1: entity class list
       ?net1 a net:Instance.
       ?net1 net:type net:entity_class_list.
       ?net1 net:entityClass ?entityClass.
       ?net1 net:node ?uw2.
       ?net1 net:node ?uw3.
       ?net1 net:class1 ?mainEntity.		
       ?net1 net:class2 ?subEntity2.	
       ?net1 net:class2 ?subEntity3.		
       # extension: disjunction of UW
       ?uw2 unl:and ?uw3.
       # Label(s) / URI
       ?uw2 rdfs:label ?uw2Label.
       ?uw3 rdfs:label ?uw3Label.
       BIND (strbefore(?uw2Label, '(') AS ?concept2)
       BIND (strbefore(?uw3Label, '(') AS ?concept3)
       BIND (concat(?concept2, '-or-', ?concept3) AS ?concept23)
       FILTER ( STRSTARTS(?subEntity2, ?concept2) ).
       FILTER ( STRSTARTS(?subEntity3, ?concept3) ).
       # -- old --- BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity2).
       # -- old --- BIND (concat(?concept3, '_', ?mainEntity) AS ?subEntity3).
       BIND (concat(?concept23, '_', ?mainEntity) AS ?subEntity23).
       cprm:Config_Parameters cprm:baseURI ?baseURI.
       fprm:System_Ontology fprm:frameURI ?frameURI.
       BIND (concat( ?frameURI, ?entityClass) AS ?s1).
       BIND (concat(?s1, '_', ?mainEntity) AS ?s2).
       BIND (concat(?s1, '_', ?subEntity2) AS ?s3).
       BIND (concat(?s1, '_', ?subEntity3) AS ?s4).
       BIND (concat(?s1, '_', ?subEntity23) AS ?s5).
       BIND (uri(?s2) AS ?mainEntityUri).
       BIND (uri(?s3) AS ?subEntity2Uri).
       BIND (uri(?s4) AS ?subEntity3Uri).
       BIND (uri(?s5) AS ?subEntity23Uri).
      # --old --- FILTER NOT EXISTS  { ?net2 net:class2 ?mainEntity }.
      # --old --- FILTER NOT EXISTS  { ?subEntity23Uri owl:equivalentClass ?c }.
    }""" ;
      sh:order "204"^^xsd:decimal ;
    .
    cts:add-disjunctive-entity-classes
      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 Entity classes in System Ontology
    CONSTRUCT { 
       ?subEntity23Uri rdfs:subClassOf ?mainEntityUri.
       ?subEntity23Uri rdfs:label ?subEntity23.
       ?subEntity23Uri  
    		owl:equivalentClass [	a owl:Class ;
                                    owl:unionOf ( ?subEntity2Uri ?subEntity3Uri ) ] .
    }
    WHERE {
       # net1: entity class list
       ?net1 a net:Instance.
       ?net1 net:type net:entity_class_list.
       ?net1 net:entityClass ?entityClass.
       ?net1 net:node ?uw2.
       ?net1 net:node ?uw3.
       ?net1 net:class1 ?mainEntity.		
       ?net1 net:class2 ?subEntity2.	
       ?net1 net:class2 ?subEntity3.		
       # extension: disjunction of UW
       ?uw2 unl:or ?uw3.
       # Label(s) / URI
       ?uw2 rdfs:label ?uw2Label.
       ?uw3 rdfs:label ?uw3Label.
       BIND (strbefore(?uw2Label, '(') AS ?concept2)
       BIND (strbefore(?uw3Label, '(') AS ?concept3)
       BIND (concat(?concept2, '-or-', ?concept3) AS ?concept23)
       FILTER ( STRSTARTS(?subEntity2, ?concept2) ).
       FILTER ( STRSTARTS(?subEntity3, ?concept3) ).
       # -- old --- BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity2).
       # -- old --- BIND (concat(?concept3, '_', ?mainEntity) AS ?subEntity3).
       BIND (concat(?concept23, '_', ?mainEntity) AS ?subEntity23).
       cprm:Config_Parameters cprm:baseURI ?baseURI.
       fprm:System_Ontology fprm:frameURI ?frameURI.
       BIND (concat( ?frameURI, ?entityClass) AS ?s1).
       BIND (concat(?s1, '_', ?mainEntity) AS ?s2).
       BIND (concat(?s1, '_', ?subEntity2) AS ?s3).
       BIND (concat(?s1, '_', ?subEntity3) AS ?s4).
       BIND (concat(?s1, '_', ?subEntity23) AS ?s5).
       BIND (uri(?s2) AS ?mainEntityUri).
       BIND (uri(?s3) AS ?subEntity2Uri).
       BIND (uri(?s4) AS ?subEntity3Uri).
       BIND (uri(?s5) AS ?subEntity23Uri).
      # --old --- FILTER NOT EXISTS  { ?net2 net:class2 ?mainEntity }.
      # --old --- FILTER NOT EXISTS  { ?subEntity23Uri owl:equivalentClass ?c }.
    }""" ;
      sh:order "203"^^xsd:decimal ;
    .
    cts:add-disjunctive-entity-classes-2--old
      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 Entity classes in System Ontology
    CONSTRUCT { 
       ?subEntity23Uri rdfs:subClassOf ?mainEntityUri.
       ?subEntity23Uri rdfs:label ?subEntity23.
       ?subEntity23Uri  
    		owl:equivalentClass [	a owl:Class ;
                                    owl:unionOf ( ?subEntity2Uri ?subEntity3Uri ) ] .
    }
    WHERE {
       # net1: entity class list
       ?net1 a net:Instance.
       ?net1 net:type net:entity_class_list.
       ?net1 net:node ?uw2.
       ?net1 net:node ?uw3.
       ?net1 net:class1 ?mainEntity1.	
       ?net1 net:class2 ?subEntity2.		
       ?net1 net:class3 ?subEntity3.				
       # net2: entity class list
       ?net2 a net:Instance.
       ?net2 net:type net:entity_class_list.
       ?net2 net:entityClass ?entityClass.
       ?net2 net:class1 ?mainEntity2.	
       ?net2 net:class2 ?subEntityNet2.	
       # extension: disjunction of UW
       ?uw2 unl:or ?uw3.
       # Label(s) / URI
       ?uw2 rdfs:label ?uw2Label.
       ?uw3 rdfs:label ?uw3Label.
       BIND (strbefore(?uw2Label, '(') AS ?concept2)
       BIND (strbefore(?uw3Label, '(') AS ?concept3)
       BIND (concat(?subEntity2, '-or-', ?subEntity3) AS ?concept23).
       FILTER ( ?concept2 = ?subEntity2 )
       FILTER ( ?concep3 = ?subEntity3 )
       # -- old --- BIND (concat(?concept2, '_', ?mainEntity1) AS ?subEntity2).
       # -- old --- BIND (concat(?concept3, '_', ?mainEntity1) AS ?subEntity3).
       BIND (concat(?concept23, '_', ?mainEntity1) AS ?subEntity23).
       BIND (concat(?s1, '_', ?mainEntity1) AS ?s2).
       BIND (concat(?s1, '_', ?subEntity2) AS ?s3).
       BIND (concat(?s1, '_', ?subEntity3) AS ?s4).
       BIND (concat(?s1, '_', ?subEntity23) AS ?s5).
       BIND (uri(?s2) AS ?mainEntityUri).
       BIND (uri(?s3) AS ?subEntity2Uri).
       BIND (uri(?s4) AS ?subEntity3Uri).
       BIND (uri(?s5) AS ?subEntity23Uri).
      FILTER ( ?mainEntity1 = ?subEntityNet2).
    }""" ;
      sh:order "000"^^xsd:decimal ;
    .
    cts:add-entity-classes
      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#>
    
    # -- Add Entity classes in System Ontology
    CONSTRUCT { 
       ?mainEntityUri rdfs:subClassOf ?entityUri.
       ?mainEntityUri rdfs:label ?mainEntity.
    }
    WHERE {
       # net1: entity
       ?net1 a net:Instance.
       ?net1 net:type net:entity.
       ?net1 net:entityClass ?entityClass.
       ?net1 net:concept ?mainEntity.	
       # Label(s) / URI
       cprm:Config_Parameters cprm:baseURI ?baseURI.
       fprm:System_Ontology fprm:frameURI ?frameURI.
       fprm:System_Entity rdfs:label ?entityLabel.
       BIND (concat( ?frameURI, ?entityClass) AS ?s1).
       BIND (concat(?s1, '_', ?mainEntity) AS ?s2).
       BIND (uri( ?s1) AS ?entityUri).
       BIND (uri(?s2) AS ?mainEntityUri).
       # Filter: entity not present in a class list
       FILTER NOT EXISTS  { ?net2 (net:class1|net:class2) ?mainEntity}
    }""" ;
      sh:order "201"^^xsd:decimal ;
    .
    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 { 
       ?mainEntityUri rdfs:subClassOf ?entityUri.
       ?subEntityUri rdfs:subClassOf ?mainEntityUri.
       ?mainEntityUri rdfs:label ?mainEntity.
       ?subEntityUri rdfs:label ?subEntity.
    }
    WHERE {
       # net1: entity class list
       ?net1 a net:Instance.
       ?net1 net:type net:entity_class_list.
       ?net1 net:entityClass ?entityClass.
       ?net1 net:class1 ?mainEntity.	
       ?net1 net:class2 ?subEntity.		
       # Label(s) / URI
       # -- old --- BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity).
       cprm:Config_Parameters cprm:baseURI ?baseURI.
       fprm:System_Ontology fprm:frameURI ?frameURI.
       fprm:System_Entity rdfs:label ?entityLabel.
       BIND (concat( ?frameURI, ?entityClass) AS ?s1).
       BIND (concat(?s1, '_', ?mainEntity) AS ?s2).
       BIND (concat(?s1, '_', ?subEntity) AS ?s3).
       BIND (uri( ?s1) AS ?entityUri).
       BIND (uri(?s2) AS ?mainEntityUri).
       BIND (uri(?s3) AS ?subEntityUri).
      # -- old --- FILTER NOT EXISTS  { ?net2 net:class2 ?mainEntity}
    }""" ;
      sh:order "202"^^xsd:decimal ;
    .
    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 "001"^^xsd:decimal ;
    .
    cts:compose-entity-modlist-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 Entity net and a Complement ModList net    
    CONSTRUCT { 
       ?newNet a net:Instance.
       ?newNet net:type net:entity_class_list.
       ?newNet net:node ?uw1.
       ?newNet net:node ?uw2.
       ?newNet net:node ?uw3.
       ?newNet net:entityClass ?entityClass.
       ?newNet net:featureClass ?featureClass.
       ?newNet net:class1 ?mainEntity.	
       ?newNet net:class2 ?subEntity2.	
       ?newNet net:class2 ?subEntity3.	
    }
    WHERE {
       # net1: entity
       ?net1 a net:Instance.
       ?net1 net:type net:entity.
       ?net1 net:node ?uw1.
       ?net1 net:entityClass ?entityClass.
       ?net1 net:concept ?mainEntity.	
       # net2: complement modList
       ?net2 a net:Instance.
       ?net2 net:type net:complement_mod_list.
       ?net2 net:node ?uw2.
       ?net2 net:node ?uw3.
       ?net2 net:modCat2 ?featureClass.
       # --old --- ?net2 net:concept ?subConcept.	
       # Filter
       FILTER ( ?uw1 != ?uw3  ).
       # condition: mod(net1, net2)
       ?uw1 unl:mod ?uw2.
       # UW: type UW-Occurrence and substructure of req sentence
       # --old --- ?uw1 rdf:type unl:UW_Occurrence.
       # --old --- ?uw2 rdf:type unl:UW_Occurrence.
       # --old --- ?uw3 rdf:type unl:UW_Occurrence.
       # --old --- ?uw1 unl:is_substructure_of ?req.
       # --old --- ?uw2 unl:is_substructure_of ?req.
       # --old --- ?uw3 unl:is_substructure_of ?req.
       # Label(s) / URI
       ?uw2 rdfs:label ?uw2Label.
       ?uw3 rdfs:label ?uw3Label.
       BIND (strbefore(?uw2Label, '(') AS ?concept2)
       BIND (strbefore(?uw3Label, '(') AS ?concept3)
       BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity2).
       BIND (concat(?concept3, '_', ?mainEntity) AS ?subEntity3).
       cprm:Config_Parameters cprm:netURI ?netURI.
       net:class_list rdfs:label ?classListLabel.
       BIND (concat( ?netURI, ?classListLabel, '_') AS ?s1).
       BIND (concat(?s1, ?mainEntity, '-', ?concept2) AS ?s2).
       BIND (uri(?s2) AS ?newNet).
    }""" ;
      sh:order "121"^^xsd:decimal ;
    .
    cts:compose-entity-modlist-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 Entity net and an Entity ModList net (with distinct entity classes)
    CONSTRUCT { 
       ?newNet a net:Instance.
       ?newNet net:type net:entity_class_list.
       ?newNet net:node ?uw1.
       ?newNet net:node ?uw2.
       ?newNet net:node ?uw3.
       ?newNet net:entityClass ?entityClass1.
       ?newNet net:featureClass ?entityClass2.
       ?newNet net:class1 ?mainEntity.	
       ?newNet net:class2 ?subEntity2.	
       ?newNet net:class2 ?subEntity3.	
    }
    WHERE {
       # net1: agent
       ?net1 a net:Instance.
       ?net1 net:type net:entity.
       ?net1 net:node ?uw1.
       ?net1 net:entityClass ?entityClass1.
       ?net1 net:concept ?mainEntity.	
       # net2: entity modList
       ?net2 a net:Instance.
       ?net2 net:type net:entity_mod_list.
       ?net2 net:modCat1 fprm:System_Entity.
       ?net2 net:modCat2 ?entityClass2. 
       ?net2 net:node ?uw2.
       ?net2 net:node ?uw3.
       # --old --- ?net2 net:concept ?subConcept.	
       # -- old --- ?net2 net:entityClass ?entityClass2.
       # Filter
       FILTER ( ?uw1 != ?uw3  ).
       FILTER ( ?entityClass1 != ?entityClass2  ).
       # condition: mod(net1, net2)
       ?uw1 unl:mod ?uw2.
       # UW: type UW-Occurrence and substructure of req sentence
       # --old --- ?uw1 rdf:type unl:UW_Occurrence.
       # --old --- ?uw2 rdf:type unl:UW_Occurrence.
       # --old --- ?uw3 rdf:type unl:UW_Occurrence.
       # --old --- ?uw1 unl:is_substructure_of ?req.
       # --old --- ?uw2 unl:is_substructure_of ?req.
       # --old --- ?uw3 unl:is_substructure_of ?req.
       # Label(s) / URI
       ?uw2 rdfs:label ?uw2Label.
       ?uw3 rdfs:label ?uw3Label.
       BIND (strbefore(?uw2Label, '(') AS ?concept2).
       BIND (strbefore(?uw3Label, '(') AS ?concept3).
       BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity2).
       BIND (concat(?concept3, '_', ?mainEntity) AS ?subEntity3).
       cprm:Config_Parameters cprm:netURI ?netURI.
       net:class_list rdfs:label ?classListLabel.
       BIND (concat( ?netURI, ?classListLabel, '_') AS ?s1).
       BIND (concat(?s1, ?mainEntity, '-', ?subEntity2) AS ?s2).
       BIND (uri(?s2) AS ?newNet).
    }""" ;
      sh:order "122"^^xsd:decimal ;
    .
    cts:compose-entity-modlist-3
      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 Entity net and an Entity ModList net (with same entity classes)
    CONSTRUCT { 
       ?newNet a net:Instance.
       ?newNet net:type net:entity_class_list.
       ?newNet net:node ?uw1.
       ?newNet net:node ?uw2.
       ?newNet net:node ?uw3.
       ?newNet net:entityClass ?entityClass1.
       ?newNet net:featureClass \"None\".
       ?newNet net:class1 ?mainEntity.	
       ?newNet net:class2 ?subEntity2.	
       ?newNet net:class2 ?subEntity3.	
    }
    WHERE {
       # net1: agent
       ?net1 a net:Instance.
       ?net1 net:type net:entity.
       ?net1 net:node ?uw1.
       ?net1 net:entityClass ?entityClass1.
       ?net1 net:concept ?mainEntity.	
       # net2: entity modList
       ?net2 a net:Instance.
       ?net2 net:type net:entity_mod_list.
       ?net2 net:modCat1 fprm:System_Entity.
       ?net2 net:modCat2 ?entityClass2.
       ?net2 net:node ?uw2.
       ?net2 net:node ?uw3.
       # --old --- ?net2 net:concept ?subConcept.	
       # Filter
       FILTER ( ?uw1 != ?uw3  ).
       FILTER ( ?entityClass1 = ?entityClass2  ).
       # condition: mod(net1, net2)
       ?uw1 unl:mod ?uw2.
       # UW: type UW-Occurrence and substructure of req sentence
       # --old --- ?uw1 rdf:type unl:UW_Occurrence.
       # --old --- ?uw2 rdf:type unl:UW_Occurrence.
       # --old --- ?uw3 rdf:type unl:UW_Occurrence.
       # --old --- ?uw1 unl:is_substructure_of ?req.
       # --old --- ?uw2 unl:is_substructure_of ?req.
       # --old --- ?uw3 unl:is_substructure_of ?req.
       # Label(s) / URI
       ?uw2 rdfs:label ?uw2Label.
       ?uw3 rdfs:label ?uw3Label.
       BIND (strbefore(?uw2Label, '(') AS ?subEntity2)
       BIND (strbefore(?uw3Label, '(') AS ?subEntity3)
       cprm:Config_Parameters cprm:netURI ?netURI.
       net:class_list rdfs:label ?classListLabel.
       BIND (concat( ?netURI, ?classListLabel, '_') AS ?s1).
       BIND (concat(?s1, ?mainEntity, '-', ?subEntity2) AS ?s2).
       BIND (uri(?s2) AS ?newNet).
    }""" ;
      sh:order "123"^^xsd:decimal ;
    .
    cts:create-entity-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 Entity net
    CONSTRUCT { 
       ?semNet a net:Instance.
       ?semNet net:type net:entity.
       ?semNet net:node ?uw1.
       ?semNet net:entityClass ?entityClass.
       ?semNet net:concept ?concept1. 
    }
    WHERE {
       # Entity (from System Ontology)
       ?entity rdf:type fprm:System_Entity.
       ?entity fprm:class ?entityClass.
       ?entity fprm:restriction ?entityRestriction.
       # 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.
       # Label(s) / URI
       ?uw1 rdfs:label ?uw1Label.
       cprm:Config_Parameters cprm:netURI ?netURI
       BIND (strbefore(?uw1Label, '(') AS ?concept1).
       BIND (concat( ?netURI, ?entityClass, '_') AS ?s1).
       BIND (concat(?s1, ?concept1) AS ?s2).
       BIND (uri(?s2) AS ?semNet).
       # Filter
       FILTER ( regex(str(?uw1Label),str(?entityRestriction))  ).
    }""" ;
      sh:order "101"^^xsd:decimal ;
    .
    cts:dev_schemes
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "dev schemes" ;
      rdfs:subClassOf cts:Transduction_Schemes ;
      sh:rule cts:add-disjunctive-entity-classes-2--old ;
      sh:rule cts:extend-list-of-entity-classes--old ;
    .
    cts:entity_extraction
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "entity extraction" ;
      rdfs:subClassOf cts:net_extension ;
      sh:rule cts:compose-entity-modlist-1 ;
      sh:rule cts:compose-entity-modlist-2 ;
      sh:rule cts:compose-entity-modlist-3 ;
      sh:rule cts:create-entity-net ;
      sh:rule cts:extend-mod-list ;
      sh:rule cts:init-mod-list ;
      sh:rule cts:instantiate-entity-net ;
      sh:rule cts:typify-modlist-entity ;
      sh:rule cts:typify-modlist-feature ;
    .
    cts:entity_extraction_1
      rdf:type cts:entity_extraction ;
      rdfs:label "entity extraction 1" ;
    .
    cts:extend-list-of-entity-classes--old
      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 Entity classes in System Ontology
    CONSTRUCT { 
       ?subEntityUri rdfs:subClassOf ?mainEntityUri.
       ?subEntityUri rdfs:label ?subEntity.
    }
    WHERE {
       # net1: entity class list
       ?net1 a net:Instance.
       ?net1 net:type net:entity_class_list.
       ?net1 net:entityClass ?entityClass.
       ?net1 net:class1 ?mainEntity1.	
       ?net1 net:class2 ?subEntity1.	
       # net2: entity class list
       ?net2 a net:Instance.
       ?net2 net:type net:entity_class_list.
       ?net2 net:class1 ?mainEntity2.	
       ?net2 net:class2 ?subEntity2.	
       # Label(s) / URI
       BIND (concat(?mainEntity1, '_', ?mainEntity2) AS ?mainEntity).
       BIND (concat(?subEntityConcept1, '_', ?mainEntity1) AS ?subEntity).
       cprm:Config_Parameters cprm:baseURI ?baseURI.
       fprm:System_Ontology fprm:frameURI ?frameURI.
       fprm:System_Entity rdfs:label ?entityLabel.
       BIND (concat( ?frameURI, ?entityClass) AS ?s1).
       BIND (concat(?s1, '_', ?mainEntity) AS ?s2).
       BIND (concat(?s1, '_', ?subEntity) AS ?s3).
       BIND (uri( ?s1) AS ?entityUri).
       BIND (uri(?s2) AS ?mainEntityUri).
       BIND (uri(?s3) AS ?subEntityUri).
      # -- old --- FILTER ( ?mainEntity1 = ?subEntity2 ).
      # -- old --- FILTER ( ?mainEntity1 != ?subEntity2 ).
    }""" ;
      sh:order "000"^^xsd:decimal ;
    .
    cts:extend-mod-list
      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 a ModList net
    CONSTRUCT { 
       ?semNet net:node ?uw2.
       ?semNet net:concept ?concept2.
    }
    WHERE {
       # selection: modList net
       ?semNet a net:Instance.
       ?semNet net:type net:mod_list.
       ?semNet net:node ?uw1.
       # extension: disjunction of UW
       ?uw1 (unl:or|unl:and) ?uw2.
       # UW: type UW-Occurrence and substructure of req sentence
       # -- old --- ?uw1 rdf:type unl:UW_Occurrence.
       # -- old --- ?uw1 unl:is_substructure_of ?req.
       ?uw2 rdf:type unl:UW_Occurrence.
       ?uw2 unl:is_substructure_of ?req.
       # Label(s) / URI
       ?uw1 rdfs:label ?uw1Label.
       ?uw2 rdfs:label ?uw2Label.
       BIND (strbefore(?uw1Label, '(') AS ?concept1)
       BIND (strbefore(?uw2Label, '(') AS ?concept2)
    }""" ;
      sh:order "112"^^xsd:decimal ;
    .
    cts:generation
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "generation" ;
      rdfs:subClassOf cts:Transduction_Schemes ;
      sh:rule cts:add-conjunctive-entity-classes ;
      sh:rule cts:add-disjunctive-entity-classes ;
      sh:rule cts:add-entity-classes ;
      sh:rule cts:add-list-of-entity-classes ;
    .
    cts:generation_1
      rdf:type cts:generation ;
      rdfs:label "generation 1" ;
    .
    cts:init-mod-list
      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 ModList net
    CONSTRUCT { 
       ?semNet a net:Instance.
       ?semNet net:type net:mod_list.
       ?semNet net:node ?uw1.
       ?semNet net:concept ?concept1.
    }
    WHERE {
       # UW: type UW-Occurrence and substructure of req sentence
       ?uwSource rdf:type unl:UW_Occurrence.
       ?uw1 rdf:type unl:UW_Occurrence.
       ?uwSource unl:is_substructure_of ?req.
       ?uw1 unl:is_substructure_of ?req.
       # selection: target UW of modifier (mod)
       ?uwSource unl:mod ?uw1.
       # Label(s) / URI
       ?uw1 rdfs:label ?uw1Label.
       cprm:Config_Parameters cprm:netURI ?netURI.
       net:mod_list rdfs:label ?modListLabel.
       BIND (strbefore(?uw1Label, '(') AS ?concept1).
       BIND (strbefore(?uw2Label, '(') AS ?concept2).
       BIND (concat( ?netURI, ?modListLabel, '_') AS ?s1).
       BIND (concat(?s1, ?concept1) AS ?s2).
       BIND (uri(?s2) AS ?semNet).
    }""" ;
      sh:order "111"^^xsd:decimal ;
    .
    cts:instantiate-entity-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 Entity net
    CONSTRUCT { 
       ?net1 net:entityInstance ?instanceName. 
    }
    WHERE {
       # net1: entity
       ?net1 a net:Instance.
       ?net1 net:type net:entity.
       ?net1 net:node ?uw1.
       ?net1 net:entityClass ?entityClass1.
       ?net1 net:concept ?concept1. 
       # condition: agt/obj(uw0, uw1)
       ?uw0 (unl:agt | unl:obj) ?uw1.
       # UW: type UW-Occurrence and substructure of req sentence
       ?uw0 rdf:type unl:UW_Occurrence.
       ?uw0 unl:is_substructure_of ?req.
       # -- old ---- ?uw1 rdf:type unl:UW_Occurrence.
       # -- old ---- ?uw1 unl:is_substructure_of ?req.
       # -- old ---- ?uw1 unl:is_occurrence_of ?lexTrg.
       # Label(s) / URI
       BIND (concat( ?entityClass1, '_', ?concept1) AS ?s1).
       BIND (concat(?s1, '_instance') AS ?instanceName).
    }""" ;
      sh:order "102"^^xsd:decimal ;
    .
    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 "002"^^xsd:decimal ;
    .
    cts:net_extension
      rdf:type owl:Class ;
      rdf:type sh:NodeShape ;
      rdfs:label "net extension" ;
      rdfs:subClassOf cts:Transduction_Schemes ;
    .
    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:link-to-scope-entry ;
    .
    cts:preprocessing_1
      rdf:type cts:preprocessing ;
      rdfs:label "preprocessing 1" ;
    .
    cts:test_1
      rdf:type sh:SPARQLRule ;
      rdfs:label "test 1" ;
      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 {
       ?net1 a net:Instance.
    }
    WHERE { 
       ?net1 a net:Instance.
    }""" ;
      sh:order "000"^^xsd:decimal ;
    .
    cts:typify-modlist-entity
      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#>
        
    # -- Typify a ModList net as Entity ModList
    CONSTRUCT { 
       ?semNet net:type net:entity_mod_list.
       ?semNet net:modCat1 fprm:System_Entity.
       ?semNet net:modCat2 ?entityClass.
    }
    WHERE {
       # Entity (from System Ontology)
       ?entity rdf:type fprm:System_Entity.
       ?entity fprm:class ?entityClass.
       ?entity fprm:restriction ?entityRestriction.
       # net: modList
       ?semNet a net:Instance.
       ?semNet net:type net:mod_list.
       ?semNet net:node ?uw1.
       # UW: type UW-Occurrence and substructure of req sentence
       ?uw1 rdf:type unl:UW_Occurrence.
       ?uw1 unl:is_substructure_of ?req.
       # Label(s) / URI
       ?uw1 rdfs:label ?uw1Label.
       # Filter
       FILTER ( regex(str(?uw1Label),str(?entityRestriction)) ).
    }""" ;
      sh:order "113"^^xsd:decimal ;
    .
    cts:typify-modlist-feature
      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#>
        
    # -- Typify a ModList net as Feature ModList
    CONSTRUCT { 
       ?semNet net:type net:complement_mod_list.
       ?semNet net:modCat1 fprm:System_Feature.
       ?semNet net:modCat2 ?featureClass.
    }
    WHERE {
       # Entity Feature (from System Ontology)
       ?entity rdf:type fprm:System_Feature.
       ?entity fprm:class ?featureClass.
       ?entity fprm:restriction ?featureRestriction.
       # net: modList
       ?semNet a net:Instance.
       ?semNet net:type net:mod_list.
       ?semNet net:node ?uw1.
       # UW: type UW-Occurrence and substructure of req sentence
       ?uw1 rdf:type unl:UW_Occurrence.
       ?uw1 unl:is_substructure_of ?req.
       # Label(s) / URI
       ?uw1 rdfs:label ?uw1Label.
       # Filter
       FILTER ( regex(str(?uw1Label),str(?featureRestriction))  ).
    }""" ;
      sh:order "114"^^xsd:decimal ;
    .