diff --git a/config/transduction-schemes.ttl b/config/transduction-schemes.ttl index 9d4d5abf1b0d0f38912ecf9ab7cba687c6771819..49ca3a048f742e8365cc764d8641af4d40fb878a 100644 --- a/config/transduction-schemes.ttl +++ b/config/transduction-schemes.ttl @@ -40,11 +40,14 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#> # -- Add Disjunctive Entity classes in System Ontology CONSTRUCT { + # Classification ?subEntity23Uri rdfs:subClassOf ?mainEntityUri. ?subEntity23Uri rdfs:label ?subEntity23. ?subEntity23Uri owl:equivalentClass [ a owl:Class ; owl:intersectionOf ( ?subEntity2Uri ?subEntity3Uri ) ] . + # Instantiation (extension) + ?mainInstanceUri rdf:type ?subEntity23Uri. } WHERE { # net1: entity class list @@ -56,9 +59,12 @@ WHERE { ?net1 net:class1 ?mainEntity. ?net1 net:class2 ?subEntity2. ?net1 net:class2 ?subEntity3. + ?net1 net:entityInstance ?mainInstance. # extension: disjunction of UW ?uw2 unl:and ?uw3. - # Label(s) / URI + # --old --- FILTER NOT EXISTS { ?net2 net:class2 ?mainEntity }. + # --old --- FILTER NOT EXISTS { ?subEntity23Uri owl:equivalentClass ?c }. + # Label(s) / URI (for classes) ?uw2 rdfs:label ?uw2Label. ?uw3 rdfs:label ?uw3Label. BIND (strbefore(?uw2Label, '(') AS ?concept2) @@ -80,8 +86,9 @@ WHERE { 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 }. + # Label(s) / URI (for instance) + BIND (concat(?s1, '_', ?mainInstance) AS ?s6). + BIND (uri(?s6) AS ?mainInstanceUri). }""" ; sh:order "204"^^xsd:decimal ; . @@ -101,11 +108,14 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#> # -- Add Disjunctive Entity classes in System Ontology CONSTRUCT { + # Classification ?subEntity23Uri rdfs:subClassOf ?mainEntityUri. ?subEntity23Uri rdfs:label ?subEntity23. ?subEntity23Uri owl:equivalentClass [ a owl:Class ; owl:unionOf ( ?subEntity2Uri ?subEntity3Uri ) ] . + # Instantiation (extension) + ?mainInstanceUri rdf:type ?subEntity23Uri. } WHERE { # net1: entity class list @@ -117,9 +127,12 @@ WHERE { ?net1 net:class1 ?mainEntity. ?net1 net:class2 ?subEntity2. ?net1 net:class2 ?subEntity3. + ?net1 net:entityInstance ?mainInstance. # extension: disjunction of UW ?uw2 unl:or ?uw3. - # Label(s) / URI + # --old --- FILTER NOT EXISTS { ?net2 net:class2 ?mainEntity }. + # --old --- FILTER NOT EXISTS { ?subEntity23Uri owl:equivalentClass ?c }. + # Label(s) / URI (for classes) ?uw2 rdfs:label ?uw2Label. ?uw3 rdfs:label ?uw3Label. BIND (strbefore(?uw2Label, '(') AS ?concept2) @@ -141,8 +154,9 @@ WHERE { 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 }. + # Label(s) / URI (for instance) + BIND (concat(?s1, '_', ?mainInstance) AS ?s6). + BIND (uri(?s6) AS ?mainInstanceUri). }""" ; sh:order "203"^^xsd:decimal ; . @@ -222,10 +236,14 @@ 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 +# -- Add Entity class / instance in System Ontology CONSTRUCT { + # Classification ?mainEntityUri rdfs:subClassOf ?entityUri. ?mainEntityUri rdfs:label ?mainEntity. + # Instantiation + ?mainInstanceUri a ?mainEntityUri. + ?mainInstanceUri rdfs:label ?mainInstance. } WHERE { # net1: entity @@ -233,16 +251,20 @@ WHERE { ?net1 net:type net:entity. ?net1 net:entityClass ?entityClass. ?net1 net:concept ?mainEntity. - # Label(s) / URI + ?net1 net:entityInstance ?mainInstance. + # Filter: entity not present in a class list + FILTER NOT EXISTS { ?net2 net:class2 ?mainEntity} + # Label(s) / URI (for classes) cprm:Config_Parameters cprm:baseURI ?baseURI. fprm:System_Ontology fprm:frameURI ?frameURI. - fprm:System_Entity rdfs:label ?entityLabel. + # -- old --- 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:class2 ?mainEntity} + # Label(s) / URI (for instance) + BIND (concat(?s1, '_', ?mainInstance) AS ?s3). + BIND (uri(?s3) AS ?mainInstanceUri). }""" ; sh:order "201"^^xsd:decimal ; . @@ -261,10 +283,13 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#> # -- Add Entity classes in System Ontology CONSTRUCT { - # -- old --- ?mainEntityUri rdfs:subClassOf ?entityUri. + # Classification ?subEntityUri rdfs:subClassOf ?mainEntityUri. - # -- old --- ?mainEntityUri rdfs:label ?mainEntity. ?subEntityUri rdfs:label ?subEntity. + # -- old --- ?mainEntityUri rdfs:subClassOf ?entityUri. + # -- old --- ?mainEntityUri rdfs:label ?mainEntity. + # Instantiation (extension) + ?mainInstanceUri rdf:type ?subEntityUri. } WHERE { # net1: entity class list @@ -272,8 +297,10 @@ WHERE { ?net1 net:type net:entity_class_list. ?net1 net:entityClass ?entityClass. ?net1 net:class1 ?mainEntity. - ?net1 net:class2 ?subEntity. - # Label(s) / URI + ?net1 net:class2 ?subEntity. + ?net1 net:entityInstance ?mainInstance. + # Filter -- old --- FILTER NOT EXISTS { ?net2 net:class2 ?mainEntity} + # Label(s) / URI (for classes) # -- old --- BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity). # -- old --- cprm:Config_Parameters cprm:baseURI ?baseURI. fprm:System_Ontology fprm:frameURI ?frameURI. @@ -284,8 +311,9 @@ WHERE { # -- old --- BIND (uri( ?s1) AS ?entityUri). BIND (uri(?s2) AS ?mainEntityUri). BIND (uri(?s3) AS ?subEntityUri). - # Filter - # -- old --- FILTER NOT EXISTS { ?net2 net:class2 ?mainEntity} + # Label(s) / URI (for instance) + BIND (concat(?s1, '_', ?mainInstance) AS ?s4). + BIND (uri(?s4) AS ?mainInstanceUri). }""" ; sh:order "202"^^xsd:decimal ; . @@ -313,6 +341,20 @@ WHERE { } """ ; sh:order "001"^^xsd:decimal ; . +cts:classification + rdf:type owl:Class ; + rdf:type sh:NodeShape ; + rdfs:label "generation" ; + rdfs:subClassOf cts:generation ; + 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:classification_1 + rdf:type cts:classification ; + rdfs:label "classification 1" ; +. cts:compose-entity-modlist-1 rdf:type sh:SPARQLRule ; sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#> @@ -339,6 +381,7 @@ CONSTRUCT { ?newNet net:class1 ?mainEntity. ?newNet net:class2 ?subEntity2. ?newNet net:class2 ?subEntity3. + ?newNet net:entityInstance ?instanceName. } WHERE { # net1: entity @@ -348,6 +391,7 @@ WHERE { ?net1 net:node ?uw1. ?net1 net:entityClass ?entityClass. ?net1 net:concept ?mainEntity. + ?net1 net:entityInstance ?instanceName. # net2: complement modList ?net2 a net:Instance. ?net2 net:type net:complement_mod_list. @@ -408,6 +452,7 @@ CONSTRUCT { ?newNet net:class1 ?mainEntity. ?newNet net:class2 ?subEntity2. ?newNet net:class2 ?subEntity3. + ?newNet net:entityInstance ?instanceName. } WHERE { # net1: agent @@ -417,6 +462,7 @@ WHERE { ?net1 net:node ?uw1. ?net1 net:entityClass ?entityClass1. ?net1 net:concept ?mainEntity. + ?net1 net:entityInstance ?instanceName. # net2: entity modList ?net2 a net:Instance. ?net2 net:type net:entity_mod_list. @@ -480,6 +526,7 @@ CONSTRUCT { ?newNet net:class1 ?mainEntity. ?newNet net:class2 ?subEntity2. ?newNet net:class2 ?subEntity3. + ?newNet net:entityInstance ?instanceName. } WHERE { # net1: agent @@ -489,6 +536,7 @@ WHERE { ?net1 net:node ?uw1. ?net1 net:entityClass ?entityClass1. ?net1 net:concept ?mainEntity. + ?net1 net:entityInstance ?instanceName. # net2: entity modList ?net2 a net:Instance. ?net2 net:type net:entity_mod_list. @@ -591,6 +639,49 @@ cts:entity_extraction_1 rdf:type cts:entity_extraction ; rdfs:label "entity extraction 1" ; . +cts:extend-instantiation-to-subclasses + rdf:type sh:SPARQLRule ; + rdfs:label "Extend Instantiatiation to Entity SubClasses" ; + 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 { + ?mainInstanceUri a ?mainEntityUri. + ?mainInstanceUri a ?subEntityUri. + ?mainInstanceUri rdfs:label ?mainInstance. +} +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. + ?net1 net:entityInstance ?mainInstance. + # 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 (concat(?s1, '_', ?subEntity) AS ?s3). + BIND (concat(?s1, '_', ?mainInstance) AS ?s4). + BIND (uri( ?s1) AS ?entityUri). + BIND (uri(?s2) AS ?mainEntityUri). + BIND (uri(?s3) AS ?subEntityUri). + BIND (uri(?s4) AS ?mainInstanceUri). +}""" ; + sh:order "302"^^xsd:decimal ; +. cts:extend-list-of-entity-classes--old rdf:type sh:SPARQLRule ; sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#> @@ -681,14 +772,6 @@ cts:generation 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 ; @@ -731,6 +814,47 @@ WHERE { }""" ; sh:order "111"^^xsd:decimal ; . +cts:instantiate-entity-classes + rdf:type sh:SPARQLRule ; + rdfs:label "Instantiate 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 { + ?mainInstanceUri a ?mainEntityUri. + ?mainInstanceUri rdfs:label ?mainInstance. +} +WHERE { + # net1: entity + ?net1 a net:Instance. + ?net1 net:type net:entity. + ?net1 net:entityClass ?entityClass. + ?net1 net:concept ?mainEntity. + ?net1 net:entityInstance ?mainInstance. + # 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 (concat(?s1, '_', ?mainInstance) AS ?s3). + BIND (uri( ?s1) AS ?entityUri). + BIND (uri(?s2) AS ?mainEntityUri). + BIND (uri(?s3) AS ?mainInstanceUri). + # Filter: entity not present in a class list + FILTER NOT EXISTS { ?net2 net:class2 ?mainEntity} +}""" ; + sh:order "301"^^xsd:decimal ; +. cts:instantiate-entity-net rdf:type sh:SPARQLRule ; sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#> @@ -764,11 +888,18 @@ WHERE { # -- 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). + BIND (concat(?concept1, '_instance') AS ?instanceName). }""" ; sh:order "102"^^xsd:decimal ; . +cts:instantiation + rdf:type owl:Class ; + rdf:type sh:NodeShape ; + rdfs:label "instantiation" ; + rdfs:subClassOf cts:generation ; + sh:rule cts:extend-instantiation-to-subclasses ; + sh:rule cts:instantiate-entity-classes ; +. cts:link-to-scope-entry rdf:type sh:SPARQLRule ; sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>