Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
Requirement Formalization Tool
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Thodoris Nestoridis
Requirement Formalization Tool
Commits
92968860
Commit
92968860
authored
May 19, 2022
by
Thodoris Nestoridis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add Select Ontology from Fuseki + minor changes
parent
930410c0
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
111 additions
and
44 deletions
+111
-44
add-groupboil.component.html
...app/components/add-groupboil/add-groupboil.component.html
+9
-0
add-groupboil.component.ts
...c/app/components/add-groupboil/add-groupboil.component.ts
+17
-0
main-details.component.html
...c/app/components/main-details/main-details.component.html
+2
-1
main-details.component.ts
...src/app/components/main-details/main-details.component.ts
+3
-0
boilerplate.model.ts
reqtool/ReqmanAngular11/src/app/models/boilerplate.model.ts
+1
-0
boilerplate.service.ts
...l/ReqmanAngular11/src/app/services/boilerplate.service.ts
+5
-0
main_req.py
reqtool/reqman/api/reqman/apps/reqtool/models/main_req.py
+1
-1
requirements.py
...ool/reqman/api/reqman/apps/reqtool/models/requirements.py
+14
-4
requirements.py
.../reqman/apps/reqtool/rest_api/serializers/requirements.py
+1
-1
fuseki.py
...eqman/api/reqman/apps/reqtool/rest_api/services/fuseki.py
+1
-1
inference.py
...an/api/reqman/apps/reqtool/rest_api/services/inference.py
+13
-11
parse_ontologies.py
...reqman/apps/reqtool/rest_api/services/parse_ontologies.py
+13
-20
urls.py
reqtool/reqman/api/reqman/apps/reqtool/rest_api/urls.py
+1
-0
main_req_views.py
.../api/reqman/apps/reqtool/rest_api/views/main_req_views.py
+4
-3
requirements_views.py
.../reqman/apps/reqtool/rest_api/views/requirements_views.py
+26
-2
No files found.
reqtool/ReqmanAngular11/src/app/components/add-groupboil/add-groupboil.component.html
View file @
92968860
...
...
@@ -20,6 +20,15 @@
<textarea
type=
"text"
class=
"form-control"
id=
"description"
required
[(
ngModel
)]="
groupboilerplate
.
description
"
name=
"description"
></textarea>
</div>
<h4>
Select Ontology
</h4>
<mat-form-field
appearance=
"fill"
>
<mat-label>
Ontology File
</mat-label>
<mat-select
[(
ngModel
)]="
groupboilerplate
.
ontology_file
"
name=
"file"
required
>
<mat-option
*
ngFor=
"let food of ontologyList"
[
value
]="
food
[
0
]"
>
{{food[0]}}
</mat-option>
</mat-select>
</mat-form-field>
</form>
<button
(
click
)="
saveBoilerplate
()"
class=
"btn btn-success"
>
Submit
</button>
</div>
\ No newline at end of file
reqtool/ReqmanAngular11/src/app/components/add-groupboil/add-groupboil.component.ts
View file @
92968860
...
...
@@ -10,10 +10,12 @@ import { NotifierService } from "angular-notifier";
styleUrls
:
[
'./add-groupboil.component.scss'
]
})
export
class
AddGroupboilComponent
implements
OnInit
{
ontologyList
=
[]
groupboilerplate
:
GroupBoilerplate
=
{
title_bgroup
:
""
,
description
:
""
,
ontology_file
:
"/Default"
,
};
submitted
=
false
;
private
readonly
notifier
:
NotifierService
;
...
...
@@ -23,12 +25,15 @@ export class AddGroupboilComponent implements OnInit {
}
ngOnInit
():
void
{
this
.
getOntologies
();
}
saveBoilerplate
():
void
{
const
data
=
{
title_bgroup
:
this
.
groupboilerplate
.
title_bgroup
,
description
:
this
.
groupboilerplate
.
description
?
this
.
groupboilerplate
.
description
:
this
.
groupboilerplate
.
title_bgroup
,
ontology_file
:
'../../Ontologies'
+
this
.
groupboilerplate
.
ontology_file
,
};
this
.
submitted
=
true
;
this
.
boilerplatelService
.
creategroupboil
(
data
)
.
subscribe
(
...
...
@@ -53,4 +58,16 @@ export class AddGroupboilComponent implements OnInit {
};
}
getOntologies
():
void
{
this
.
boilerplatelService
.
getOntolgies
()
.
subscribe
(
data
=>
{
this
.
ontologyList
=
data
;
console
.
log
(
data
);
},
error
=>
{
console
.
log
(
error
);
});
}
}
reqtool/ReqmanAngular11/src/app/components/main-details/main-details.component.html
View file @
92968860
<div
fxLayoutAlign=
"end"
>
<h2><span
class=
"badge badge-secondary"
>
MAIN TEMPLATE : {{this.main}}
</span></h2>
<h2
*
ngIf=
"this.color_badge=='danger'"
><span
class=
"badge badge-danger"
>
MAIN TEMPLATE : {{this.main}}
</span></h2>
<h2
*
ngIf=
"this.color_badge=='success'"
><span
class=
"badge badge-success"
>
MAIN TEMPLATE : {{this.main}}
</span></h2>
</div>
<div
class=
"form-row"
>
<div
class=
"col"
>
...
...
reqtool/ReqmanAngular11/src/app/components/main-details/main-details.component.ts
View file @
92968860
...
...
@@ -89,6 +89,7 @@ export class MainDetailsComponent implements OnInit {
};
message
=
''
;
main
=
''
;
color_badge
=
'danger'
constructor
(
private
mainService
:
MainService
,
...
...
@@ -141,6 +142,7 @@ export class MainDetailsComponent implements OnInit {
}
ngDoCheck
()
{
this
.
color_badge
=
'danger'
this
.
dis
();
}
...
...
@@ -173,6 +175,7 @@ export class MainDetailsComponent implements OnInit {
//add the connection data
}
this
.
main
=
this
.
mainsyntax
[
x
].
Id
this
.
color_badge
=
'success'
return
1
;
}
}
...
...
reqtool/ReqmanAngular11/src/app/models/boilerplate.model.ts
View file @
92968860
...
...
@@ -20,6 +20,7 @@ export class GroupBoilerplate {
id
?:
any
;
title_bgroup
?:
string
;
description
?:
string
;
ontology_file
?:
string
;
}
export
class
InferenceResults
{
...
...
reqtool/ReqmanAngular11/src/app/services/boilerplate.service.ts
View file @
92968860
...
...
@@ -9,6 +9,7 @@ import { environment } from '../../environments/environment';
const
baseUrl
=
'/boilerplates/'
;
const
inferUrl
=
'/infer/'
;
const
baseUrlgb
=
environment
.
apiroot
+
'api-auth/groupboilerplates/'
;
const
genericbaseUrl
=
environment
.
apiroot
+
'api-auth'
;
@
Injectable
({
providedIn
:
'root'
...
...
@@ -70,4 +71,8 @@ export class BoilerplateService {
return
this
.
http
.
get
(
`
${
baseUrlgb
}${
gb
}
`
+
`/search`
+
`/
${
instance
}
`
);
}
getOntolgies
():
Observable
<
any
>
{
return
this
.
http
.
get
(
`
${
genericbaseUrl
}
`
+
`/ontologies`
+
`/`
);
}
}
reqtool/reqman/api/reqman/apps/reqtool/models/main_req.py
View file @
92968860
...
...
@@ -95,7 +95,7 @@ SHALL_CHOICES = ( ("shall", "shall"), ("shall not", "shall not"))
#
#VERB_CHOICES = get_verb_instances("LO#Verb")
VERB_CHOICES
=
get_verb_file_and_instances
(
"LO#Verb"
)
#
VERB_CHOICES = get_verb_file_and_instances("LO#Verb")
#test to add M
CLASS_CHOICES
=
((
"SYSTEM"
,
"SYSTEM"
),
(
"FUNCTION"
,
"FUNCTION"
),
(
"SHALL"
,
"SHALL/SHALL NOT"
),
...
...
reqtool/reqman/api/reqman/apps/reqtool/models/requirements.py
View file @
92968860
...
...
@@ -11,6 +11,8 @@ from reqman.apps.reqtool.rest_api.services.parse_ontologies import *
from
pygments.formatters.html
import
HtmlFormatter
from
pygments
import
highlight
from
subprocess
import
call
#get prefix syntax from the Onotlogy#
#print(get_prefix_new_syntax())
...
...
@@ -83,12 +85,18 @@ def create_infer_result(instance, destination):
def
initialize_instances
(
instance
):
try
:
g
=
Graph
()
print
(
instance
.
ontology_file
)
file_name
=
instance
.
title_bgroup
.
replace
(
'/'
,
''
)
save_path
=
"../../Ontologies/"
+
file_name
+
"/"
if
(
os
.
path
.
exists
(
"../../Ontologies/"
+
file_name
+
"/"
)
==
False
):
os
.
mkdir
(
"../../Ontologies/"
+
file_name
)
completeName
=
os
.
path
.
join
(
save_path
,
file_name
)
g
.
load
(
instance
.
ontology_file
,
format
=
"turtle"
)
if
(
instance
.
ontology_file
!=
'../../Ontologies/Default'
):
ont
=
instance
.
ontology_file
.
replace
(
'../../Ontologies/'
,
''
)
call
(
"./../../Ontologies/s-get http://155.207.131.19:3030/"
+
ont
+
" default >> ../../Ontologies/"
+
file_name
+
'/'
+
file_name
+
'.ttl'
,
shell
=
True
)
destination
=
save_path
+
file_name
+
'.ttl'
else
:
g
.
load
(
'../../Ontologies/2022_AOCS.ttl'
,
format
=
"turtle"
)
destination
=
save_path
+
file_name
+
'.ttl'
g
.
serialize
(
destination
,
format
=
'turtle'
)
except
:
...
...
@@ -113,6 +121,7 @@ def update_instances(instance):
list_of_DSO
.
append
(
"http://delab.csd.auth.gr/ontologies/2018/RDO-instances#"
)
#PREFIX_SYNTAX = get_prefix_syntax(g)
VERB_CHOICES_PREFIX
=
get_prefix_verbs
(
g
)
VERB_CHOICES
=
get_verb_file_and_instances
(
"LO#Verb"
,
g
)
SYSTEM_CHOICES
=
get_instances_g
(
"SAO#System"
,
g
,
list_of_DSO
)
FUNCTION_CHOICES
=
get_instances_g
(
"SAO#Function"
,
g
,
list_of_DSO
)
ITEM_CHOICES
=
get_instances_g
(
"SAO#Item"
,
g
,
list_of_DSO
)
...
...
@@ -147,7 +156,8 @@ def update_instances(instance):
class
BoilerplateGroup
(
models
.
Model
):
boilerplate_owner
=
models
.
ForeignKey
(
User
,
related_name
=
'boilerplate_group_owner'
,
on_delete
=
models
.
CASCADE
)
#add Boilerplate path, so each Boilerplate Group can hace it's own Ontology file
ontology_file
=
models
.
CharField
(
default
=
"../../Ontologies/2022_AOCS.ttl"
,
max_length
=
100
,
blank
=
True
)
# ontology_file = models.CharField(default="../../Ontologies/2022_AOCS.ttl", max_length=100, blank=True)
ontology_file
=
models
.
CharField
(
max_length
=
100
,
blank
=
True
)
title_bgroup
=
models
.
CharField
(
max_length
=
100
,
unique
=
True
)
description
=
models
.
CharField
(
max_length
=
500
)
...
...
reqtool/reqman/api/reqman/apps/reqtool/rest_api/serializers/requirements.py
View file @
92968860
...
...
@@ -35,7 +35,7 @@ class BoilerplateGroupSerializer(serializers.ModelSerializer):
boilerplate_owner
=
serializers
.
ReadOnlyField
(
source
=
'owner.username'
)
class
Meta
:
model
=
BoilerplateGroup
fields
=
(
'id'
,
'boilerplate_owner'
,
'title_bgroup'
,
'description'
)
fields
=
(
'id'
,
'boilerplate_owner'
,
'
ontology_file'
,
'
title_bgroup'
,
'description'
)
class
BoilerplateGroupClassesInstancesSerializer
(
serializers
.
ModelSerializer
):
classes_instances_owner
=
serializers
.
ReadOnlyField
(
source
=
'owner.username'
)
...
...
reqtool/reqman/api/reqman/apps/reqtool/rest_api/services/fuseki.py
View file @
92968860
reqtool/reqman/api/reqman/apps/reqtool/rest_api/services/inference.py
View file @
92968860
...
...
@@ -14,15 +14,11 @@ list_of_inference_metrics = ["IncompleteRequirement", "AmbiguousRequirement",
info_metric
=
[
"isMissingConcept"
,
"isMissingInstanceOf"
,
"isMissingProducer"
,
"isMissingState"
,
"hasAmbiguousConcept"
,
"hasAmbiguousConcept2"
,
"hasNoisyConcept"
,
"hasOpaqueConcept"
,
"isInconsistentTo"
]
prefix_syntax
=
get_prefix_syntax
(
g
)
def
getclassofprefix
(
prefix
,
ontology_file
):
return
(
findclassofprefix
(
prefix
,
ontology_file
))
main_syntax
=
get_main_sytax_inference
(
g
)
def
getclassofprefix
(
prefix
):
return
(
findclassofprefix
(
prefix
))
def
getclassofmain
(
main
):
return
(
findclassofmain
(
main
))
def
getclassofmain
(
main
,
ontology_file
):
return
(
findclassofmain
(
main
,
ontology_file
))
def
getinstancefile
(
data
,
g
):
datam
=
data
.
split
(
":"
)
...
...
@@ -257,7 +253,7 @@ def shacl(ontotlogy_file):
print
(
i
+
1
,
'Cycle of inferencing'
)
#result = subprocess.check_output(["./reqman/apps/reqtool/rest_api/services/shacl-1.3.2/bin/shaclinfer.sh", "-datafile", target])
try
:
result
=
subprocess
.
check_output
(
"./reqman/apps/reqtool/rest_api/services/shacl-1.4.2/bin/shaclinfer.sh -datafile "
+
target1
+
" | grep -v -e 'WARN OntDocumentManager' -e 'at org.' -e 'org.apache.' -e '@'"
,
shell
=
True
)
result
=
subprocess
.
check_output
(
"./reqman/apps/reqtool/rest_api/services/shacl-1.4.2/bin/shaclinfer.sh -datafile "
+
target1
+
" | grep -v -e 'WARN OntDocumentManager' -e 'at org.' -e 'org.apache.' -e '@'"
,
shell
=
True
,
timeout
=
360
)
except
:
raise
APIException
(
"Problem during the Inferencing"
)
if
(
result
==
final_result
):
...
...
@@ -320,7 +316,7 @@ def shacl(ontotlogy_file):
from
rest_framework.exceptions
import
APIException
'''Find if the Prefix exists in syntax'''
def
findclassofprefix
(
listofprefix
):
def
findclassofprefix
(
listofprefix
,
Ontology_file
):
classlist
=
[]
currentverb
=
listofprefix
[
'state_or_verb'
]
.
rsplit
(
' : '
,
1
)
currentstate
=
listofprefix
[
'state_or_verb'
]
.
rsplit
(
' : '
)
...
...
@@ -335,6 +331,9 @@ def findclassofprefix(listofprefix):
if
(
currentsubjectspl
[
0
]
==
"System"
):
raise
APIException
(
"The Subject must be an Item"
)
#
g
=
Graph
()
g
.
load
(
Ontology_file
,
format
=
"turtle"
)
prefix_syntax
=
get_prefix_syntax
(
g
)
for
prefix
in
prefix_syntax
:
for
inprefix
in
prefix_syntax
[
prefix
]:
if
(
currentverb
[
1
]
in
prefix_syntax
[
prefix
][
inprefix
.
split
(
"_"
)[
0
]
+
"_Verbs"
])
or
(
currentstate
[
0
]
in
prefix_syntax
[
prefix
][
inprefix
.
split
(
"_"
)[
0
]
+
"_Verbs"
]
or
currentverb
[
1
]
==
'is'
):
...
...
@@ -357,7 +356,10 @@ def findclassofprefix(listofprefix):
'''Find if the Main exists in syntax'''
def
findclassofmain
(
listofmain
):
def
findclassofmain
(
listofmain
,
Ontology_file
):
g
=
Graph
()
g
.
load
(
Ontology_file
,
format
=
"turtle"
)
main_syntax
=
get_main_sytax_inference
(
g
)
classlist
=
[]
for
i
in
range
(
len
(
main_syntax
)):
verbsmain
=
main_syntax
[(
'M'
+
str
(
i
+
1
))][
'Verbs'
]
...
...
reqtool/reqman/api/reqman/apps/reqtool/rest_api/services/parse_ontologies.py
View file @
92968860
...
...
@@ -6,13 +6,6 @@ from rdflib import ConjunctiveGraph, URIRef, RDFS, RDF, Namespace, Literal
#call("./../../Ontologies/s-get http://155.207.131.19:3030/Mokos_18_1_7_47/data default >> ../../Ontologies/data.ttl", shell=True)
#Ontology_file = "../../Ontologies/Mokos_18_1_7_47.ttl"
#Ontology_file = "../../Ontologies/Autonomy_v1.ttl"
Ontology_file
=
"../../Ontologies/2022_AOCS.ttl"
#Ontology_file = "../../Ontologies/Autonomy_v1.ttl"
subClass_instances
=
"../../Ontologies/instances_subclass.txt"
#HERE
#list_of_DSO = ["http://delab.csd.auth.gr/ontologies/2018/SAO#","http://delab.csd.auth.gr/ontologies/2018/DSO#", "http://delab.csd.auth.gr/ontologies/2018/DSO-Automotive#", "http://delab.csd.auth.gr/ontologies/2018/DSO-Automotive-AVP#", "http://delab.csd.auth.gr/ontologies/2018/DSO-Automotive-AVP-instances#","http://delab.csd.auth.gr/ontologies/2018/RDO-instances#"]
list_of_DSO
=
[]
...
...
@@ -25,8 +18,8 @@ DSO = ["http://delab.csd.auth.gr/ontologies/2018/DSO#"]
Dictionary_Data
=
{}
Dictionary_Data_list
=
[]
g
=
Graph
()
g
.
load
(
Ontology_file
,
format
=
"turtle"
)
#
g = Graph()
#
g.load(Ontology_file, format="turtle")
'''def find_subclass_domain_range():
file2 = open(r"../../Ontologies/instances.txt","w+")
...
...
@@ -79,7 +72,7 @@ def get_verb_instances(keyword):
return
tuple
((
str
(
n
),
str
(
n
))
for
n
in
(
out_list
))
'''Get Verbs - return tuple'''
def
get_verb_file_and_instances
(
keyword
):
def
get_verb_file_and_instances
(
keyword
,
g
):
get_file_and_instances
(
keyword
,
g
)
keywordspl
=
keyword
.
split
(
"#"
)
in_list
=
[]
...
...
@@ -292,7 +285,7 @@ def get_dmo_classes_and_comment(keyword, g, list_of_DSO):
sub_ins
.
append
(
sub_ins_dict
)
###############################
#get Instance of all subclasses
subsubclass_list
=
get_Classes_Dictionary
(
subclas_name
,
list_of_DSO
)
subsubclass_list
=
get_Classes_Dictionary
(
subclas_name
,
list_of_DSO
,
g
)
suclass_dict
=
{
'SubClass_name'
:
subclas_name
,
'SubclassComment'
:
find_comment
,
'InstanceOfSubclass'
:
sub_ins
,
'SubSubClass'
:
subsubclass_list
}
subclass_list
.
append
(
suclass_dict
)
############################################
...
...
@@ -303,7 +296,7 @@ def get_dmo_classes_and_comment(keyword, g, list_of_DSO):
return
Dictionary_Data
def
get_Classes_Dictionary
(
name
,
list_of_DSO
):
def
get_Classes_Dictionary
(
name
,
list_of_DSO
,
g
):
#subsubsub_ins_dict = {}
subsubsubsuclass_dict
=
{}
subsubsubsubclass_list
=
[]
...
...
@@ -330,7 +323,7 @@ def get_Classes_Dictionary(name, list_of_DSO):
subsubsubsub_ins_dict
=
{
"Instance"
:
spl2
[
len
(
spl2
)
-
1
],
"Comment"
:
subsubsubfind_comment_instance
}
subsubsubsub_ins
.
append
(
subsubsubsub_ins_dict
)
#get current Subclass -Subclasses / Instances
newsubclass_list
=
get_Classes_Dictionary
(
subsubsubsubclas_name
,
list_of_DSO
)
newsubclass_list
=
get_Classes_Dictionary
(
subsubsubsubclas_name
,
list_of_DSO
,
g
)
subsubsubsuclass_dict
=
{
'SubSubClass_name'
:
subsubsubsubclas_name
,
'SubSubclassComment'
:
subsubsubfind_comment
,
'SubInstanceOfSubclass'
:
subsubsubsub_ins
,
'SubSubClass'
:
newsubclass_list
}
subsubsubsubclass_list
.
append
(
subsubsubsuclass_dict
)
return
subsubsubsubclass_list
...
...
@@ -428,7 +421,7 @@ def get_related_to_subject(bnodes_uriref):
'''Find Boilerplate Verb - return list'''
def
get_verb
(
bnodes_uriref
):
def
get_verb
(
bnodes_uriref
,
g
):
verb_list
=
[]
out_list
=
[]
bnodes_uriref
=
[
str
(
i
)
for
i
in
bnodes_uriref
]
...
...
@@ -664,7 +657,7 @@ def get_prefix_syntax(g):
#prefix_dict[prefix]["Verbs"] = []
#prefix_dict[prefix]["Attribute"] = []
#prefix_dict[prefix]["Subject"] = []
bnodes_uriref
=
find_triples
(
prefix
)
bnodes_uriref
=
find_triples
(
prefix
,
g
)
subclass_data
=
[]
for
per
in
bnodes_uriref
:
tmp
=
get_instances_list
(
str
(
per
),
g
)
...
...
@@ -744,7 +737,7 @@ def get_prefix_verbs(g):
for
prefix
in
get_prefix
:
prefix_list
.
extend
(
get_instances_list
(
prefix
,
g
))
for
prefix
in
prefix_list
:
bnodes_uriref
=
find_triples
(
prefix
)
bnodes_uriref
=
find_triples
(
prefix
,
g
)
subclass_data
=
[]
for
per
in
bnodes_uriref
:
tmp
=
get_instances_list
(
str
(
per
),
g
)
...
...
@@ -752,11 +745,11 @@ def get_prefix_verbs(g):
for
i
in
tmp
:
subclass_data
.
append
(
i
)
for
pre
in
subclass_data
:
tmp_list2
=
find_triples
(
pre
)
tmp_list2
=
find_triples
(
pre
,
g
)
tmp_list2
=
[
str
(
i
)
for
i
in
tmp_list2
]
#add verbs
if
tmp_list2
:
ver
=
get_verb
(
tmp_list2
)
ver
=
get_verb
(
tmp_list2
,
g
)
if
(
len
(
ver
)
==
0
):
out_list
.
append
(
'Is : is'
)
verblist
.
append
(
'Is : is'
)
...
...
@@ -782,7 +775,7 @@ def get_prefix_new_syntax(g):
for
prefix
in
prefix_list
:
per
=
URIRef
(
"http://delab.csd.auth.gr/ontologies/2018/RBO#"
+
prefix
)
#per2 = URIRef("http://www.w3.org/2002/07/owl#allValuesFrom")
bnodes_uriref
=
find_triples
(
prefix
)
bnodes_uriref
=
find_triples
(
prefix
,
g
)
subclass_data
=
[]
#print(bnodes_uriref)
for
per
in
bnodes_uriref
:
...
...
@@ -797,7 +790,7 @@ def get_prefix_new_syntax(g):
'''Find the triples of the prefix - return list.type(URIRef)'''
def
find_triples
(
prefix
):
def
find_triples
(
prefix
,
g
):
bnodes
=
[]
URIRef_list
=
[]
per
=
URIRef
(
"http://delab.csd.auth.gr/ontologies/2018/RBO#"
+
prefix
)
...
...
reqtool/reqman/api/reqman/apps/reqtool/rest_api/urls.py
View file @
92968860
...
...
@@ -7,6 +7,7 @@ from .views import user_views, requirements_views, main_req_views, suffix_req_vi
urlpatterns
=
[
path
(
'users/'
,
user_views
.
UserList
.
as_view
(),
name
=
'api-user-list'
),
path
(
'users/<uuid:pk>/'
,
user_views
.
UserDetail
.
as_view
(),
name
=
'api-post-details'
),
path
(
'ontologies/'
,
requirements_views
.
OntologiesChoicesViewSet
.
as_view
(),
name
=
'api-get-ontologies'
),
path
(
'groupboilerplates/'
,
requirements_views
.
BoilerplateGroupCreateAPIView
.
as_view
(),
name
=
'api-groupboilerplates-create'
),
path
(
'groupboilerplates/<int:pk>/'
,
requirements_views
.
BoilerplateGroupDetailsAPIView
.
as_view
(),
name
=
'api-groupboilerplates-list'
),
...
...
reqtool/reqman/api/reqman/apps/reqtool/rest_api/views/main_req_views.py
View file @
92968860
...
...
@@ -12,7 +12,7 @@ from reqman.apps.reqtool.rest_api.serializers.main_req import MainSerializer
from
reqman.apps.permissions
import
IsOwnerOrReadOnly
from
reqman.apps.reqtool.rest_api.services
import
fuseki
,
inference
from
reqman.apps.reqtool.rest_api.services.parse_ontologies
import
Dictionary_Data_list
,
Ontology_file
,
get_main_sytax
,
get_main_sytax_inference
from
reqman.apps.reqtool.rest_api.services.parse_ontologies
import
get_main_sytax
,
get_main_sytax_inference
from
rest_framework.response
import
Response
from
rest_framework.views
import
APIView
...
...
@@ -83,7 +83,6 @@ class MainDetailsAPIView(RetrieveUpdateDestroyAPIView):
numinstance
=
instance
[
'numerical'
]
mn
=
(
es_instance
[
len
(
es_instance
)
-
1
]
+
' '
+
stateitem_instance
[
len
(
stateitem_instance
)
-
1
]
+
' '
+
statevalue_instance
[
len
(
statevalue_instance
)
-
1
]
+
' '
+
instance
[
'shall'
]
+
' '
+
ev_instance
[
len
(
ev_instance
)
-
1
]
+
' '
+
quantifier_instance
[
len
(
quantifier_instance
)
-
1
]
+
' '
+
numinstance
+
' '
+
numunit_instance
[
len
(
numunit_instance
)
-
1
]
+
' '
+
eo_instance
[
len
(
eo_instance
)
-
1
]
+
' '
+
stsysconset_instance
[
len
(
stsysconset_instance
)
-
1
])
boildata
=
BoilerplateData
.
objects
.
filter
(
owner_data
=
instance
[
'boilerplate_of_main'
]
.
owner
,
boilerplate_data_id
=
instance
[
'boilerplate_of_main'
])
boildata
.
update
(
main_data
=
mn
)
#get instances of the ontology that this boilerplate belongs
data
=
BoilerplateGroupClassesInstances
.
objects
.
filter
(
classes_instances_owner
=
instance
[
'boilerplate_of_main'
]
.
owner
,
classes_instances_group_of_boilerplate
=
boildata
.
values
(
'group_of_boilerplate_data'
)[
0
][
'group_of_boilerplate_data'
])
sub_data
=
data
.
values
(
'system_choices'
)[
0
][
'system_choices'
]
+
data
.
values
(
'function_choices'
)[
0
][
'function_choices'
]
+
data
.
values
(
'inteface_choices'
)[
0
][
'inteface_choices'
]
...
...
@@ -110,12 +109,14 @@ class MainDetailsAPIView(RetrieveUpdateDestroyAPIView):
numunit_data
=
data
.
values
(
'number_unit_choices'
)[
0
][
'number_unit_choices'
]
if
(
instance
[
'mumerical_units'
]
not
in
numunit_data
):
raise
APIException
(
"MAIN : Instance of Number Unit does not exist"
)
curmain_choices
=
inference
.
getclassofmain
(
instance
)
ontology_file
=
data
.
values
(
'ontology_file'
)[
0
][
'ontology_file'
]
curmain_choices
=
inference
.
getclassofmain
(
instance
,
ontology_file
)
if
(
curmain_choices
==
None
):
raise
APIException
(
"Main choices not in [M1-M16]"
)
if
(
curmain_choices
[
0
]
==
'ERROR'
):
raise
APIException
(
"Main choices not in [M1-M16]"
)
else
:
boildata
.
update
(
main_data
=
mn
)
instance
=
serializer
.
save
(
main_choices
=
curmain_choices
[
0
])
#instance = serializer.save()
...
...
reqtool/reqman/api/reqman/apps/reqtool/rest_api/views/requirements_views.py
View file @
92968860
...
...
@@ -22,6 +22,29 @@ from rest_framework.views import APIView
from
rest_framework.exceptions
import
APIException
from
django.shortcuts
import
get_object_or_404
import
requests
,
json
from
requests.auth
import
HTTPBasicAuth
from
reqman.settings.environment
import
env
class
OntologiesChoicesViewSet
(
APIView
):
'''Get current Ontologies from Fuseki server'''
def
get
(
self
,
request
):
data
=
{
'datasets'
:
''
}
try
:
url
=
requests
.
get
(
env
(
"FUSEKI_URL"
)
+
"/$/datasets"
,
auth
=
HTTPBasicAuth
(
'admin'
,
'pw!!!'
))
text
=
url
.
text
data
=
json
.
loads
(
text
)
except
:
pass
list_ontology
=
[
'Default'
]
for
i
in
data
[
'datasets'
]
:
list_ontology
.
append
(
i
[
'ds.name'
])
ONTOLOGIES_CHOICES
=
tuple
((
str
(
n
),
str
(
n
))
for
n
in
(
list_ontology
))
response
=
Response
(
ONTOLOGIES_CHOICES
)
return
response
class
BoilerplateGroupCreateAPIView
(
ListCreateAPIView
):
...
...
@@ -174,7 +197,6 @@ class PrefixDetailsAPIView(RetrieveUpdateDestroyAPIView):
ei_instance
=
instance
[
'item_function_flow_statevalue'
]
.
rsplit
(
':'
,
1
)
pr
=
(
instance
[
'prefix'
]
+
' '
+
es_instance
[
len
(
es_instance
)
-
1
]
+
' '
+
ev_instance
[
len
(
ev_instance
)
-
1
]
+
' '
+
ei_instance
[
len
(
ei_instance
)
-
1
])
boildata
=
BoilerplateData
.
objects
.
filter
(
owner_data
=
instance
[
'prefix_boilerplate'
]
.
owner
,
boilerplate_data_id
=
instance
[
'prefix_boilerplate'
])
boildata
.
update
(
prefix_data
=
pr
)
#get instances of the ontology that this boilerplate belongs
data
=
BoilerplateGroupClassesInstances
.
objects
.
filter
(
classes_instances_owner
=
instance
[
'prefix_boilerplate'
]
.
owner
,
classes_instances_group_of_boilerplate
=
boildata
.
values
(
'group_of_boilerplate_data'
)[
0
][
'group_of_boilerplate_data'
])
es_data
=
data
.
values
(
'system_choices'
)[
0
][
'system_choices'
]
+
data
.
values
(
'function_choices'
)[
0
][
'function_choices'
]
+
data
.
values
(
'item_choices'
)[
0
][
'item_choices'
]
...
...
@@ -187,10 +209,12 @@ class PrefixDetailsAPIView(RetrieveUpdateDestroyAPIView):
if
(
instance
[
'item_function_flow_statevalue'
]
not
in
ei_data
):
raise
APIException
(
"PREFIX : Instance of Object does not exist"
)
#find the class of the prefix
prefix_choices
=
inference
.
getclassofprefix
(
instance
)
ontology_file
=
data
.
values
(
'ontology_file'
)[
0
][
'ontology_file'
]
prefix_choices
=
inference
.
getclassofprefix
(
instance
,
ontology_file
)
if
prefix_choices
[
0
]
==
'ERROR'
:
raise
APIException
(
"Prefix choices not in [P1-P3]"
)
else
:
boildata
.
update
(
prefix_data
=
pr
)
serializer
.
save
(
simple_prefix
=
prefix_choices
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment