Skip to content

Commit f1dfae3

Browse files
committed
prototype: first test using jena
1 parent 73da92e commit f1dfae3

File tree

3 files changed

+69
-4
lines changed

3 files changed

+69
-4
lines changed

bin/.keep

Whitespace-only changes.

src/app/App.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package app;
22

3+
import com.semanticcrawler.impl.SemanticCrawlerImpl;
4+
35
import org.apache.jena.datatypes.xsd.XSDDatatype;
46
import org.apache.jena.rdf.model.Model;
57
import org.apache.jena.rdf.model.ModelFactory;
@@ -11,10 +13,9 @@ public class App {
1113
public static void main(String[] args) throws Exception {
1214
Model model = ModelFactory.createDefaultModel();
1315

14-
Resource subject = model.createResource(namespace + "message");
15-
Property property = model.createProperty(namespace + "says");
16-
subject.addProperty(property, "Hello World!", XSDDatatype.XSDstring);
16+
SemanticCrawlerImpl crawler = new SemanticCrawlerImpl();
17+
crawler.search(model, "http://dbpedia.org/resource/Zico");
1718

18-
model.write(System.out);
19+
// model.write(System.out);
1920
}
2021
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.semanticcrawler.impl;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import com.semanticcrawler.crawler.SemanticCrawler;
7+
8+
import org.apache.jena.rdf.model.Model;
9+
import org.apache.jena.rdf.model.ModelFactory;
10+
import org.apache.jena.rdf.model.Property;
11+
import org.apache.jena.rdf.model.RDFNode;
12+
import org.apache.jena.rdf.model.Resource;
13+
import org.apache.jena.rdf.model.Statement;
14+
import org.apache.jena.rdf.model.StmtIterator;
15+
import org.apache.jena.vocabulary.OWL;
16+
17+
/**
18+
* SemanticCrawlerImpl
19+
*/
20+
public class SemanticCrawlerImpl implements SemanticCrawler {
21+
private List<String> visitedURIs;
22+
23+
public SemanticCrawlerImpl() {
24+
this.visitedURIs = new ArrayList<>();
25+
}
26+
27+
private boolean visited(String URI) {
28+
return visitedURIs.contains(URI);
29+
}
30+
31+
private boolean isOwlSameAsProperty(Property property) {
32+
return property.getURI().equals(OWL.sameAs.getURI());
33+
}
34+
35+
@Override
36+
public void search(Model graph, String resourceURI) {
37+
Model model = ModelFactory.createDefaultModel();
38+
model.read(resourceURI);
39+
40+
Resource resource = model.getResource(resourceURI);
41+
42+
StmtIterator statements = model.listStatements(resource, (Property)null, (RDFNode)null);
43+
while (statements.hasNext()) {
44+
Statement statement = statements.next();
45+
Property property = statement.getPredicate();
46+
RDFNode value = statement.getObject();
47+
48+
if (isOwlSameAsProperty(property)) {
49+
String uri = value.asNode().getURI();
50+
try {
51+
if (!visited(uri)) {
52+
System.out.println(uri);
53+
this.visitedURIs.add(uri);
54+
search(graph, uri);
55+
}
56+
} catch (Exception e) {
57+
e.equals(null);
58+
}
59+
} else {
60+
graph.add(resource, statement.getPredicate(), statement.getObject());
61+
}
62+
}
63+
}
64+
}

0 commit comments

Comments
 (0)