diff --git a/CHANGELOG b/CHANGELOG index 029fdce916217331a7ea173927acb1cb55319f24..0831acebdad1e637d8f6a75b93fc76bb6c7d1181 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,19 +5,29 @@ All notable changes to this project will be documented in this file. ------------------------------------------------------------------------------- -## [0.2.0] - 2021-09-28 +## [0.2.0] - 2021-10-19 DGA Demo 1 ### Added +- CTS to define URIs in net objects (net: Object) +- Generic CTS to generate atom classes and instances +- Generic CTS to create mod list nets +- Generic CTS to generate relation properties ### Changed - Fusion of CTS for atom elements (entity, feature, verb, ...) - Addition of seeds in system ontology -- Abandonment of parameter ontology for frame ontologies +- Abandonment of parameter ontology for frame ontologies +- Shapes refactoring (preprocessing rules to dispatch shaclRule) +- Update CTS to improve composition of atom and list + +### Fix +- Fix bug in state property generation +- Patch for DGA demo in generation shapes ------------------------------------------------------------------------------- -## [0.1.3] - 2021-09-17 Demo CS 2 +## [0.1.3] - 2021-09-17 CS Demo 2 ### Added - Relation between classes/instances and requirements @@ -29,7 +39,7 @@ All notable changes to this project will be documented in this file. - Order of CTS (Compositional Transduction Schemes) -## [0.1.2] - 2021-09-08 Demo CS 1 +## [0.1.2] - 2021-09-08 CS Demo 1 ### Added - Transduction Schemes to extract Entity classes and instances diff --git a/config/semantic-net.ttl b/config/semantic-net.ttl index f488ec67b13ed4ba25e078acbe1895cabae83593..accde6225417bc1624fbd36e7eed179a73d51740 100644 --- a/config/semantic-net.ttl +++ b/config/semantic-net.ttl @@ -95,11 +95,6 @@ net:featureClass rdfs:label "feature class" ; rdfs:subPropertyOf net:objectValue ; . -net:has_actor - rdf:type rdf:Property ; - rdfs:label "has actor" ; - rdfs:subPropertyOf net:has_atom ; -. net:has_atom rdf:type rdf:Property ; rdfs:label "has atom" ; @@ -150,6 +145,11 @@ net:has_mother_class rdfs:label "has mother class" ; rdfs:subPropertyOf net:objectValue ; . +net:has_mother_class_uri + rdf:type rdf:Property ; + rdfs:label "parent class uri" ; + rdfs:subPropertyOf net:objectValue ; +. net:has_node rdf:type rdf:Property ; rdfs:label "UNL Node" ; @@ -185,6 +185,21 @@ net:has_possible_range rdfs:label "has possible range" ; rdfs:subPropertyOf net:has_object ; . +net:has_relation + rdf:type rdf:Property ; + rdfs:label "has relation" ; + rdfs:subPropertyOf net:has_relation_value ; +. +net:has_relation_value + rdf:type rdf:Property ; + rdfs:label "has relation value" ; + rdfs:subPropertyOf net:has_object ; +. +net:has_source + rdf:type rdf:Property ; + rdfs:label "has source" ; + rdfs:subPropertyOf net:has_relation_value ; +. net:has_structure rdf:type rdf:Property ; rdfs:label "Linguistic Structure (in UNL Document)" ; @@ -193,12 +208,7 @@ net:has_structure net:has_target rdf:type rdf:Property ; rdfs:label "has target" ; - rdfs:subPropertyOf net:has_atom ; -. -net:has_verb - rdf:type rdf:Property ; - rdfs:label "has verb" ; - rdfs:subPropertyOf net:has_atom ; + rdfs:subPropertyOf net:has_relation_value ; . net:list rdf:type owl:Class ; @@ -248,6 +258,16 @@ net:objectValue rdfs:label "valuations"@fr ; rdfs:subPropertyOf net:objectProperty ; . +net:relation + rdf:type owl:Class ; + rdfs:label "relation" ; + rdfs:subClassOf net:Type ; +. +net:relationOf + rdf:type rdf:Property ; + rdfs:label "relation of" ; + rdfs:subPropertyOf net:typeProperty ; +. net:state_property rdf:type owl:Class ; rdfs:label "stateProperty" ; diff --git a/config/transduction-schemes.ttl b/config/transduction-schemes.ttl index 3a11d2048ea3fc42063341d425e9e4a151ae48e1..2999954d85c4f240e7b77ec3c2f44e7071c9cb33 100644 --- a/config/transduction-schemes.ttl +++ b/config/transduction-schemes.ttl @@ -24,13 +24,7 @@ cts:Transduction_Schemes rdfs:label "Transduction Schemes" ; rdfs:subClassOf owl:Thing ; . -cts:abstraction_extraction - rdf:type owl:Class ; - rdf:type sh:NodeShape ; - rdfs:label "abstraction extension" ; - rdfs:subClassOf cts:net_extension ; -. -cts:add-conjunctive-entity-classes +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#> @@ -44,63 +38,51 @@ 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 +# -- Add disjunctive classes in Ontology CONSTRUCT { # Classification - ?subEntity23Uri rdfs:subClassOf ?mainEntityUri. - ?subEntity23Uri rdfs:label ?subEntity23. - ?subEntity23Uri sys:from_structure ?req. - ?subEntity23Uri + ?newClassUri rdfs:subClassOf ?parentUri. + ?newClassUri rdfs:label ?newClassLabel. + ?newClassUri sys:from_structure ?req. + ?newClassUri owl:equivalentClass [ a owl:Class ; - owl:intersectionOf ( ?subEntity2Uri ?subEntity3Uri ) ] . + owl:intersectionOf ( ?item1Uri ?item2Uri ) ] . # Instantiation (extension) - ?mainInstanceUri rdf:type ?subEntity23Uri. + ?instanceUri rdf:type ?newClassUri. } WHERE { # net1: Composite List ?net1 a net:Instance. ?net1 net:type net:list. ?net1 net:listOf net:composite. - # -- old --- ?net1 net:type net:entity_class_list. ?net1 net:has_structure ?req. - # -- old --- ?net1 net:entityClass ?entityClass. - ?net1 net:has_node ?uw2, ?uw3. + ?net1 net:has_node ?uw1, ?uw2. ?net1 net:has_parent ?parentObject. - ?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass - ?parentObject net:has_concept ?mainEntity. - ?net1 net:has_item ?subEntityObject2, ?subEntityObject3. - ?subEntityObject2 net:concept ?subEntity2. - ?subEntityObject2 net:has_node ?uw2. - ?subEntityObject3 net:has_concept ?subEntity3. - ?subEntityObject3 net:has_node ?uw3. - ?subEntityObject3 net:has_instance ?mainInstance. + ?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 - ?uw2 unl:and ?uw3. + ?uw1 unl:and ?uw2. # Label(s) / URI (for classes) + ?uw1 rdfs:label ?uw1Label. ?uw2 rdfs:label ?uw2Label. - ?uw3 rdfs:label ?uw3Label. + BIND (strbefore(?uw1Label, '(') AS ?concept1) BIND (strbefore(?uw2Label, '(') AS ?concept2) - BIND (strbefore(?uw3Label, '(') AS ?concept3) - BIND (concat(?concept2, '-or-', ?concept3) AS ?concept23) - BIND (concat(?concept23, '_', ?mainEntity) AS ?subEntity23). + 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, ?parentClass) 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). - # URI (for instance) - BIND (concat(?s1, '_', ?mainInstance) AS ?s6). - BIND (uri(?s6) AS ?mainInstanceUri). + BIND (concat(?frameURI, ?newClassLabel) AS ?s5). + BIND (uri(?s5) AS ?newClassUri). }""" ; - sh:order 3.4 ; + sh:order 3.23 ; . -cts:add-disjunctive-entity-classes +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#> @@ -114,65 +96,52 @@ 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 +# -- Add disjunctive classes in Ontology CONSTRUCT { # Classification - ?subEntity23Uri rdfs:subClassOf ?mainEntityUri. - ?subEntity23Uri rdfs:label ?subEntity23. - ?subEntity23Uri sys:from_structure ?req. - ?subEntity23Uri + ?newClassUri rdfs:subClassOf ?parentUri. + ?newClassUri rdfs:label ?newClassLabel. + ?newClassUri sys:from_structure ?req. + ?newClassUri owl:equivalentClass [ a owl:Class ; - owl:unionOf ( ?subEntity2Uri ?subEntity3Uri ) ] . + owl:unionOf ( ?item1Uri ?item2Uri ) ] . # Instantiation (extension) - ?mainInstanceUri rdf:type ?subEntity23Uri. + ?instanceUri rdf:type ?newClassUri. } WHERE { # net1: Composite List ?net1 a net:Instance. ?net1 net:type net:list. ?net1 net:listOf net:composite. - # -- old --- ?net1 net:type net:entity_class_list. ?net1 net:has_structure ?req. - # -- old --- ?net1 net:entityClass ?entityClass. - ?net1 net:has_node ?uw2, ?uw3. + ?net1 net:has_node ?uw1, ?uw2. ?net1 net:has_parent ?parentObject. - ?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass - ?parentObject net:has_concept ?mainEntity. - ?net1 net:has_item ?subEntityObject2, ?subEntityObject3. - ?subEntityObject2 net:has_concept ?subEntity2. - ?subEntityObject2 net:has_node ?uw2. - ?subEntityObject3 net:has_concept ?subEntity3. - ?subEntityObject3 net:has_node ?uw3. - ?subEntityObject3 net:has_instance ?mainInstance. + ?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 - ?uw2 unl:or ?uw3. + ?uw1 unl:or ?uw2. # Label(s) / URI (for classes) + ?uw1 rdfs:label ?uw1Label. ?uw2 rdfs:label ?uw2Label. - ?uw3 rdfs:label ?uw3Label. + BIND (strbefore(?uw1Label, '(') AS ?concept1) BIND (strbefore(?uw2Label, '(') AS ?concept2) - BIND (strbefore(?uw3Label, '(') AS ?concept3) - BIND (concat(?concept2, '-or-', ?concept3) AS ?concept23) - BIND (concat(?concept23, '_', ?mainEntity) AS ?subEntity23). + 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, ?parentClass) 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). - # URI (for instance) - BIND (concat(?s1, '_', ?mainInstance) AS ?s6). - BIND (uri(?s6) AS ?mainInstanceUri). + BIND (concat(?frameURI, ?newClassLabel) AS ?s5). + BIND (uri(?s5) AS ?newClassUri). }""" ; - sh:order 3.4 ; + sh:order 3.23 ; . -cts:add-event +cts:append-domain-to-relation-net 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#> @@ -184,66 +153,40 @@ 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. - # Instantiation !!! TODO !!! - # -- old --- ?mainInstanceUri a ?newEventUri. - # -- old --- ?mainInstanceUri rdfs:label ?mainInstance. - # -- old --- ?mainInstanceUri sys:from_structure ?req. - # Object Property - ?newEventObjectPropertyUri a owl:ObjectProperty. - ?newEventObjectPropertyUri rdfs:subPropertyOf ?eventObjectPropertyUri. - ?newEventObjectPropertyUri rdfs:label ?verbConcept. - # -- old --- ?newEventObjectPropertyUri rdfs:domain ?actorUri. - # -- old --- ?newEventObjectPropertyUri rdfs:range ?targetUri. - ?newEventObjectPropertyUri sys:from_structure ?req. - ?actorInstanceUri ?newEventObjectPropertyUri ?targetInstanceUri. +# -- 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 { - # net1: entity + # Relation Net (net1) ?net1 a net:Instance. - ?net1 net:type net:atom. - ?net1 net:atomOf sys:Event. + ?net1 net:type net:relation. ?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). + # -- 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 | unl:aoj ) ?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 3.1 ; + sh:order 2.42 ; . -cts:add-state-property +cts:append-range-to-relation-net 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#> @@ -255,118 +198,80 @@ 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. - # Instantiation !!! TODO !!! - # -- old --- ?mainInstanceUri a ?newStatePropertyUri. - # -- old --- ?mainInstanceUri rdfs:label ?mainInstance. - # -- old --- ?mainInstanceUri sys:from_structure ?req. - # Object Property - ?newStatePropertyObjectPropertyUri a owl:ObjectProperty. - ?newStatePropertyObjectPropertyUri rdfs:subPropertyOf ?statePropertyObjectPropertyUri. - ?newStatePropertyObjectPropertyUri rdfs:label ?verbConcept. - # -- old --- ?newStatePropertyObjectPropertyUri rdfs:domain ?actorUri. - # -- old --- ?newStatePropertyObjectPropertyUri rdfs:range ?targetUri. - ?newStatePropertyObjectPropertyUri sys:from_structure ?req. - ?actorInstanceUri ?newStatePropertyObjectPropertyUri ?targetInstanceUri. +# -- 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 { - # net1: state property + # Relation Net (net1) ?net1 a net:Instance. - ?net1 net:type net:atom. - ?net1 net:atomOf sys:State_Property. + ?net1 net:type net:relation. ?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:instanceUri ?actorInstanceUri. - ?net1 net:has_target ?targetObject1. - ?targetObject1 net:has_parent_class ?targetClass. - ?targetObject1 net:has_concept ?targetConcept. - ?targetObject1 net:has_instance ?targetInstance. - ?targetObject1 net:instanceUri ?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). - # URI (for instance) - # -- old --- BIND (concat( ?frameURI, ?eventClass) AS ?i1). - # -- old --- BIND (concat(?i1, '_', ?mainInstance) AS ?i2). - # -- old --- BIND (uri(?i2) AS ?mainInstanceUri). - # URI (for Entity classes) - # -- old --- fprm:System_Ontology fprm:frameURI ?frameURI. - # -- old --- BIND (concat( ?frameURI, ?actorClass) AS ?e1a). - # -- old --- BIND (concat(?e1a, '#', ?actorConcept) AS ?e1b). - # -- old --- BIND (concat(?e1a, '_', ?actorInstance) AS ?e1c). - # -- old --- BIND (uri(?e1a) AS ?actorClassUri). - # -- old --- BIND (uri(?e1b) AS ?actorUri). - # -- old --- BIND (uri(?e1c) AS ?actorInstanceUri). - # -- old --- BIND (concat( ?frameURI, ?targetClass) AS ?e2a). - # -- old --- BIND (concat(?e2a, '#', ?targetConcept) AS ?e2b). - # -- old --- BIND (concat(?e2a, '_', ?targetInstance) AS ?e2c). - # -- old --- BIND (uri(?e2a) AS ?targetClassUri). - # -- old --- BIND (uri(?e2b) AS ?targetUri). - # -- old --- BIND (uri(?e2c) AS ?targetInstanceUri). + # -- 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 3.1 ; + 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-entity-classes ; - sh:rule cts:add-disjunctive-entity-classes ; - sh:rule cts:add-event ; - sh:rule cts:add-state-property ; + 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-agt-verb-obj-as-simple-event ; - sh:rule cts:compose-aoj-verb-obj-as-simple-state-property ; 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-range-of-event-object-properties ; - sh:rule cts:compute-domain-range-of-state-property-object-properties ; + 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-instances-by-relation-property ; sh:rule cts:link-to-scope-entry ; sh:rule cts:specify-axis-of-atom-list-net ; -. -cts:batch_execution_1 - rdf:type cts:batch_execution ; - rdfs:label "batch execution 1" ; + 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 ; @@ -392,6 +297,18 @@ WHERE { } """ ; 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#> @@ -405,41 +322,27 @@ 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 Entity classes with feature relation +# -- Complement composite classes with feature relation CONSTRUCT { # Complement with feature relation - ?subEntityUri sys:has_feature ?featureUri. + ?compositeClassUri sys:has_feature ?featureUri. } WHERE { - # net1: entity class list + # net1: Composite List ?net1 a net:Instance. ?net1 net:type net:list. ?net1 net:listOf net:composite. - # -- old --- ?net1 net:entityClass ?entityClass. - ?net1 net:has_parent ?parentObject. - ?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass - ?net1 net:has_item ?subEntityObject. - ?subEntityObject net:has_concept ?subEntity. - ?subEntityObject net:has_feature ?featureObject. - # object: feature + # -- Item + ?net1 net:has_item ?itemObject. + ?itemObject net:has_class_uri ?compositeClassUri. + ?itemObject net:has_feature ?featureObject. + # -- Feature ?featureObject a net:Object. - ?featureObject net:objectType sys:Feature. - ?featureObject net:has_node ?FeatureUW. - ?featureObject net:has_parent_class ?featureClass. - ?featureObject net:has_concept ?featureConcept. - # URI: entity class - sys:Structure sys:has_frame_uri ?frameURI. - BIND (concat( ?frameURI, ?parentClass) AS ?c1). - BIND (concat(?c1, '#', ?subEntity) AS ?c2). - BIND (uri(?c2) AS ?subEntityUri). - # URI: feature class - BIND (concat( ?frameURI, ?featureClass) AS ?f1). - BIND (concat(?f1, '#', ?featureConcept) AS ?f2). - BIND (uri(?f2) AS ?featureUri). + ?featureObject net:has_class_uri ?featureUri. }""" ; - sh:order 3.3 ; + sh:order 3.22 ; . -cts:compose-agt-verb-obj-as-simple-event +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#> @@ -451,67 +354,79 @@ 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 Entity (agt), an action Verb and an object Entity (obj) to obtain an event -CONSTRUCT { - # Net: Event + +# -- 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:atom. - ?newNet net:atomOf sys:Event. + ?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: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. + ?newNet net:entityClass ?net1ParentClass. + ?newNet net:has_parent ?net1Object. + ?newNet net:has_item ?newObject. } WHERE { - # net1: verb + # net1: atom ?net1 a net:Instance. ?net1 net:type net:atom. - ?net1 net:atomOf sys:Verb. ?net1 net:has_structure ?req. ?net1 net:has_node ?uw1. - ?net1 net:has_atom ?verbObject. - # net2: entity (actor) + ?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:atom. - ?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. - ?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 + ?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. - # 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) + BIND (concat( ?net2Concept, '_', ?net1Concept) AS ?subConcept). + # URI (for Object) 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). + 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.41 ; + sh:order 2.32 ; . -cts:compose-aoj-verb-obj-as-simple-state-property +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#> @@ -523,189 +438,34 @@ 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 Entity (aoj), an action Verb and an object Entity (obj) / result Entity (res) to obtain a state property -CONSTRUCT { - # Net: State Property + +# -- Compose an atom net and an list net (with same item classes) +CONSTRUCT { + # Net: Composite List ?newNet a net:Instance. - ?newNet net:type net:atom. - ?newNet net:atomOf sys:State_Property. + ?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: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. + ?newNet net:entityClass ?net1ParentClass. + ?newNet net:has_parent ?net1Object. + ?newNet net:has_item ?net2Item. } WHERE { - # net1: verb + # net1: atom ?net1 a net:Instance. ?net1 net:type net:atom. - ?net1 net:atomOf sys:Verb. ?net1 net:has_structure ?req. ?net1 net:has_node ?uw1. - ?net1 net:has_atom ?verbObject. - # net2: entity (actor) + ?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:atom. - ?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. - ?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 2.41 ; -. -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. - BIND (concat( ?netURI, ?objectRef) 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:type net:list. + ?net2 net:listOf net:atom. ?net2 net:has_structure ?req. ?net2 net:has_node ?uw2, ?uw3. ?net2 net:has_item ?net2Item. @@ -746,26 +506,36 @@ 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:has_parent_class ?objectParentClass. + ?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 (concat( ?frameURI, ?objectParentClass) AS ?s1). - BIND (concat(?s1, '#', ?objectClass) AS ?s2). - BIND (uri( ?s1) AS ?parentClassUri). - BIND (uri(?s2) AS ?objectClassUri). + 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 3.01 ; + sh:order 2.91 ; . -cts:compute-domain-range-of-event-object-properties +cts:compute-domain-of-relation-property rdf:type sh:SPARQLRule ; - rdfs:label "compute-domain-range-of-object-properties" ; + 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#> @@ -777,24 +547,21 @@ 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 +# -- Compute Domain of Relation Property 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 + # update Relation Property: add domain + ?newPropertyUri rdfs:domain ?domainClassUri. } WHERE { - # net1: event + # Relation Net (net1) ?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: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 . + ?domainClass rdfs:label ?possibleDomainLabel1. FILTER ( NOT EXISTS { ?net1 net:has_possible_domain ?possibleDomainLabel2 . @@ -802,28 +569,13 @@ WHERE { ?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). + BIND (uri( ?domainClass) AS ?domainClassUri). }""" ; - sh:order 3.5 ; + sh:order 3.32 ; . -cts:compute-domain-range-of-state-property-object-properties +cts:compute-instance-uri-of-net-object rdf:type sh:SPARQLRule ; - rdfs:label "compute-domain-range-of-object-properties" ; + 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#> @@ -835,53 +587,27 @@ 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 +# -- Compute useful URI 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 + # Net Object URI + ?object net:has_instance_uri ?objectInstanceUri. } 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) + # 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. - 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). + BIND (concat( ?frameURI, ?parentClass) AS ?s1). + BIND (concat(?s1, '#', ?objectInstance) AS ?s2). + BIND (uri(?s2) AS ?objectInstanceUri). }""" ; - sh:order 3.5 ; + sh:order 2.92 ; . -cts:compute-instance-uri-of-net-object +cts:compute-property-uri-of-relation-object rdf:type sh:SPARQLRule ; - rdfs:label "compute-instance-uri-of-net-object" ; + 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#> @@ -896,23 +622,29 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#> # -- Compute useful URI CONSTRUCT { # Net Object URI - ?object net:has_instance_uri ?objectInstanceUri. + ?object net:has_property_uri ?objectPropertyUri. } WHERE { - # object + # Object of type Relation ?object a net:Object. - ?object net:has_parent_class ?objectParentClass. - ?object net:has_instance ?objectInstance. - # URI (for classes and instance) - sys:Structure sys:has_frame_uri ?frameURI. - BIND (concat( ?frameURI, ?objectParentClass) AS ?s1). - BIND (concat(?s1, '_', ?objectInstance) AS ?s3). - BIND (uri(?s3) AS ?objectInstanceUri). + ?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 3.02 ; + sh:order 2.91 ; . -cts:create-atom-net +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#> @@ -923,18 +655,57 @@ 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) + +# -- Compute Range of Relation Property 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 + # 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. @@ -944,10 +715,10 @@ CONSTRUCT { } WHERE { # Atom Description (from System Ontology) - ?targetClass rdfs:subClassOf* sys:Structure. - ?targetClass sys:has_mother_class ?atomMother. - ?targetClass sys:is_class ?atomClass. - ?targetClass sys:has_restriction ?restriction. + ?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. @@ -961,17 +732,83 @@ WHERE { # URI (for Atom Object) cprm:Config_Parameters cprm:netURI ?netURI. cprm:Config_Parameters cprm:objectRef ?objectRef. - BIND (concat( ?netURI, ?objectRef) AS ?o1). + 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. - BIND (concat( ?netURI, ?atomClass, '_') AS ?n1). + 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#> @@ -1015,9 +852,10 @@ WHERE { ?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, ?listLabel, '_', ?atomLabel, '_') AS ?s1). + BIND (concat( ?netURI, ?classReference, '-', ?listLabel, '-', ?atomLabel, '_') AS ?s1). BIND (concat(?s1, ?uw1Id) AS ?s2). BIND (uri(?s2) AS ?newNet). }""" ; @@ -1058,26 +896,12 @@ cts:dev_schemes rdf:type sh:NodeShape ; rdfs:label "dev schemes" ; rdfs:subClassOf cts:Transduction_Schemes ; -. -cts:entity_extraction - rdf:type owl:Class ; - rdf:type sh:NodeShape ; - rdfs:label "entity extraction" ; - rdfs:subClassOf cts:net_extension ; - sh:rule cts:compose-atom-with-list-by-mod-1 ; - sh:rule cts:compose-atom-with-list-by-mod-2 ; - sh:rule cts:create-atom-net ; - sh:rule cts:extend-atom-list-net ; - sh:rule cts:init-conjunctive-atom-list-net ; - sh:rule cts:instantiate-atom-net ; - sh:rule cts:instantiate-composite-in-list-by-extension-2 ; -. -cts:event_extraction - rdf:type owl:Class ; - rdf:type sh:NodeShape ; - rdfs:label "event extraction" ; - rdfs:subClassOf cts:net_extension ; - sh:rule cts:compose-agt-verb-obj-as-simple-event ; + 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 ; @@ -1116,12 +940,6 @@ WHERE { }""" ; sh:order 2.22 ; . -cts:feature_extraction - rdf:type owl:Class ; - rdf:type sh:NodeShape ; - rdfs:label "feature extraction" ; - rdfs:subClassOf cts:net_extension ; -. cts:generate-atom-class rdf:type sh:SPARQLRule ; rdfs:label "add-entity-classes" ; @@ -1136,7 +954,7 @@ 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 System Ontology +# -- Generate Atom Class in Target Ontology CONSTRUCT { # Classification ?newClassUri rdfs:subClassOf ?parentUri. @@ -1158,12 +976,6 @@ WHERE { ?net2 net:listOf net:composite. ?net2 net:has_item ?atomObject1. } - # URI: class - # -- old --- sys:Structure sys:has_frame_uri ?frameURI. - # -- old --- BIND (concat( ?frameURI, ?atomParentClass) AS ?s1). - # -- old --- BIND (concat(?s1, '#', ?atomConcept) AS ?s2). - # -- old --- BIND (uri( ?s1) AS ?parentUri). - # -- old --- BIND (uri(?s2) AS ?newClassUri). }""" ; sh:order 3.1 ; . @@ -1189,26 +1001,16 @@ CONSTRUCT { ?newInstanceUri sys:from_structure ?req. } WHERE { - # net1: entity + # net1: atom ?net1 a net:Instance. ?net1 net:type net:atom. - ?net1 net:atomOf sys:Entity. ?net1 net:has_structure ?req. ?net1 net:has_atom ?atomObject1. - ?atomObject1 net:has_parent_class ?atomParentClass. - ?atomObject1 net:has_concept ?atomConcept. + ?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} - # URI (for classes) - sys:Structure sys:has_frame_uri ?frameURI. - BIND (concat( ?frameURI, ?atomParentClass) AS ?s1). - BIND (concat(?s1, '#', ?atomConcept) AS ?s2). - BIND (uri( ?s1) AS ?parentUri). - BIND (uri(?s2) AS ?classUri). - # URI (for instance) - BIND (concat(?s1, '_', ?atomInstance) AS ?s3). - BIND (uri(?s3) AS ?newInstanceUri). }""" ; sh:order 3.1 ; . @@ -1225,7 +1027,7 @@ 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 System Ontology (from Composite List net) +# -- Add Composite Class in Ontology (from Composite List net) CONSTRUCT { # Classification ?newClassUri rdfs:subClassOf ?parentUri. @@ -1241,44 +1043,140 @@ WHERE { ?net1 net:type net:list. ?net1 net:listOf net:composite. ?net1 net:has_structure ?req. - # -- old --- ?net1 net:entityClass ?entityClass. - ?net1 net:has_parent ?parentObject. # -- old --- ?mainEntityObject. - ?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass. - ?parentObject net:has_concept ?parentConcept. # -- old --- ?mainEntity. + ?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_concept ?compositeConcept. #-- old --- ?subEntity - ?compositeObject net:has_instance ?compositeInstance. - # Filter -- old --- FILTER NOT EXISTS { ?net2 net:has_subClass ?mainEntity} + ?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. - BIND (concat( ?frameURI, ?parentClass) AS ?s1). - BIND (concat(?s1, '#', ?parentConcept) AS ?s2). - BIND (concat(?s1, '#', ?compositeConcept) AS ?s3). - BIND (uri(?s2) AS ?parentUri). # -- old --- ?mainEntityUri). - BIND (uri(?s3) AS ?newClassUri). # -- old --- ?subEntityUri). - # URI (for instance) - BIND (concat(?s1, '_', ?compositeInstance) AS ?s4). - BIND (uri(?s4) AS ?instanceUri). + 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.2 ; + 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-entity-classes ; - sh:rule cts:add-disjunctive-entity-classes ; - sh:rule cts:add-event ; - sh:rule cts:add-state-property ; + 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-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: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-instances-by-relation-property ; +. +cts:generation_dga_patch + 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-instances-by-relation-property ; . cts:init-conjunctive-atom-list-net rdf:type sh:SPARQLRule ; @@ -1486,6 +1384,42 @@ WHERE { }""" ; sh:order 2.342 ; . +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#> @@ -1520,23 +1454,27 @@ cts:net_extension 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:postprocessing - rdf:type owl:Class ; - rdf:type sh:NodeShape ; - 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:define-uw-id ; - sh:rule cts:link-to-scope-entry ; -. -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#> @@ -1547,37 +1485,612 @@ 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 + +# -- Add Verb class / instance in System Ontology CONSTRUCT { - # Update Atom List net (net1) - ?net1 net:listBy ?unlRel. + # 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 { - # 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: entity ?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: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 ; - rdf:type sh:NodeShape ; - rdfs:label "verb extraction" ; - rdfs:subClassOf cts:net_extension ; + ?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:old_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 0.33 ; +. +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-instances-by-relation-property ; + sh:rule cts:old_link-classes-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:old_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 ; . diff --git a/frame/system-ontology.ttl b/frame/system-ontology.ttl index 98dd10d1a35ab786a7811beaae7fe102ada1ba74..38d1694bd0142fcdcd6757cde9fd64f3abe42ea1 100644 --- a/frame/system-ontology.ttl +++ b/frame/system-ontology.ttl @@ -13,6 +13,7 @@ @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 sys-relation: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/relation/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <https://unsel.tetras-libre.fr/tenet/frame/system-ontology> @@ -25,6 +26,11 @@ sys:Climate_Policy rdfs:subClassOf sys:Structure ; sys:is_class "Climate_Policy" ; . +sys:Annotation + rdf:type rdf:Property ; + rdfs:label "structure property" ; + rdfs:subPropertyOf sys:Property ; +. sys:Environmental_Actor rdf:type owl:Class ; rdfs:label "physical"@en ; @@ -47,6 +53,27 @@ sys:Impact rdfs:subClassOf sys:Structure ; sys:is_class "Impact" ; . +sys:ObjectProperty + rdf:type rdf:Property ; + rdfs:label "Object Property" ; + rdfs:subPropertyOf sys:Property ; +. +sys:Property + rdf:type rdf:Property ; + rdfs:label "Property" ; + sys:has_reference "property" ; +. +sys:Relation + rdf:type rdf:Property ; + rdfs:label "system property" ; + rdfs:subPropertyOf sys:Property ; + sys:has_frame_uri "https://unsel.tetras-libre.fr/tenet/frame/system-ontology/relation/" ; +. +sys:Seed + rdf:type rdf:Property ; + rdfs:label "seed property" ; + rdfs:subPropertyOf sys:Property ; +. sys:Physical rdf:type owl:Class ; rdfs:label "physical"@en ; @@ -58,6 +85,7 @@ sys:Structure rdf:type owl:Class ; rdfs:label "System Ontology Structure" ; sys:has_frame_uri "https://unsel.tetras-libre.fr/tenet/frame/system-ontology/" ; + sys:has_reference "class" ; . sys:Verb rdf:type owl:Class ; @@ -65,6 +93,23 @@ sys:Verb rdfs:subClassOf sys:Structure ; sys:is_class "Verb" ; . +sys:abstract_thing + rdf:type owl:Class ; + rdfs:label "abstract thing"@en ; + rdfs:label "élément abstrait"@fr ; + rdfs:subClassOf sys:Abstraction ; + sys:has_mother_class sys:Abstraction ; + sys:has_restriction "icl>abstract_thing" ; + sys:is_class "abstract_thing" ; +. +sys:action + rdf:type rdf:Property ; + rdfs:label "action" ; + rdfs:subPropertyOf sys:Relation ; + sys:has_mother_property sys:action ; + sys:has_reference "action" ; + sys:has_restriction_on_class sys:action_verb ; +. sys:action_verb rdf:type owl:Class ; rdfs:label "action verb" ; @@ -121,22 +166,17 @@ sys:consumption sys:entityClassProperty rdf:type rdf:Property ; rdfs:label "entity property" ; - rdfs:subPropertyOf sys:classProperty ; + rdfs:subPropertyOf sys:ObjectProperty ; . sys:eventClassProperty rdf:type rdf:Property ; rdfs:label "event property" ; - rdfs:subPropertyOf sys:classProperty ; -. -sys:eventObjectProperty - rdf:type rdf:Property ; - rdfs:label "event object property" ; - rdfs:subPropertyOf sys:objectProperty ; + rdfs:subPropertyOf sys:ObjectProperty ; . sys:from_structure rdf:type rdf:Property ; rdfs:label "from structure" ; - rdfs:subPropertyOf sys:classProperty ; + rdfs:subPropertyOf sys:ObjectProperty ; . sys:green_capex rdf:type owl:Class ; @@ -159,36 +199,58 @@ sys:has_feature sys:has_frame_base_uri rdf:type rdf:Property ; rdfs:label "has frame base uri" ; - rdfs:subPropertyOf sys:seedProperty ; + rdfs:subPropertyOf sys:Seed ; sys:has_frame_base_uri "https://unsel.tetras-libre.fr/tenet/frame/system-ontology/" ; . sys:has_frame_uri rdf:type rdf:Property ; rdfs:label "has frame uri" ; - rdfs:subPropertyOf sys:structureProperty ; + rdfs:subPropertyOf sys:Annotation ; . sys:has_mother_class rdf:type rdf:Property ; rdfs:label "has mother class" ; rdfs:range owl:Thing ; - rdfs:subPropertyOf sys:seedProperty ; - sys:has_mother_class "Entity" ; - sys:has_restriction "icl>administrator" ; - sys:has_restriction "icl>operator" ; - sys:has_restriction "icl>person" ; - sys:is_class "agent" ; + rdfs:subPropertyOf sys:Seed ; +. +sys:has_mother_property + rdf:type rdf:Property ; + rdfs:label "has mother property" ; + rdfs:range rdf:Property ; + rdfs:subPropertyOf sys:Seed ; . sys:has_object_property rdf:type rdf:Property ; rdfs:label "has object property" ; - rdfs:subPropertyOf sys:seedProperty ; + rdfs:subPropertyOf sys:Seed ; sys:has_object_property "eventObjectProperty" ; sys:is_class "Event" ; . +sys:has_reference + rdf:type rdf:Property ; + rdfs:label "is property" ; + rdfs:subPropertyOf sys:Seed ; +. sys:has_restriction rdf:type rdf:Property ; rdfs:label "has restriction" ; - rdfs:subPropertyOf sys:seedProperty ; + rdfs:subPropertyOf sys:Seed ; +. +sys:has_restriction_on_class + rdf:type rdf:Property ; + rdfs:label "has restriction on class" ; + rdfs:range owl:Thing ; + rdfs:subPropertyOf sys:Seed ; +. +sys:has_restriction_on_unl_relation_source + rdf:type rdf:Property ; + rdfs:label "has restriction on unl relation source" ; + rdfs:subPropertyOf sys:Seed ; +. +sys:has_restriction_on_unl_relation_target + rdf:type rdf:Property ; + rdfs:label "has restriction on unl relation target" ; + rdfs:subPropertyOf sys:Seed ; . sys:has_target rdf:type rdf:Property ; @@ -203,9 +265,7 @@ sys:has_verb sys:is_class rdf:type rdf:Property ; rdfs:label "is class" ; - rdfs:subPropertyOf sys:seedProperty ; - sys:has_object_property "statePropertyObjectProperty" ; - sys:is_class "State_Property" ; + rdfs:subPropertyOf sys:Seed ; . sys:matter rdf:type owl:Class ; @@ -229,23 +289,18 @@ sys:phenomenon sys:has_restriction "icl>physical_phenomenon" ; sys:is_class "place" ; . -sys:seedProperty - rdf:type rdf:Property ; - rdfs:label "seed property" ; -. -sys:statePropertyObjectProperty - rdf:type rdf:Property ; - rdfs:label "state property object property" ; - rdfs:subPropertyOf sys:objectProperty ; -. -sys:structureProperty +sys:stateProperty rdf:type rdf:Property ; - rdfs:label "structure property" ; + rdfs:label "state property" ; + rdfs:subPropertyOf sys:Relation ; + sys:has_mother_property sys:stateProperty ; + sys:has_reference "stateProperty" ; + sys:has_restriction_on_class sys:attributive_verb ; . sys:verbClassProperty rdf:type rdf:Property ; rdfs:label "verb property" ; - rdfs:subPropertyOf sys:classProperty ; + rdfs:subPropertyOf sys:ObjectProperty ; . sys:verbType rdf:type rdf:Property ; diff --git a/prepare_work_data.py b/prepare_work_data.py index 27fb1f250ed706a0695ff15c479117d44165ff35..6b546ed4c65d8e3e9c2fbed1d84b0f0e3ad4a8b5 100644 --- a/prepare_work_data.py +++ b/prepare_work_data.py @@ -34,15 +34,13 @@ schema_file = "unl-rdf-schema.ttl" semantic_net_file = "semantic-net.ttl" cts_file = "transduction-schemes.ttl" c_param_file = "config-parameters.ttl" -# -- old --- req_onto_file = "requirement" + ONTO_FILE -# -- old --- sys_onto_file = "system" + ONTO_FILE -# -- old --- f_param_file = "ontology-parameters.ttl" # Dev Tests base_uri = "https://unsel.tetras-libre.fr/tenet/working" req_100 = "CCTP-SRSA-IP-20210831-R100/" req_200 = "CCTP-SRSA-IP-20210831-R200/" req_300 = "CCTP-SRSA-IP-20210831-R300/" +req_1100 = "CCTP-SRSA-IP-20210831-R1100/" corpus_40 = "CCTP-SRSA-IP-20210831/" corpus_ERTMS = "ERTMS/" corpus_PEV = "PEV-RSE-Approach/" @@ -155,18 +153,23 @@ def finalize_export_file(export_file): with open(export_file, "wt") as file: x = x.replace( "@prefix sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> .", - """@prefix sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> . -@prefix sys-Event: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/Event#> . -@prefix sys-event: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/eventObjectProperty#> . -@prefix sys-State_Property: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/State_Property#> . -@prefix sys-stateProperty: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/statePropertyObjectProperty#> . -@prefix sys-abstract_thing: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/abstract_thing#> . -@prefix sys-action_verb: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/action_verb#> . -@prefix sys-agent: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/agent#> . -@prefix sys-attributive_verb: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/attributive_verb#> . -@prefix sys-component: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/component#> . -@prefix sys-message: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/message#> . -@prefix sys-place: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/place#> .""") + """ + @prefix sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> . + @prefix sys-class: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/class/> . + @prefix sys-property: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/property/> . + @prefix sys-relation: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/relation/> . + @prefix sys-Event: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/Event#> . + @prefix sys-event: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/eventObjectProperty#> . + @prefix sys-State_Property: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/State_Property#> . + @prefix sys-stateProperty: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/statePropertyObjectProperty#> . + @prefix sys-abstract_thing: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/abstract_thing#> . + @prefix sys-action_verb: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/action_verb#> . + @prefix sys-agent: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/agent#> . + @prefix sys-attributive_verb: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/attributive_verb#> . + @prefix sys-component: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/component#> . + @prefix sys-message: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/message#> . + @prefix sys-place: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/place#> . + """) file.write(x) #============================================================================== @@ -207,12 +210,13 @@ def run(corpus, source_ref, target_ref): if __name__ == '__main__': target_ref = "system" #target_ref = "environment" - #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(req_100, 'R100f', target_ref) + run(req_200, 'R200f', target_ref) + run(req_300, 'R300f', target_ref) + run(req_1100, 'R1100f', target_ref) + run(corpus_40, 'Corpus-CCTP-40f', target_ref) #run(corpus_ERTMS, 'Corpus-ERTMS', target_ref) - run(corpus_PEV, 'Corpus-PEV', target_ref) + #run(corpus_PEV, 'Corpus-PEV', target_ref)