From 38794edb2df719b5c5d055ea41abdcb3a879fa7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?= <aurelien.lamercerie@laposte.net> Date: Wed, 29 Sep 2021 19:54:26 +0200 Subject: [PATCH] Generic CTS to create mod list nets --- config/semantic-net.ttl | 89 ++++---- config/transduction-schemes.ttl | 388 ++++++++++++++------------------ prepare_work_data.py | 10 +- 3 files changed, 217 insertions(+), 270 deletions(-) diff --git a/config/semantic-net.ttl b/config/semantic-net.ttl index 12672eb1..576e036d 100644 --- a/config/semantic-net.ttl +++ b/config/semantic-net.ttl @@ -30,11 +30,6 @@ net:Type rdfs:label "Semantic Net Type" ; rdfs:subClassOf net:Structure ; . -net:abstraction - rdf:type owl:Class ; - rdfs:label "abstraction" ; - rdfs:subClassOf net:Type ; -. net:abstractionClass rdf:type rdf:Property ; rdfs:label "abstraction class" ; @@ -48,7 +43,7 @@ net:atom net:atomOf rdf:type rdf:Property ; rdfs:label "atom of" ; - rdfs:subPropertyOf net:type ; + rdfs:subPropertyOf net:typeProperty ; . net:atomType rdf:type rdf:Property ; @@ -70,20 +65,20 @@ net:class_list rdfs:label "classList" ; rdfs:subClassOf net:Type ; . -net:complement +net:composite rdf:type owl:Class ; - rdfs:label "complement" ; + rdfs:label "composite" ; rdfs:subClassOf net:Type ; . -net:complement_mod_list +net:conjunctive_list rdf:type owl:Class ; - rdfs:label "complement mod list" ; - rdfs:subClassOf net:mod_list ; + rdfs:label "conjunctive-list" ; + rdfs:subClassOf net:list ; . -net:entity +net:disjunctive_list rdf:type owl:Class ; - rdfs:label "entity" ; - rdfs:subClassOf net:Type ; + rdfs:label "disjunctive-list" ; + rdfs:subClassOf net:list ; . net:entityClass rdf:type rdf:Property ; @@ -95,21 +90,11 @@ net:entity_class_list rdfs:label "entityClassList" ; rdfs:subClassOf net:class_list ; . -net:entity_mod_list - rdf:type owl:Class ; - rdfs:label "entity mod list" ; - rdfs:subClassOf net:mod_list ; -. net:event rdf:type owl:Class ; rdfs:label "event" ; rdfs:subClassOf net:Type ; . -net:feature - rdf:type owl:Class ; - rdfs:label "feature" ; - rdfs:subClassOf net:Type ; -. net:featureClass rdf:type rdf:Property ; rdfs:label "feature class" ; @@ -118,7 +103,7 @@ net:featureClass net:has_actor rdf:type rdf:Property ; rdfs:label "has actor" ; - rdfs:subPropertyOf net:has_object ; + rdfs:subPropertyOf net:has_atom ; . net:has_atom rdf:type rdf:Property ; @@ -158,12 +143,12 @@ net:has_mother_class net:has_node rdf:type rdf:Property ; rdfs:label "UNL Node" ; - rdfs:subPropertyOf net:property ; + rdfs:subPropertyOf net:netProperty ; . net:has_object rdf:type rdf:Property ; rdfs:label "relation" ; - rdfs:subPropertyOf net:property ; + rdfs:subPropertyOf net:netProperty ; . net:has_parent_class rdf:type rdf:Property ; @@ -183,7 +168,7 @@ net:has_possible_range net:has_structure rdf:type rdf:Property ; rdfs:label "Linguistic Structure (in UNL Document)" ; - rdfs:subPropertyOf net:property ; + rdfs:subPropertyOf net:netProperty ; . net:has_subClass rdf:type rdf:Property ; @@ -193,23 +178,38 @@ net:has_subClass net:has_target rdf:type rdf:Property ; rdfs:label "has target" ; - rdfs:subPropertyOf net:has_object ; + rdfs:subPropertyOf net:has_atom ; . net:has_verb rdf:type rdf:Property ; rdfs:label "has verb" ; - rdfs:subPropertyOf net:has_object ; + rdfs:subPropertyOf net:has_atom ; . net:instanceUri rdf:type rdf:Property ; rdfs:label "instance uri" ; rdfs:subPropertyOf net:objectValue ; . +net:list + rdf:type owl:Class ; + rdfs:label "list" ; + rdfs:subClassOf net:Type ; +. +net:listBy + rdf:type rdf:Property ; + rdfs:label "list by" ; + rdfs:subPropertyOf net:typeProperty ; +. net:listGuiding rdf:type rdf:Property ; rdfs:label "Guiding connector of a list (or, and)" ; rdfs:subPropertyOf net:objectValue ; . +net:listOf + rdf:type rdf:Property ; + rdfs:label "list of" ; + rdfs:subPropertyOf net:typeProperty ; +. net:modCat1 rdf:type rdf:Property ; rdfs:label "Modality Category (level 1)" ; @@ -220,34 +220,29 @@ net:modCat2 rdfs:label "Modality Category (level 2)" ; rdfs:subPropertyOf net:objectValue ; . -net:mod_list - rdf:type owl:Class ; - rdfs:label "modList" ; - rdfs:subClassOf net:Type ; +net:netProperty + rdf:type rdf:Property ; + rdfs:label "netProperty" ; . -net:objectAttribute +net:objectProperty rdf:type rdf:Property ; rdfs:label "object attribute" ; . net:objectType rdf:type rdf:Property ; rdfs:label "object type" ; - rdfs:subPropertyOf net:objectAttribute ; + rdfs:subPropertyOf net:objectProperty ; . net:objectValue rdf:type rdf:Property ; rdfs:label "valuations"@fr ; - rdfs:subPropertyOf net:objectAttribute ; + rdfs:subPropertyOf net:objectProperty ; . net:parentClassUri rdf:type rdf:Property ; rdfs:label "parent class uri" ; rdfs:subPropertyOf net:objectValue ; . -net:property - rdf:type rdf:Property ; - rdfs:label "netProperty" ; -. net:state_property rdf:type owl:Class ; rdfs:label "stateProperty" ; @@ -256,12 +251,16 @@ net:state_property net:type rdf:type rdf:Property ; rdfs:label "type "@fr ; - rdfs:subPropertyOf net:property ; + rdfs:subPropertyOf net:netProperty ; . -net:verb +net:typeProperty + rdf:type rdf:Property ; + rdfs:label "type property" ; +. +net:unary_list rdf:type owl:Class ; - rdfs:label "verb" ; - rdfs:subClassOf net:Type ; + rdfs:label "unary-list" ; + rdfs:subClassOf net:list ; . net:verbClass rdf:type rdf:Property ; diff --git a/config/transduction-schemes.ttl b/config/transduction-schemes.ttl index 534b6826..cadc43aa 100644 --- a/config/transduction-schemes.ttl +++ b/config/transduction-schemes.ttl @@ -388,25 +388,26 @@ cts:batch_execution sh:rule cts:complement-list-of-entity-classes ; sh:rule cts:compose-agt-verb-obj-as-simple-event ; sh:rule cts:compose-aoj-verb-obj-as-simple-state-property ; - sh:rule cts:compose-entity-modlist-1 ; - sh:rule cts:compose-entity-modlist-2 ; - sh:rule cts:compose-entity-modlist-3 ; + sh:rule cts:compose-atom-with-list-1 ; + sh:rule cts:compose-atom-with-list-2 ; sh:rule cts:compute-class-uri-of-net-object ; sh:rule cts:compute-domain-range-of-event-object-properties ; sh:rule cts:compute-domain-range-of-state-property-object-properties ; sh:rule cts:compute-instance-uri-of-net-object ; sh:rule cts:create-atom-net ; + sh:rule cts:create-unary-list-net ; sh:rule cts:define-uw-id ; - sh:rule cts:extend-mod-list ; + sh:rule cts:extend-list-net ; sh:rule cts:generate-atom-class ; sh:rule cts:generate-atom-instance ; - sh:rule cts:init-mod-list ; + sh:rule cts:init-conjunctive-list-net ; + sh:rule cts:init-disjunctive-list-net ; sh:rule cts:instantiate-atom-net ; sh:rule cts:instantiate-classlist-by-extension-1 ; sh:rule cts:instantiate-classlist-by-extension-2 ; sh:rule cts:link-to-scope-entry ; - sh:rule cts:typify-modlist-entity ; - sh:rule cts:typify-modlist-feature ; + sh:rule cts:specify-axis-of-list-net ; + sh:rule cts:specify-items-of-list-net ; . cts:batch_execution_1 rdf:type cts:batch_execution ; @@ -550,7 +551,7 @@ WHERE { BIND (concat(?n1, ?uw1Id, '-', ?uw2Id, '-', ?uw3Id) AS ?n2). BIND (uri(?n2) AS ?newNet). }""" ; - sh:order 2.9 ; + sh:order 2.41 ; . cts:compose-aoj-verb-obj-as-simple-state-property rdf:type sh:SPARQLRule ; @@ -622,120 +623,9 @@ WHERE { BIND (concat(?n1, ?uw1Id, '-', ?uw2Id, '-', ?uw3Id) AS ?n2). BIND (uri(?n2) AS ?newNet). }""" ; - sh:order 2.9 ; + sh:order 2.41 ; . -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 { - # Object: feature 2 - ?newFeature2 a net:Object. - ?newFeature2 net:objectType \"Feature\". - ?newFeature2 net:has_node ?uw2. - ?newFeature2 net:has_parent_class ?featureClass. - ?newFeature2 net:has_concept ?concept2. - # Object: feature 3 - ?newFeature3 a net:Object. - ?newFeature3 net:objectType \"Feature\". - ?newFeature3 net:has_node ?uw3. - ?newFeature3 net:has_parent_class ?featureClass. - ?newFeature3 net:has_concept ?concept3. - # Object: entity 2 - ?newEntity2 a net:Object. - ?newEntity2 net:objectType \"Entity\". - ?newEntity2 net:has_node ?uw2. - ?newEntity2 net:has_parent_class ?entityClass. - ?newEntity2 net:has_concept ?subEntity2. - ?newEntity2 net:has_feature ?newFeature2. - # Object: entity 3 - ?newEntity3 a net:Object. - ?newEntity3 net:objectType \"Entity\". - ?newEntity3 net:has_node ?uw3. - ?newEntity3 net:has_parent_class ?entityClass. - ?newEntity3 net:has_concept ?subEntity3. - ?newEntity3 net:has_feature ?newFeature3. - # Net: Entity ClassList - ?newNet a net:Instance. - ?newNet net:type net:entity_class_list. - ?newNet net:has_structure ?req. - ?newNet net:has_node ?uw1, ?uw2, ?uw3. - ?newNet net:entityClass ?entityClass. - ?newNet net:has_mainClass ?atomObject1. - ?newNet net:has_subClass ?newEntity2, ?newEntity3. - ?newNet net:has_feature ?newFeature2, ?newFeature3. -} -WHERE { - # net1: entity - ?net1 a net:Instance. - ?net1 net:type net:atom. - ?net1 net:atomOf sys:Entity. - ?net1 net:has_structure ?req. - ?net1 net:has_node ?uw1. - ?net1 net:has_atom ?atomObject1. - ?atomObject1 net:has_parent_class ?entityClass. - ?atomObject1 net:has_concept ?mainEntity. - # condition: mod(net1, net2) - ?uw1 unl:mod ?uw2. - # net2: complement modList - ?net2 a net:Instance. - ?net2 net:type net:complement_mod_list. - ?net2 net:has_structure ?req. - ?net2 net:has_node ?uw2, ?uw3. - ?net2 net:modCat2 ?featureClass. - # --old --- ?net2 net:concept ?subConcept. - # Filter - FILTER ( ?uw1 != ?uw3 ). - # 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: Id, concept, subEntity - ?uw1 unl:has_id ?uw1Id. - ?uw2 unl:has_id ?uw2Id. - ?uw3 unl:has_id ?uw3Id. - ?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). - # URI (for Feature Object) - cprm:Config_Parameters cprm:netURI ?netURI. - cprm:Config_Parameters cprm:objectRef ?objectRef. - BIND (concat( ?netURI, ?objectRef) AS ?o1). - BIND (concat(?o1, ?uw2Id) AS ?f2). - BIND (concat(?o1, ?uw3Id) AS ?f3). - BIND (uri(?f2) AS ?newFeature2). - BIND (uri(?f3) AS ?newFeature3). - # URI (for Entity Object) - BIND (concat(?f2, '_', ?subEntity2) AS ?e2). - BIND (concat(?f3, '_', ?subEntity3) AS ?e3). - BIND (uri(?e2) AS ?newEntity2). - BIND (uri(?e3) AS ?newEntity3). - # URI (for ClassList Net) - cprm:Config_Parameters cprm:netURI ?netURI. - net:class_list rdfs:label ?classListLabel. - BIND (concat( ?netURI, ?classListLabel, '_') AS ?n1). - BIND (concat(?n1, ?uw1Id, '-', ?uw2Id) AS ?n2). - BIND (uri(?n2) AS ?newNet). -}""" ; - sh:order 2.6 ; -. -cts:compose-entity-modlist-2 +cts:compose-atom-with-list-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#> @@ -748,25 +638,25 @@ 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) +# -- Compose an atom net and a list net (with distinct item classes) CONSTRUCT { # Object: feature 2 ?newFeature2 a net:Object. ?newFeature2 net:objectType \"Feature\". ?newFeature2 net:has_node ?uw2. - ?newFeature2 net:has_parent_class ?entityClass2. + ?newFeature2 net:has_parent_class ?listItemClass. ?newFeature2 net:has_concept ?concept2. # Object: feature 3 ?newFeature3 a net:Object. ?newFeature3 net:objectType \"Feature\". ?newFeature3 net:has_node ?uw3. - ?newFeature3 net:has_parent_class ?entityClass2. + ?newFeature3 net:has_parent_class ?listItemClass. ?newFeature3 net:has_concept ?concept3. # Object: entity 2 ?newEntity2 a net:Object. ?newEntity2 net:objectType \"Entity\". ?newEntity2 net:has_node ?uw2. - ?newEntity2 net:has_parent_class ?entityClass2. + ?newEntity2 net:has_parent_class ?listItemClass. ?newEntity2 net:has_concept ?subEntity2. ?newEntity2 net:has_feature ?newFeature2. # Object: entity 3 @@ -781,7 +671,7 @@ CONSTRUCT { ?newNet net:type net:entity_class_list. ?newNet net:has_structure ?req. ?newNet net:has_node ?uw1, ?uw2, ?uw3. - ?newNet net:entityClass ?entityClass1. + ?newNet net:entityClass ?atomParentClass. ?newNet net:has_mainClass ?atomObject1. ?newNet net:has_subClass ?newEntity2, ?newEntity3. ?newNet net:has_feature ?newFeature2, ?newFeature3. @@ -794,27 +684,19 @@ WHERE { ?net1 net:has_structure ?req. ?net1 net:has_node ?uw1. ?net1 net:has_atom ?atomObject1. - ?atomObject1 net:has_parent_class ?entityClass1. + ?atomObject1 net:has_parent_class ?atomParentClass. ?atomObject1 net:has_concept ?mainEntity. # condition: mod(net1, net2) ?uw1 unl:mod ?uw2. # 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:type net:list. + ?net2 net:listOf ?listItemClass. ?net2 net:has_structure ?req. ?net2 net:has_node ?uw2, ?uw3. # Filter FILTER ( ?uw1 != ?uw3 ). - FILTER ( ?entityClass1 != ?entityClass2 ). - # 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. + FILTER ( ?atomParentClass != ?listItemClass ). # Label: Id, concept, subEntity ?uw1 unl:has_id ?uw1Id. ?uw2 unl:has_id ?uw2Id. @@ -845,9 +727,9 @@ WHERE { BIND (concat(?n1, ?uw1Id, '-', ?uw2Id) AS ?n2). BIND (uri(?n2) AS ?newNet). }""" ; - sh:order 2.6 ; + sh:order 2.32 ; . -cts:compose-entity-modlist-3 +cts:compose-atom-with-list-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#> @@ -860,58 +742,50 @@ 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) +# -- Compose an atom net and an list net (with same item classes) CONSTRUCT { # Object: entity 2 ?newEntity2 a net:Object. ?newEntity2 net:objectType \"Entity\". ?newEntity2 net:has_node ?uw2. - ?newEntity2 net:has_parent_class ?entityClass2. + ?newEntity2 net:has_parent_class ?listItemClass. ?newEntity2 net:has_concept ?subEntity2. # Object: entity 3 ?newEntity3 a net:Object. ?newEntity3 net:objectType \"Entity\". ?newEntity3 net:has_node ?uw3. - ?newEntity3 net:has_parent_class ?entityClass2. + ?newEntity3 net:has_parent_class ?listItemClass. ?newEntity3 net:has_concept ?subEntity3. # Net: Entity ClassList ?newNet a net:Instance. ?newNet net:type net:entity_class_list. ?newNet net:has_structure ?req. ?newNet net:has_node ?uw1, ?uw2, ?uw3. - ?newNet net:entityClass ?entityClass1. + ?newNet net:entityClass ?atomParentClass. ?newNet net:has_mainClass ?atomObject1. ?newNet net:has_subClass ?newEntity2, ?newEntity3. } WHERE { - # net1: agent + # net1: atom ?net1 a net:Instance. ?net1 net:type net:atom. ?net1 net:atomOf sys:Entity. ?net1 net:has_structure ?req. ?net1 net:has_node ?uw1. ?net1 net:has_atom ?atomObject1. - ?atomObject1 net:has_parent_class ?entityClass1. + ?atomObject1 net:has_parent_class ?atomParentClass. ?atomObject1 net:has_concept ?mainEntity. # condition: mod(net1, net2) ?uw1 unl:mod ?uw2. # 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:type net:list. + ?net2 net:listOf ?listItemClass. ?net2 net:has_structure ?req. ?net2 net:has_node ?uw2, ?uw3. # Filter FILTER ( ?uw1 != ?uw3 ). - FILTER ( ?entityClass1 = ?entityClass2 ). - # 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. + FILTER ( ?atomParentClass = ?listItemClass ). # Label: Id, subEntity ?uw1 unl:has_id ?uw1Id. ?uw2 unl:has_id ?uw2Id. @@ -937,7 +811,7 @@ WHERE { BIND (concat(?s1, ?uw1Id, '-', ?uw2Id) AS ?s2). BIND (uri(?s2) AS ?newNet). }""" ; - sh:order 2.6 ; + sh:order 2.33 ; . cts:compute-class-uri-of-net-object rdf:type sh:SPARQLRule ; @@ -1180,7 +1054,52 @@ WHERE { BIND (concat(?n1, ?uw1Id) AS ?n2). BIND (uri(?n2) AS ?newNet). }""" ; - sh:order 2.1 ; + sh:order 2.11 ; +. +cts:create-unary-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 ModList net +CONSTRUCT { + ?semNet a net:Instance. + ?semNet net:type net:list. + ?semNet net:type net:unary_list. + ?semNet net:has_structure ?req. + ?semNet net:has_node ?uw1. + ?semNet net:has_concept ?concept1. +} +WHERE { + # UW: type UW-Occurrence and substructure of req sentence + ?uw0 rdf:type unl:UW_Occurrence. + ?uw0 unl:is_substructure_of ?req. + # 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 + ?uw1 rdf:type unl:UW_Occurrence. + ?uw1 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. + BIND (strbefore(?uw1Label, '(') AS ?concept1). + # -- old --- BIND (strbefore(?uw2Label, '(') AS ?concept2). + BIND (concat( ?netURI, ?listLabel, '_') AS ?s1). + BIND (concat(?s1, ?uw1Id) AS ?s2). + BIND (uri(?s2) AS ?semNet). +}""" ; + sh:order 2.21 ; . cts:define-uw-id rdf:type sh:SPARQLRule ; @@ -1223,17 +1142,15 @@ cts:entity_extraction 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:compose-atom-with-list-1 ; + sh:rule cts:compose-atom-with-list-2 ; sh:rule cts:create-atom-net ; - sh:rule cts:extend-mod-list ; - sh:rule cts:init-mod-list ; + sh:rule cts:extend-list-net ; + sh:rule cts:init-conjunctive-list-net ; sh:rule cts:instantiate-atom-net ; sh:rule cts:instantiate-classlist-by-extension-1 ; sh:rule cts:instantiate-classlist-by-extension-2 ; - sh:rule cts:typify-modlist-entity ; - sh:rule cts:typify-modlist-feature ; + sh:rule cts:specify-items-of-list-net ; . cts:event_extraction rdf:type owl:Class ; @@ -1242,7 +1159,7 @@ cts:event_extraction rdfs:subClassOf cts:net_extension ; sh:rule cts:compose-agt-verb-obj-as-simple-event ; . -cts:extend-mod-list +cts:extend-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#> @@ -1263,22 +1180,18 @@ CONSTRUCT { WHERE { # selection: modList net ?semNet a net:Instance. - ?semNet net:type net:mod_list. + ?semNet net:type net:list. ?semNet net:has_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 2.4 ; + sh:order 2.22 ; . cts:feature_extraction rdf:type owl:Class ; @@ -1389,7 +1302,7 @@ cts:generation sh:rule cts:generate-atom-class ; sh:rule cts:generate-atom-instance ; . -cts:init-mod-list +cts:init-conjunctive-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#> @@ -1405,32 +1318,77 @@ 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:type net:list. + ?semNet net:type net:conjunctive_list. ?semNet net:has_structure ?req. ?semNet net:has_node ?uw1. ?semNet net:has_concept ?concept1. } WHERE { # UW: type UW-Occurrence and substructure of req sentence - ?uw0 rdf:type unl:UW_Occurrence. - ?uw0 unl:is_substructure_of ?req. + ?uw1 rdf:type unl:UW_Occurrence. + ?uw1 unl:is_substructure_of ?req. # selection: target UW of modifier (mod) - ?uw0 unl:mod ?uw1. + ?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. + BIND (strbefore(?uw1Label, '(') AS ?concept1). + # -- old --- BIND (strbefore(?uw2Label, '(') AS ?concept2). + BIND (concat( ?netURI, ?listLabel, '_') AS ?s1). + BIND (concat(?s1, ?uw1Id) AS ?s2). + BIND (uri(?s2) AS ?semNet). +}""" ; + sh:order 2.21 ; +. +cts:init-disjunctive-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 ModList net +CONSTRUCT { + ?semNet a net:Instance. + ?semNet net:type net:list. + ?semNet net:type net:disjunctive_list. + ?semNet net:has_structure ?req. + ?semNet net:has_node ?uw1. + ?semNet net:has_concept ?concept1. +} +WHERE { # UW: type UW-Occurrence and substructure of req sentence ?uw1 rdf:type unl:UW_Occurrence. ?uw1 unl:is_substructure_of ?req. + # 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:mod_list rdfs:label ?modListLabel. + net:list rdfs:label ?listLabel. BIND (strbefore(?uw1Label, '(') AS ?concept1). # -- old --- BIND (strbefore(?uw2Label, '(') AS ?concept2). - BIND (concat( ?netURI, ?modListLabel, '_') AS ?s1). + BIND (concat( ?netURI, ?listLabel, '_') AS ?s1). BIND (concat(?s1, ?uw1Id) AS ?s2). BIND (uri(?s2) AS ?semNet). }""" ; - sh:order 2.3 ; + sh:order 2.21 ; . cts:instantiate-atom-net rdf:type sh:SPARQLRule ; @@ -1467,7 +1425,7 @@ WHERE { ?uw1 unl:has_id ?uw1Id. BIND (?uw1Id AS ?instanceName). }""" ; - sh:order 2.2 ; + sh:order 2.12 ; . cts:instantiate-classlist-by-extension-1 rdf:type sh:SPARQLRule ; @@ -1505,7 +1463,7 @@ WHERE { # Filter FILTER NOT EXISTS { ?subObject2 net:has_instance ?instanceName2 } . }""" ; - sh:order 2.7 ; + sh:order 2.34 ; . cts:instantiate-classlist-by-extension-2 rdf:type sh:SPARQLRule ; @@ -1544,7 +1502,7 @@ WHERE { # Filter FILTER NOT EXISTS { ?subObject2 net:has_instance ?instanceName2 } . }""" ; - sh:order 2.8 ; + sh:order 2.35 ; . cts:link-to-scope-entry rdf:type sh:SPARQLRule ; @@ -1595,14 +1553,7 @@ cts:preprocessing sh:rule cts:define-uw-id ; sh:rule cts:link-to-scope-entry ; . -cts:state_property_extraction - rdf:type owl:Class ; - rdf:type sh:NodeShape ; - rdfs:label "state property extraction" ; - rdfs:subClassOf cts:net_extension ; - sh:rule cts:compose-aoj-verb-obj-as-simple-state-property ; -. -cts:typify-modlist-entity +cts:specify-axis-of-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#> @@ -1615,32 +1566,24 @@ 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 +# -- Specify the class of items in the list CONSTRUCT { - ?semNet net:type net:entity_mod_list. - ?semNet net:modCat1 fprm:System_Entity. - ?semNet net:modCat2 ?entityClass. + ?semNet net:listBy ?unlRel. } WHERE { - # Entity (from System Ontology) - ?targetClass rdfs:subClassOf* sys:Entity. - ?targetClass sys:is_class ?entityClass. - ?targetClass sys:has_restriction ?entityRestriction. + # UW: type UW-Occurrence and substructure of req sentence + ?uw0 rdf:type unl:UW_Occurrence. + ?uw0 unl:is_substructure_of ?req. # net: modList ?semNet a net:Instance. - ?semNet net:type net:mod_list. + ?semNet net:type net:list. ?semNet net:has_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)) ). + # selection: target UW of modifier (mod) + ?uw0 ?unlRel ?uw1. }""" ; - sh:order 2.5 ; + sh:order 2.23 ; . -cts:typify-modlist-feature +cts:specify-items-of-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#> @@ -1653,20 +1596,18 @@ 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 +# -- Specify the class of items in the list CONSTRUCT { - ?semNet net:type net:complement_mod_list. - ?semNet net:modCat1 fprm:System_Feature. - ?semNet net:modCat2 ?featureClass. + ?semNet net:listOf ?atomClass. } WHERE { # Entity Feature (from System Ontology) - ?targetClass rdfs:subClassOf* sys:Feature. - ?targetClass sys:is_class ?featureClass. - ?targetClass sys:has_restriction ?featureRestriction. + ?targetClass rdfs:subClassOf* sys:Structure. + ?targetClass sys:is_class ?atomClass. + ?targetClass sys:has_restriction ?atomRestriction. # net: modList ?semNet a net:Instance. - ?semNet net:type net:mod_list. + ?semNet net:type net:list. ?semNet net:has_node ?uw1. # UW: type UW-Occurrence and substructure of req sentence ?uw1 rdf:type unl:UW_Occurrence. @@ -1674,9 +1615,16 @@ WHERE { # Label(s) / URI ?uw1 rdfs:label ?uw1Label. # Filter - FILTER ( regex(str(?uw1Label),str(?featureRestriction)) ). + FILTER ( regex(str(?uw1Label),str(?atomRestriction)) ). }""" ; - sh:order 2.5 ; + sh:order 2.23 ; +. +cts:state_property_extraction + rdf:type owl:Class ; + rdf:type sh:NodeShape ; + rdfs:label "state property extraction" ; + rdfs:subClassOf cts:net_extension ; + sh:rule cts:compose-aoj-verb-obj-as-simple-state-property ; . cts:verb_extraction rdf:type owl:Class ; diff --git a/prepare_work_data.py b/prepare_work_data.py index e2a18651..c10a1236 100644 --- a/prepare_work_data.py +++ b/prepare_work_data.py @@ -205,11 +205,11 @@ def run(corpus, source_ref, target_ref): if __name__ == '__main__': target_ref = "system" - run(req_100, 'R100', target_ref) - run(req_200, 'R200', target_ref) - run(req_300, 'R300a', target_ref) - run(corpus_40, 'Corpus-CCTP-40c', target_ref) - run(corpus_ERTMS, 'Corpus-ERTMS', target_ref) + run(req_100, 'R100b', target_ref) + run(req_200, 'R200b', target_ref) + run(req_300, 'R300b', target_ref) + #run(corpus_40, 'Corpus-CCTP-40c', target_ref) + #run(corpus_ERTMS, 'Corpus-ERTMS', target_ref) -- GitLab