From c76a9c7f7d5041914ec28a363be31bbc76b11f15 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?=
 <aurelien.lamercerie@laposte.net>
Date: Wed, 17 Nov 2021 23:42:33 +0100
Subject: [PATCH] Fix bug in CTS: compute domain/range for atom without
 instance

---
 config/transduction-schemes.ttl | 20 ++++++++++++++------
 prepare_work_data.py            |  2 ++
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/config/transduction-schemes.ttl b/config/transduction-schemes.ttl
index 4d86869f..c5f59723 100644
--- a/config/transduction-schemes.ttl
+++ b/config/transduction-schemes.ttl
@@ -171,7 +171,9 @@ WHERE {
    ?net1 a net:Instance.
    ?net1 net:type net:relation.
    ?net1 net:has_structure ?req.
-   ?net1 net:has_node ?uw1.
+   # -- 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.
@@ -181,9 +183,11 @@ WHERE {
    # condition: agt(net1, net2)
    ?uw1 unl:agt ?uw2.
    # Possible Domain
-   ?sourceObject net:has_instance ?sourceInstance.
+   { ?sourceObject net:has_concept ?domainClass. }
+   UNION
+   { ?sourceObject net:has_instance ?sourceInstance.
    ?anySourceObject net:has_instance ?sourceInstance.
-   ?anySourceObject net:has_concept ?domainClass.	
+   ?anySourceObject net:has_concept ?domainClass. }	
 }""" ;
   sh:order 2.42 ;
 .
@@ -212,7 +216,9 @@ WHERE {
    ?net1 a net:Instance.
    ?net1 net:type net:relation.
    ?net1 net:has_structure ?req.
-   ?net1 net:has_node ?uw1.
+   # -- 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.
@@ -222,9 +228,11 @@ WHERE {
    # condition: agt(net1, net2)
    ?uw1 (unl:obj|unl:res) ?uw2.
    # Possible Domain
-   ?targetObject net:has_instance ?targetObjectInstance.
+   { ?targetObject net:has_concept ?rangeClass. }
+   UNION
+   { ?targetObject net:has_instance ?targetObjectInstance.
    ?allTargetObject net:has_instance ?targetObjectInstance.
-   ?allTargetObject net:has_concept ?rangeClass.	  
+   ?allTargetObject net:has_concept ?rangeClass. }	  
 }""" ;
   sh:order 2.42 ;
 .
diff --git a/prepare_work_data.py b/prepare_work_data.py
index 3e914c96..ef9fd076 100644
--- a/prepare_work_data.py
+++ b/prepare_work_data.py
@@ -40,6 +40,7 @@ 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/"
@@ -212,6 +213,7 @@ if __name__ == '__main__':
     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-40e', target_ref)
     #run(corpus_ERTMS, 'Corpus-ERTMS', target_ref)
     #run(corpus_PEV, 'Corpus-PEV', target_ref)
-- 
GitLab