diff --git a/config/transduction-schemes.ttl b/config/transduction-schemes.ttl index 50420543329c864da32fc544297b8adb70251bae..f6ba5cf3e50ee7857b8ebf0d22471e2cdf0c4f8a 100644 --- a/config/transduction-schemes.ttl +++ b/config/transduction-schemes.ttl @@ -24,7 +24,7 @@ cts:Transduction_Schemes rdfs:label "Transduction Schemes" ; rdfs:subClassOf owl:Thing ; . -cts:add-disjunctive-entity-classes +cts:add-disjunctive-entity-classes-1 rdf:type sh:SPARQLRule ; rdfs:label "add-disjunctive-entity-classes" ; sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#> @@ -76,10 +76,113 @@ WHERE { BIND (uri(?s3) AS ?subEntity2Uri). BIND (uri(?s4) AS ?subEntity3Uri). BIND (uri(?s5) AS ?subEntity23Uri). + FILTER NOT EXISTS { ?net2 net:class2 ?mainEntity }. + #FILTER NOT EXISTS { ?subEntity23Uri owl:equivalentClass ?c }. }""" ; - sh:order "203"^^xsd:decimal ; + sh:order "204"^^xsd:decimal ; +. +cts:add-disjunctive-entity-classes-2 + 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. + # 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 ?subEntityConcept2. + # extension: disjunction of UW + ?uw2 unl:or ?uw3. + # Label(s) / URI + BIND (concat(?mainEntity1, '_', ?mainEntity2) AS ?mainEntity). + ?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) + BIND (concat(?concept2, '_', ?mainEntity1) AS ?subEntity2). + BIND (concat(?concept3, '_', ?mainEntity1) AS ?subEntity3). + BIND (concat(?concept23, '_', ?mainEntity1) 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). + FILTER ( ?mainEntity1 = ?subEntityConcept2 ). + #FILTER NOT EXISTS { ?subEntity23Uri owl:equivalentClass ?c }. +}""" ; + sh:order "205"^^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#> @@ -119,7 +222,7 @@ WHERE { BIND (uri(?s3) AS ?subEntityUri). FILTER NOT EXISTS { ?net2 net:class2 ?mainEntity} }""" ; - sh:order "201"^^xsd:decimal ; + sh:order "202"^^xsd:decimal ; . cts:bypass-reification rdf:type sh:SPARQLRule ; @@ -341,7 +444,7 @@ cts:entity_extraction_1 rdf:type cts:entity_extraction ; rdfs:label "entity extraction 1" ; . -cts:extend-entity-classes +cts:extend-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#> @@ -364,10 +467,16 @@ WHERE { ?net1 a net:Instance. ?net1 net:type net:entity_class_list. ?net1 net:entityClass ?entityClass. - ?net1 net:class1 ?mainEntity. - ?net1 net:class2 ?concept2. + ?net1 net:class1 ?mainEntity1. + ?net1 net:class2 ?subEntityConcept1. + # net2: entity class list + ?net2 a net:Instance. + ?net2 net:type net:entity_class_list. + ?net2 net:class1 ?mainEntity2. + ?net2 net:class2 ?subEntityConcept2. # Label(s) / URI - BIND (concat(?concept2, '_', ?mainEntity) AS ?subEntity). + 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. @@ -377,8 +486,9 @@ WHERE { BIND (uri( ?s1) AS ?entityUri). BIND (uri(?s2) AS ?mainEntityUri). BIND (uri(?s3) AS ?subEntityUri). + FILTER ( ?mainEntity1 = ?subEntityConcept2 ). }""" ; - sh:order "202"^^xsd:decimal ; + sh:order "203"^^xsd:decimal ; . cts:extend-mod-list rdf:type sh:SPARQLRule ; @@ -424,9 +534,11 @@ cts:generation rdf:type sh:NodeShape ; rdfs:label "generation" ; rdfs:subClassOf cts:Transduction_Schemes ; - sh:rule cts:add-disjunctive-entity-classes ; + sh:rule cts:add-disjunctive-entity-classes-1 ; + sh:rule cts:add-disjunctive-entity-classes-2 ; sh:rule cts:add-entity-classes ; - sh:rule cts:extend-entity-classes ; + sh:rule cts:add-list-of-entity-classes ; + sh:rule cts:extend-list-of-entity-classes ; . cts:generation_1 rdf:type cts:generation ;