1
1
package io .github .qudtlib .tools .contributions ;
2
2
3
+ import static java .util .stream .Collectors .joining ;
4
+
3
5
import io .github .qudtlib .Qudt ;
6
+ import io .github .qudtlib .model .Namespace ;
4
7
import io .github .qudtlib .model .QudtNamespaces ;
5
8
import io .github .qudtlib .tools .contribute .QudtEntityGenerator ;
6
9
import io .github .qudtlib .vocab .QUDT ;
7
10
import java .math .BigDecimal ;
8
- import java .util .Optional ;
11
+ import java .util .* ;
9
12
import org .eclipse .rdf4j .model .IRI ;
10
13
import org .eclipse .rdf4j .model .Model ;
11
14
import org .eclipse .rdf4j .model .Value ;
16
19
17
20
public class GenerateNumericValuesAsXsdDoubleAndXsdDecimal {
18
21
22
+ private static Map <IRI , Collection <String >> unitsByReplacedPredicate = new HashMap <>();
23
+
19
24
public static void main (String [] args ) {
20
25
QudtEntityGenerator generator = new QudtEntityGenerator ();
21
26
Model addedStatements = new TreeModel ();
@@ -32,7 +37,8 @@ public static void main(String[] args) {
32
37
val .get (),
33
38
QUDT .conversionMultiplier ,
34
39
QUDT .conversionMultiplierSN ,
35
- addedStatements );
40
+ addedStatements ,
41
+ unitsByReplacedPredicate );
36
42
}
37
43
val = unit .getConversionOffset ();
38
44
if (val .isPresent ()) {
@@ -41,7 +47,8 @@ public static void main(String[] args) {
41
47
val .get (),
42
48
QUDT .conversionOffset ,
43
49
QUDT .conversionOffsetSN ,
44
- addedStatements );
50
+ addedStatements ,
51
+ unitsByReplacedPredicate );
45
52
}
46
53
});
47
54
tool .writeOut (addedStatements , System .out );
@@ -61,7 +68,8 @@ public static void main(String[] args) {
61
68
constantValue .getValue (),
62
69
QUDT .value ,
63
70
QUDT .valueSN ,
64
- addedStatements );
71
+ addedStatements ,
72
+ unitsByReplacedPredicate );
65
73
Optional <BigDecimal > val =
66
74
constantValue .getStandardUncertainty ();
67
75
if (val .isPresent ()) {
@@ -70,16 +78,30 @@ public static void main(String[] args) {
70
78
val .get (),
71
79
QUDT .standardUncertainty ,
72
80
QUDT .standardUncertaintySN ,
73
- addedStatements );
81
+ addedStatements ,
82
+ unitsByReplacedPredicate );
74
83
}
75
84
});
76
85
tool .writeOut (addedStatements , System .out );
77
86
});
87
+
88
+ printDeleteQuery (unitsByReplacedPredicate );
78
89
}
79
90
80
91
private static void addNewNumericProperty (
81
- String iri , BigDecimal value , IRI property , IRI propertySN , Model addedStatements ) {
92
+ String iri ,
93
+ BigDecimal value ,
94
+ IRI property ,
95
+ IRI propertySN ,
96
+ Model addedStatements ,
97
+ Map <IRI , Collection <String >> unitsByReplacedPredicate ) {
82
98
ValueFactory vf = SimpleValueFactory .getInstance ();
99
+ Collection <String > units = unitsByReplacedPredicate .get (property );
100
+ if (units == null ) {
101
+ units = new HashSet <>();
102
+ unitsByReplacedPredicate .put (property , units );
103
+ }
104
+ units .add (iri );
83
105
addedStatements .add (vf .createIRI (iri ), property , vf .createLiteral (value ));
84
106
addedStatements .add (vf .createIRI (iri ), propertySN , createDoubleLiteral (value ));
85
107
}
@@ -88,4 +110,54 @@ private static Value createDoubleLiteral(BigDecimal val) {
88
110
ValueFactory vf = SimpleValueFactory .getInstance ();
89
111
return vf .createLiteral (val .toString (), CoreDatatype .XSD .DOUBLE );
90
112
}
113
+
114
+ private static void printDeleteQuery (Map <IRI , Collection <String >> unitsByReplacedPredicate ) {
115
+ for (Map .Entry <IRI , Collection <String >> entry : unitsByReplacedPredicate .entrySet ()) {
116
+ IRI predicate = entry .getKey ();
117
+ Collection <String > subjects = entry .getValue ();
118
+ System .out .println ("\n \n \n STATEMENTS TO DELETE:\n " );
119
+ System .out .println ("PREFIX qudt: <http://qudt.org/schema/qudt/>" );
120
+ System .out .println ("PREFIX unit: <http://qudt.org/vocab/unit/>" );
121
+ System .out .format (
122
+ "PREFIX %s: <%s>\n " ,
123
+ Qudt .NAMESPACES .constant .getAbbreviationPrefix (),
124
+ Qudt .NAMESPACES .constant .getBaseIri ());
125
+ System .out .format (
126
+ "PREFIX %s: <%s>\n " ,
127
+ Qudt .NAMESPACES .currency .getAbbreviationPrefix (),
128
+ Qudt .NAMESPACES .currency .getBaseIri ());
129
+ System .out .format ("DELETE { ?u %s ?m } \n " , predicate );
130
+ System .out .format ("WHERE { ?u %s ?m .\n " , predicate );
131
+ System .out .println ("\t VALUES ?u {" );
132
+ System .out .println (
133
+ subjects .stream ()
134
+ .map (iri -> abbreviateIfPossible (iri ))
135
+ .sorted ()
136
+ .collect (joining ("\n \t \t " , "\n \t \t " , "" )));
137
+ System .out .println ("\t }\n }\n \n \n " );
138
+ }
139
+ }
140
+
141
+ private static String abbreviateIfPossible (String iri ) {
142
+ String abbrev = abbreviateIfPossible (iri , Qudt .NAMESPACES .unit );
143
+ if (abbrev != null ) {
144
+ return abbrev ;
145
+ }
146
+ abbrev = abbreviateIfPossible (iri , Qudt .NAMESPACES .constant );
147
+ if (abbrev != null ) {
148
+ return abbrev ;
149
+ }
150
+ abbrev = abbreviateIfPossible (iri , Qudt .NAMESPACES .currency );
151
+ if (abbrev != null ) {
152
+ return abbrev ;
153
+ }
154
+ return iri ;
155
+ }
156
+
157
+ private static String abbreviateIfPossible (String iri , Namespace namespace ) {
158
+ if (namespace .isFullNamespaceIri (iri )) {
159
+ return namespace .abbreviate (iri );
160
+ }
161
+ return null ;
162
+ }
91
163
}
0 commit comments