-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRdfFunction.java
More file actions
117 lines (99 loc) · 4.68 KB
/
RdfFunction.java
File metadata and controls
117 lines (99 loc) · 4.68 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package tw.nccu.edu.dht;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Selector;
import com.hp.hpl.jena.rdf.model.SimpleSelector;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.util.FileManager;
import com.hp.hpl.jena.vocabulary.RDF;
public class RdfFunction {
static String dataURI = "http://nccu.edu.tw-hdt/";
static final String sfileName = "data.nt";
public String createRDF(String fileName) throws IOException {
FileReader dataFile = new FileReader(fileName);
BufferedReader br = new BufferedReader(dataFile);
String line;
StringWriter outputWriter = new StringWriter();
while ((line = br.readLine()) != null) {
// read data frome file and transfer them to RDF & return RDF data
// back to main class
int firSpace = line.indexOf(' '), secSpace = line.indexOf(' ',
firSpace + 1), thirdSpace = line.indexOf(' ', secSpace + 1), fourSpace = line
.indexOf(' ', thirdSpace + 1);
// Data format 'name place machine behavior id' use space to divide
String nameSource = line.substring(0, firSpace);
String placeSource = line.substring(firSpace + 1, secSpace);
String machineSource = line.substring(secSpace + 1, thirdSpace);
String behaviorSource = line.substring(thirdSpace + 1, fourSpace);
String idSource = line.substring(fourSpace + 1);
// Create RDF Type data
Model model = ModelFactory.createDefaultModel();
Property setAt = model.createProperty(dataURI + "setAt");
Property behavior = model.createProperty(dataURI + behaviorSource);
Resource place = model.createResource(dataURI + placeSource);
place.addProperty(RDF.type, dataURI + "Place");
Resource machine = model.createResource(dataURI + machineSource);
machine.addProperty(RDF.type, dataURI + "Machine");
Resource name = model.createResource(dataURI + nameSource);
name.addProperty(RDF.type, dataURI + "Person");
name.addProperty(behavior, machine);
name.addProperty(setAt, place);
Resource id = model.createResource(dataURI + idSource);
id.addProperty(RDF.type, dataURI + "id");
// model.write(System.out, "N-TRIPLE");
StringWriter tmp = new StringWriter();
model.write(tmp, "N-TRIPLE"); // make data to be N-TRIPLE
StringWriter oneOfRDF = new StringWriter();
oneOfRDF.write(name.toString());
oneOfRDF.append("," + tmp.toString());
outputWriter.append(";" + oneOfRDF.toString());
}
// Write to File
FileWriter writer = new FileWriter(sfileName, true);
writer.write(outputWriter.toString());
// close buffer and file
br.close();
writer.close();
return outputWriter.toString();
}
public String readRDF(String key1) {
InputStream in = FileManager.get().open(sfileName);
if (in == null) {
throw new IllegalArgumentException("File: " + sfileName
+ " not found");
}
Model model = ModelFactory.createDefaultModel();
model.read(in, "");
Resource key = model.getResource(key1);
Selector selector = new SimpleSelector(key, (Property) null,
(Resource) null);
StmtIterator iter = model.listStatements(selector);
StringWriter outputWriter = new StringWriter();
if (iter.hasNext()) {
while (iter.hasNext()) {
// if (outputWriter == null)
// outputWriter.write(","
// + iter.nextStatement().getObject().toString());
outputWriter.append(","
+ iter.nextStatement().getObject().toString());
}
} else {
System.out.println("No vcards were found in the database");
}
return outputWriter.toString();
// Model model = ModelFactory.createDefaultModel();
// model.read("file:./bin/tw/nccu/edu/dht/data.rdf", "N-TRIPLE");
// Resource rdf = model.getResource(key1);
// Resource name = (Resource)
// rdf.getRequiredProperty(RDF.type).getObject();
// String fullName = rdf.getRequiredProperty(RDF.type).getString();
}
}