1 package eu.fbk.knowledgestore;
2
3 import java.util.Date;
4 import java.util.GregorianCalendar;
5 import java.util.HashMap;
6 import java.util.Map;
7 import java.util.Set;
8
9 import com.google.common.collect.ImmutableBiMap;
10 import com.google.common.collect.ImmutableMap;
11 import com.google.common.collect.Maps;
12
13 import org.junit.Ignore;
14 import org.junit.Test;
15 import org.openrdf.model.URI;
16 import org.openrdf.model.impl.URIImpl;
17 import org.openrdf.model.vocabulary.DCTERMS;
18 import org.openrdf.model.vocabulary.RDF;
19
20 import eu.fbk.knowledgestore.data.Data;
21 import eu.fbk.knowledgestore.data.Record;
22 import eu.fbk.knowledgestore.data.XPath;
23 import eu.fbk.knowledgestore.vocabulary.KS;
24 import eu.fbk.knowledgestore.vocabulary.NFO;
25 import eu.fbk.knowledgestore.vocabulary.NIE;
26
27 public class XPathTest {
28
29 @Test
30 public void test7() {
31
32 final Record record = Record.create(new URIImpl("ex:id"));
33 record.set(new URIImpl(KS.NAMESPACE + "p"), new URIImpl(KS.NAMESPACE + "x"));
34 System.out.println(record.toString(Data.getNamespaceMap(), true));
35
36
37
38 final XPath xpath = XPath.parse("ks:p = $$", new URIImpl(KS.NAMESPACE + "x"));
39
40 final Map<URI, Set<Object>> map = Maps.newHashMap();
41 xpath.decompose(map);
42 System.out.println(map);
43
44 System.out.println(xpath.eval(record));
45 }
46
47 @Ignore
48 @Test
49 public void test5() {
50
51 final long now = System.currentTimeMillis();
52
53 final Record record = Record.create(new URIImpl("ex:id"));
54 record.set(new URIImpl(KS.NAMESPACE + "p"), new Date(now));
55 System.out.println(record.toString(Data.getNamespaceMap(), true));
56
57
58 final XPath xpath = XPath.parse("ks:p > $$ and ks:p < $$", new Date(now - 5000), new Date(
59 now + 5000));
60
61 final Map<URI, Set<Object>> map = Maps.newHashMap();
62 xpath.decompose(map);
63 System.out.println(map);
64
65 System.out.println(xpath.eval(record));
66 }
67
68 @Ignore
69 @Test
70 public void test4() {
71
72 final Record record = Record.create(new URIImpl("ex:id"));
73 record.set(new URIImpl(KS.NAMESPACE + "p"), "test");
74 System.out.println(record.toString(Data.getNamespaceMap(), true));
75
76
77 final XPath xpath = XPath.parse("ks:p > '' and ks:p <= 'test'");
78
79 final Map<URI, Set<Object>> map = Maps.newHashMap();
80 xpath.decompose(map);
81 System.out.println(map);
82
83 System.out.println(xpath.eval(record));
84 }
85
86 @Ignore
87 @Test
88 public void test3() {
89
90 final Record record = Record.create(new URIImpl("ex:id"));
91 record.set(new URIImpl(KS.NAMESPACE + "boolean"), false);
92 record.set(new URIImpl(KS.NAMESPACE + "test"), true);
93 System.out.println(record.toString(Data.getNamespaceMap(), true));
94
95
96 final XPath xpath = XPath.parse("ks:boolean = false");
97
98 final Map<URI, Set<Object>> map = Maps.newHashMap();
99 xpath.decompose(map);
100 System.out.println(map);
101
102 System.out.println(xpath.eval(record));
103 }
104
105 @Ignore
106 @Test
107 public void test2() {
108
109 final Record record = Record.create(new URIImpl("ex:id"));
110 record.set(new URIImpl(KS.NAMESPACE + "pippo"), "pioppo");
111 System.out.println(record.toString(Data.getNamespaceMap(), true));
112
113 final XPath xpath = XPath.parse("ks:pippo = 'pioppo'");
114 System.out.println(xpath.evalBoolean(record));
115 }
116
117 @Ignore
118 @Test
119 public void test() {
120
121 System.out.println(XPath.parse("dct:test = $$", 55));
122
123 final XPath xpath2 = XPath.parse("dct:created >= dateTime('2012-01-01') "
124 + "and dct:created < dateTime('2012-01-31') "
125 + "and dct:source = \\ks:test ");
126 final Map<URI, Set<Object>> map2 = new HashMap<>();
127 xpath2.decompose(map2);
128 System.out.println(map2);
129
130 final XPath xpath0 = XPath.parse("rdfs:comment = 'comment # 0'");
131 System.out.println(xpath0);
132
133 final Record resource = getMockResource();
134
135
136
137
138 System.out.println(XPath.constant(5, 3, new URIImpl("test:a"), "bla"));
139 System.out.println(XPath.parse("uri(sequence('test:a', 'test:b', 13))").eval(resource));
140 System.out.println(XPath.compose("and", XPath.constant(false),
141 XPath.parse(ImmutableMap.of("dct", "sesame:nil:"), "dct:title = 'test'")));
142 XPath xpath = XPath.parse(ImmutableMap.of("ks", "sesame:nil:"),
143 "\\ks:Resource = uri(sequence('sesame:nil:Resource', 'fd'))");
144 System.out.println(xpath);
145
146 System.out.println(xpath.getHead());
147 System.out.println(xpath.getBody());
148 System.out.println(xpath.getNamespaces());
149 System.out.println(xpath.getProperties());
150
151 xpath = XPath.parse(ImmutableBiMap.of("nie", NIE.NAMESPACE, "rdf", RDF.NAMESPACE),
152 "with dct: <" + DCTERMS.NAMESPACE + "> : /nie:isStoredAs >= 1008"
153 + "and ./nie:isStoredAs[/dct:creator = 'John']/dct:issued >= 1007 "
154 + "and dct:title = 'This is the news title'"
155 + " and rdf:type = \\ks:Resource");
156 final Map<URI, Set<Object>> map = Maps.newHashMap();
157 final XPath remaining = xpath.decompose(map);
158 System.out.println(xpath.evalBoolean(resource));
159 System.out.println("*** remaining: " + remaining);
160 System.out.println("*** map: " + map);
161
162
163
164
165
166
167
168
169 }
170
171 public static Record getMockResource() {
172 final GregorianCalendar calendar = new GregorianCalendar();
173 calendar.set(2013, 9, 23);
174
175 final Record rep = Record.create();
176 rep.setID(new URIImpl("ks:r15_rep"));
177 rep.set(RDF.TYPE, KS.REPRESENTATION);
178 rep.set(NFO.FILE_NAME, "r15.txt");
179 rep.set(NFO.FILE_SIZE, 1533L);
180 rep.set(NFO.FILE_CREATED, new Date());
181 rep.set(NIE.MIME_TYPE, "text/plain");
182 rep.set(DCTERMS.CREATOR, "John", "Steve", "Mark");
183 rep.set(DCTERMS.ISSUED, 1000, 1005, 1007);
184
185 final Record resource = Record.create();
186 resource.setID(new URIImpl("ks:r15"));
187 resource.set(RDF.TYPE, KS.RESOURCE);
188 resource.set(DCTERMS.TITLE, "This is the news title");
189 resource.set(DCTERMS.ISSUED, calendar);
190 resource.set(NIE.IS_STORED_AS, rep);
191 return resource;
192 }
193
194 }