Skip to content
Snippets Groups Projects
Commit c6036fee authored by Aurélien Lamercerie's avatar Aurélien Lamercerie
Browse files

CTS Update: use of computed URIs for the generation of disjunctive/conjunctive classes

parent 78937c74
No related branches found
No related tags found
No related merge requests found
...@@ -30,7 +30,7 @@ cts:abstraction_extraction ...@@ -30,7 +30,7 @@ cts:abstraction_extraction
rdfs:label "abstraction extension" ; rdfs:label "abstraction extension" ;
rdfs:subClassOf cts:net_extension ; rdfs:subClassOf cts:net_extension ;
. .
cts:add-conjunctive-entity-classes cts:add-conjunctive-classes-from-list-net
rdf:type sh:SPARQLRule ; rdf:type sh:SPARQLRule ;
rdfs:label "add-conjunctive-entity-classes" ; rdfs:label "add-conjunctive-entity-classes" ;
sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#> sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
...@@ -44,63 +44,51 @@ PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#> ...@@ -44,63 +44,51 @@ PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#> PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Add Disjunctive Entity classes in System Ontology # -- Add disjunctive classes in Ontology
CONSTRUCT { CONSTRUCT {
# Classification # Classification
?subEntity23Uri rdfs:subClassOf ?mainEntityUri. ?newClassUri rdfs:subClassOf ?parentUri.
?subEntity23Uri rdfs:label ?subEntity23. ?newClassUri rdfs:label ?newClassLabel.
?subEntity23Uri sys:from_structure ?req. ?newClassUri sys:from_structure ?req.
?subEntity23Uri ?newClassUri
owl:equivalentClass [ a owl:Class ; owl:equivalentClass [ a owl:Class ;
owl:intersectionOf ( ?subEntity2Uri ?subEntity3Uri ) ] . owl:intersectionOf ( ?item1Uri ?item2Uri ) ] .
# Instantiation (extension) # Instantiation (extension)
?mainInstanceUri rdf:type ?subEntity23Uri. ?instanceUri rdf:type ?newClassUri.
} }
WHERE { WHERE {
# net1: Composite List # net1: Composite List
?net1 a net:Instance. ?net1 a net:Instance.
?net1 net:type net:list. ?net1 net:type net:list.
?net1 net:listOf net:composite. ?net1 net:listOf net:composite.
# -- old --- ?net1 net:type net:entity_class_list.
?net1 net:has_structure ?req. ?net1 net:has_structure ?req.
# -- old --- ?net1 net:entityClass ?entityClass. ?net1 net:has_node ?uw1, ?uw2.
?net1 net:has_node ?uw2, ?uw3.
?net1 net:has_parent ?parentObject. ?net1 net:has_parent ?parentObject.
?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass ?parentObject net:has_class_uri ?parentUri.
?parentObject net:has_concept ?mainEntity. ?parentObject net:has_instance_uri ?instanceUri.
?net1 net:has_item ?subEntityObject2, ?subEntityObject3. ?parentObject net:has_concept ?parentConcept.
?subEntityObject2 net:concept ?subEntity2. ?net1 net:has_item ?itemObject1, ?itemObject2.
?subEntityObject2 net:has_node ?uw2. ?itemObject1 net:has_class_uri ?item1Uri.
?subEntityObject3 net:has_concept ?subEntity3. ?itemObject1 net:has_node ?uw1.
?subEntityObject3 net:has_node ?uw3. ?itemObject2 net:has_class_uri ?item2Uri.
?subEntityObject3 net:has_instance ?mainInstance. ?itemObject2 net:has_node ?uw2.
# extension: disjunction of UW # extension: disjunction of UW
?uw2 unl:and ?uw3. ?uw1 unl:and ?uw2.
# Label(s) / URI (for classes) # Label(s) / URI (for classes)
?uw1 rdfs:label ?uw1Label.
?uw2 rdfs:label ?uw2Label. ?uw2 rdfs:label ?uw2Label.
?uw3 rdfs:label ?uw3Label. BIND (strbefore(?uw1Label, '(') AS ?concept1)
BIND (strbefore(?uw2Label, '(') AS ?concept2) BIND (strbefore(?uw2Label, '(') AS ?concept2)
BIND (strbefore(?uw3Label, '(') AS ?concept3) BIND (concat(?concept1, '-or-', ?concept2) AS ?disjunctiveConcept)
BIND (concat(?concept2, '-or-', ?concept3) AS ?concept23) BIND (concat(?disjunctiveConcept, '_', ?parentConcept) AS ?newClassLabel).
BIND (concat(?concept23, '_', ?mainEntity) AS ?subEntity23).
# URI (for classes) # URI (for classes)
sys:Structure sys:has_frame_uri ?frameURI. sys:Structure sys:has_frame_uri ?frameURI.
BIND (concat( ?frameURI, ?parentClass) AS ?s1). # -- old --- BIND (concat( ?frameURI, ?parentClass) AS ?s1). BIND (concat(?frameURI, ?newClassLabel) AS ?s5).
BIND (concat(?frameURI, ?mainEntity) AS ?s2). # -- old --- BIND (concat(?s1, '#', ?mainEntity) AS ?s2). BIND (uri(?s5) AS ?newClassUri).
BIND (concat(?frameURI, ?subEntity2) AS ?s3). # -- old --- BIND (concat(?s1, '#', ?subEntity2) AS ?s3).
BIND (concat(?frameURI, ?subEntity3) AS ?s4). # -- old --- BIND (concat(?s1, '#', ?subEntity3) AS ?s4).
BIND (concat(?frameURI, ?subEntity23) AS ?s5). # -- old --- 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).
}""" ; }""" ;
sh:order 3.4 ; sh:order 3.23 ;
. .
cts:add-disjunctive-entity-classes cts:add-disjunctive-classes-from-list-net
rdf:type sh:SPARQLRule ; rdf:type sh:SPARQLRule ;
rdfs:label "add-disjunctive-entity-classes" ; rdfs:label "add-disjunctive-entity-classes" ;
sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#> sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
...@@ -114,61 +102,49 @@ PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#> ...@@ -114,61 +102,49 @@ PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#> PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Add Disjunctive Entity classes in System Ontology # -- Add disjunctive classes in Ontology
CONSTRUCT { CONSTRUCT {
# Classification # Classification
?subEntity23Uri rdfs:subClassOf ?mainEntityUri. ?newClassUri rdfs:subClassOf ?parentUri.
?subEntity23Uri rdfs:label ?subEntity23. ?newClassUri rdfs:label ?newClassLabel.
?subEntity23Uri sys:from_structure ?req. ?newClassUri sys:from_structure ?req.
?subEntity23Uri ?newClassUri
owl:equivalentClass [ a owl:Class ; owl:equivalentClass [ a owl:Class ;
owl:unionOf ( ?subEntity2Uri ?subEntity3Uri ) ] . owl:unionOf ( ?item1Uri ?item2Uri ) ] .
# Instantiation (extension) # Instantiation (extension)
?mainInstanceUri rdf:type ?subEntity23Uri. ?instanceUri rdf:type ?newClassUri.
} }
WHERE { WHERE {
# net1: Composite List # net1: Composite List
?net1 a net:Instance. ?net1 a net:Instance.
?net1 net:type net:list. ?net1 net:type net:list.
?net1 net:listOf net:composite. ?net1 net:listOf net:composite.
# -- old --- ?net1 net:type net:entity_class_list.
?net1 net:has_structure ?req. ?net1 net:has_structure ?req.
# -- old --- ?net1 net:entityClass ?entityClass. ?net1 net:has_node ?uw1, ?uw2.
?net1 net:has_node ?uw2, ?uw3.
?net1 net:has_parent ?parentObject. ?net1 net:has_parent ?parentObject.
?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass ?parentObject net:has_class_uri ?parentUri.
?parentObject net:has_concept ?mainEntity. ?parentObject net:has_instance_uri ?instanceUri.
?net1 net:has_item ?subEntityObject2, ?subEntityObject3. ?parentObject net:has_concept ?parentConcept.
?subEntityObject2 net:has_concept ?subEntity2. ?net1 net:has_item ?itemObject1, ?itemObject2.
?subEntityObject2 net:has_node ?uw2. ?itemObject1 net:has_class_uri ?item1Uri.
?subEntityObject3 net:has_concept ?subEntity3. ?itemObject1 net:has_node ?uw1.
?subEntityObject3 net:has_node ?uw3. ?itemObject2 net:has_class_uri ?item2Uri.
?subEntityObject3 net:has_instance ?mainInstance. ?itemObject2 net:has_node ?uw2.
# extension: disjunction of UW # extension: disjunction of UW
?uw2 unl:or ?uw3. ?uw1 unl:or ?uw2.
# Label(s) / URI (for classes) # Label(s) / URI (for classes)
?uw1 rdfs:label ?uw1Label.
?uw2 rdfs:label ?uw2Label. ?uw2 rdfs:label ?uw2Label.
?uw3 rdfs:label ?uw3Label. BIND (strbefore(?uw1Label, '(') AS ?concept1)
BIND (strbefore(?uw2Label, '(') AS ?concept2) BIND (strbefore(?uw2Label, '(') AS ?concept2)
BIND (strbefore(?uw3Label, '(') AS ?concept3) BIND (concat(?concept1, '-or-', ?concept2) AS ?disjunctiveConcept)
BIND (concat(?concept2, '-or-', ?concept3) AS ?concept23) BIND (concat(?disjunctiveConcept, '_', ?parentConcept) AS ?newClassLabel).
BIND (concat(?concept23, '_', ?mainEntity) AS ?subEntity23).
# URI (for classes) # URI (for classes)
sys:Structure sys:has_frame_uri ?frameURI. sys:Structure sys:has_frame_uri ?frameURI.
BIND (concat( ?frameURI, ?parentClass) AS ?s1). # -- old --- BIND (concat( ?frameURI, ?parentClass) AS ?s1). BIND (concat(?frameURI, ?newClassLabel) AS ?s5).
BIND (concat(?frameURI, ?mainEntity) AS ?s2). # -- old --- BIND (concat(?s1, '#', ?mainEntity) AS ?s2). BIND (uri(?s5) AS ?newClassUri).
BIND (concat(?frameURI, ?subEntity2) AS ?s3). # -- old --- BIND (concat(?s1, '#', ?subEntity2) AS ?s3).
BIND (concat(?frameURI, ?subEntity3) AS ?s4). # -- old --- BIND (concat(?s1, '#', ?subEntity3) AS ?s4).
BIND (concat(?frameURI, ?subEntity23) AS ?s5). # -- old --- 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).
}""" ; }""" ;
sh:order 3.4 ; sh:order 3.23 ;
. .
cts:add-event cts:add-event
rdf:type sh:SPARQLRule ; rdf:type sh:SPARQLRule ;
...@@ -317,8 +293,8 @@ cts:batch_execution ...@@ -317,8 +293,8 @@ cts:batch_execution
rdf:type sh:NodeShape ; rdf:type sh:NodeShape ;
rdfs:label "batch execution" ; rdfs:label "batch execution" ;
rdfs:subClassOf cts:Transduction_Schemes ; rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:add-conjunctive-entity-classes ; sh:rule cts:add-conjunctive-classes-from-list-net ;
sh:rule cts:add-disjunctive-entity-classes ; sh:rule cts:add-disjunctive-classes-from-list-net ;
sh:rule cts:add-event ; sh:rule cts:add-event ;
sh:rule cts:add-state-property ; sh:rule cts:add-state-property ;
sh:rule cts:bypass-reification ; sh:rule cts:bypass-reification ;
...@@ -387,25 +363,26 @@ PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#> ...@@ -387,25 +363,26 @@ PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#> PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Complement Entity classes with feature relation # -- Complement composite classes with feature relation
CONSTRUCT { CONSTRUCT {
# Complement with feature relation # Complement with feature relation
?subEntityUri sys:has_feature ?featureUri. ?compositeClassUri sys:has_feature ?featureUri.
} }
WHERE { WHERE {
# net1: entity class list # net1: Composite List
?net1 a net:Instance. ?net1 a net:Instance.
?net1 net:type net:list. ?net1 net:type net:list.
?net1 net:listOf net:composite. ?net1 net:listOf net:composite.
# -- old --- ?net1 net:has_parent ?parentObject. # -- Item
# -- old --- ?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass
?net1 net:has_item ?itemObject. ?net1 net:has_item ?itemObject.
?itemObject net:has_class_uri ?subEntityUri. ?itemObject net:has_class_uri ?compositeClassUri.
# -- old --- ?itemObject net:has_concept ?subEntity.
?itemObject net:has_feature ?featureObject. ?itemObject net:has_feature ?featureObject.
# object: feature # -- Feature
?featureObject a net:Object. ?featureObject a net:Object.
?featureObject net:has_class_uri ?featureUri. ?featureObject net:has_class_uri ?featureUri.
# -- old --- ?itemObject net:has_concept ?subEntity.
# -- old --- ?net1 net:has_parent ?parentObject.
# -- old --- ?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass
# -- old --- ?featureObject net:objectType sys:Feature. # -- old --- ?featureObject net:objectType sys:Feature.
# -- old --- ?featureObject net:has_node ?featureUW. # -- old --- ?featureObject net:has_node ?featureUW.
# -- old --- ?featureObject net:has_parent_class ?featureClass. # -- old --- ?featureObject net:has_parent_class ?featureClass.
...@@ -420,7 +397,7 @@ WHERE { ...@@ -420,7 +397,7 @@ WHERE {
# -- old --- BIND (concat(?frameURI, ?featureConcept) AS ?f2). # -- old --- BIND (concat(?frameURI, ?featureConcept) AS ?f2).
# -- old --- BIND (uri(?f2) AS ?featureUri). # -- old --- BIND (uri(?f2) AS ?featureUri).
}""" ; }""" ;
sh:order 3.3 ; sh:order 3.22 ;
. .
cts:compose-agt-verb-obj-as-simple-event cts:compose-agt-verb-obj-as-simple-event
rdf:type sh:SPARQLRule ; rdf:type sh:SPARQLRule ;
...@@ -807,7 +784,7 @@ WHERE { ...@@ -807,7 +784,7 @@ WHERE {
BIND (concat(?o1, '#', ?verbConcept) AS ?o2). BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
BIND (uri( ?o2) AS ?newEventObjectPropertyUri). BIND (uri( ?o2) AS ?newEventObjectPropertyUri).
}""" ; }""" ;
sh:order 3.5 ; sh:order 3.3 ;
. .
cts:compute-domain-range-of-state-property-object-properties cts:compute-domain-range-of-state-property-object-properties
rdf:type sh:SPARQLRule ; rdf:type sh:SPARQLRule ;
...@@ -865,7 +842,7 @@ WHERE { ...@@ -865,7 +842,7 @@ WHERE {
BIND (concat(?o1, '#', ?verbConcept) AS ?o2). BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
BIND (uri( ?o2) AS ?objectPropertyUri). BIND (uri( ?o2) AS ?objectPropertyUri).
}""" ; }""" ;
sh:order 3.5 ; sh:order 3.3 ;
. .
cts:compute-instance-uri-of-net-object cts:compute-instance-uri-of-net-object
rdf:type sh:SPARQLRule ; rdf:type sh:SPARQLRule ;
...@@ -1215,9 +1192,9 @@ WHERE { ...@@ -1215,9 +1192,9 @@ WHERE {
?net1 net:has_structure ?req. ?net1 net:has_structure ?req.
?net1 net:has_parent ?parentObject. ?net1 net:has_parent ?parentObject.
?parentObject net:has_class_uri ?parentUri. ?parentObject net:has_class_uri ?parentUri.
?parentObject net:has_instance_uri ?instanceUri.
?net1 net:has_item ?compositeObject. ?net1 net:has_item ?compositeObject.
?compositeObject net:has_class_uri ?newClassUri. ?compositeObject net:has_class_uri ?newClassUri.
?compositeObject net:has_instance_uri ?instanceUri.
?compositeObject net:has_concept ?compositeConcept. ?compositeObject net:has_concept ?compositeConcept.
# -- old --- ?parentObject net:has_mother_class ?motherClass. # -- old --- ?parentObject net:has_mother_class ?motherClass.
# -- old --- ?parentObject net:has_parent_class ?parentClass. # -- old --- ?parentObject net:has_parent_class ?parentClass.
...@@ -1235,15 +1212,15 @@ WHERE { ...@@ -1235,15 +1212,15 @@ WHERE {
# -- old --- BIND (concat(?s1, '#', ?compositeInstance) AS ?s4). # -- old --- BIND (concat(?s1, '#', ?compositeInstance) AS ?s4).
# -- old --- BIND (uri(?s4) AS ?instanceUri). # -- old --- BIND (uri(?s4) AS ?instanceUri).
}""" ; }""" ;
sh:order 3.2 ; sh:order 3.21 ;
. .
cts:generation cts:generation
rdf:type owl:Class ; rdf:type owl:Class ;
rdf:type sh:NodeShape ; rdf:type sh:NodeShape ;
rdfs:label "generation" ; rdfs:label "generation" ;
rdfs:subClassOf cts:Transduction_Schemes ; rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:add-conjunctive-entity-classes ; sh:rule cts:add-conjunctive-classes-from-list-net ;
sh:rule cts:add-disjunctive-entity-classes ; sh:rule cts:add-disjunctive-classes-from-list-net ;
sh:rule cts:add-event ; sh:rule cts:add-event ;
sh:rule cts:add-state-property ; sh:rule cts:add-state-property ;
sh:rule cts:complement-composite-class ; sh:rule cts:complement-composite-class ;
......
...@@ -206,7 +206,7 @@ if __name__ == '__main__': ...@@ -206,7 +206,7 @@ if __name__ == '__main__':
#target_ref = "environment" #target_ref = "environment"
#run(req_100, 'R100b', target_ref) #run(req_100, 'R100b', target_ref)
#run(req_200, 'R200b', target_ref) #run(req_200, 'R200b', target_ref)
run(req_300, 'R300b', target_ref) run(req_300, 'R300c', target_ref)
run(corpus_40, 'Corpus-CCTP-40a', target_ref) run(corpus_40, 'Corpus-CCTP-40a', target_ref)
#run(corpus_ERTMS, 'Corpus-ERTMS', target_ref) #run(corpus_ERTMS, 'Corpus-ERTMS', target_ref)
#run(corpus_PEV, 'Corpus-PEV', target_ref) #run(corpus_PEV, 'Corpus-PEV', target_ref)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment