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
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 +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 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). # -- old --- BIND (concat( ?frameURI, ?parentClass) AS ?s1).
BIND (concat(?frameURI, ?mainEntity) AS ?s2). # -- old --- BIND (concat(?s1, '#', ?mainEntity) AS ?s2).
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).
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,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 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). # -- old --- BIND (concat( ?frameURI, ?parentClass) AS ?s1).
BIND (concat(?frameURI, ?mainEntity) AS ?s2). # -- old --- BIND (concat(?s1, '#', ?mainEntity) AS ?s2).
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).
BIND (concat(?frameURI, ?newClassLabel) AS ?s5).
BIND (uri(?s5) AS ?newClassUri).
}""" ;
sh:order 3.4 ;
sh:order 3.23 ;
.
cts:add-event
rdf:type sh:SPARQLRule ;
......@@ -317,8 +293,8 @@ cts:batch_execution
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-conjunctive-classes-from-list-net ;
sh:rule cts:add-disjunctive-classes-from-list-net ;
sh:rule cts:add-event ;
sh:rule cts:add-state-property ;
sh:rule cts:bypass-reification ;
......@@ -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 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:has_parent ?parentObject.
# -- old --- ?parentObject net:has_parent_class ?parentClass. # -- old --- ?entityClass
# -- Item
?net1 net:has_item ?itemObject.
?itemObject net:has_class_uri ?subEntityUri.
# -- old --- ?itemObject net:has_concept ?subEntity.
?itemObject net:has_class_uri ?compositeClassUri.
?itemObject net:has_feature ?featureObject.
# object: feature
# -- Feature
?featureObject a net:Object.
?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:has_node ?featureUW.
# -- old --- ?featureObject net:has_parent_class ?featureClass.
......@@ -420,7 +397,7 @@ WHERE {
# -- old --- BIND (concat(?frameURI, ?featureConcept) AS ?f2).
# -- old --- BIND (uri(?f2) AS ?featureUri).
}""" ;
sh:order 3.3 ;
sh:order 3.22 ;
.
cts:compose-agt-verb-obj-as-simple-event
rdf:type sh:SPARQLRule ;
......@@ -807,7 +784,7 @@ WHERE {
BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
BIND (uri( ?o2) AS ?newEventObjectPropertyUri).
}""" ;
sh:order 3.5 ;
sh:order 3.3 ;
.
cts:compute-domain-range-of-state-property-object-properties
rdf:type sh:SPARQLRule ;
......@@ -865,7 +842,7 @@ WHERE {
BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
BIND (uri( ?o2) AS ?objectPropertyUri).
}""" ;
sh:order 3.5 ;
sh:order 3.3 ;
.
cts:compute-instance-uri-of-net-object
rdf:type sh:SPARQLRule ;
......@@ -1215,9 +1192,9 @@ WHERE {
?net1 net:has_structure ?req.
?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_class_uri ?newClassUri.
?compositeObject net:has_instance_uri ?instanceUri.
?compositeObject net:has_concept ?compositeConcept.
# -- old --- ?parentObject net:has_mother_class ?motherClass.
# -- old --- ?parentObject net:has_parent_class ?parentClass.
......@@ -1235,15 +1212,15 @@ WHERE {
# -- old --- BIND (concat(?s1, '#', ?compositeInstance) AS ?s4).
# -- old --- BIND (uri(?s4) AS ?instanceUri).
}""" ;
sh:order 3.2 ;
sh:order 3.21 ;
.
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-conjunctive-classes-from-list-net ;
sh:rule cts:add-disjunctive-classes-from-list-net ;
sh:rule cts:add-event ;
sh:rule cts:add-state-property ;
sh:rule cts:complement-composite-class ;
......
......
......@@ -206,7 +206,7 @@ if __name__ == '__main__':
#target_ref = "environment"
#run(req_100, 'R100b', 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_ERTMS, 'Corpus-ERTMS', 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 to comment