-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtest.py
More file actions
46 lines (37 loc) · 1.37 KB
/
test.py
File metadata and controls
46 lines (37 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# test.py
# c2t: Container to triples - a package to convert the libraries and packages inside a container into structured information.
#
# Copyright 2026 SoftwareUnderstanding
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import morph_kgc
import os
#generate log from Docker inspect
os.system("docker inspect $(docker images -a -q) >data.json")
# generate the triples and load them to an RDFlib graph
graph = morph_kgc.materialize('config.ini')
# work with the graph
graph.query(' SELECT DISTINCT ?classes WHERE { ?s a ?classes } ')
graph.serialize(destination='result.ttl', format='turtle')
# Sparql query
import rdflib
g = rdflib.Graph()
g.parse("result.ttl",format="turtle")
knows_query = """
SELECT *
WHERE {
?s a <https://w3id.org/docker/image/dockerObject>.
}"""
qres = g.query(knows_query)
for row in qres:
print(f"imageID: {row.id} has OS : {row.os}, author: {row.auth}")