-4

How to implement this algorithm in java?

SPARQL query extracts the patterns
with length one and their frequencies from the linked data:
SELECT DISTINCT ?c1 ?p ?c2 (COUNT(*) as ?count)
WHERE { ?x ?p ?y. ?x rdf:type ?c1. ?y rdf:type ?c2. }
GROUP BY ?c1 ?p ?c2

Input: LD (the linked data repository), k (maximum length of patterns)

Output: A set of LD patterns

1: P1 <- extract patterns of length one from LD
2: P <- P1, i <-1
3: while i < k do
4: for each pattern pi -> Pi do
5: for each ontology class c in pi do
6: P1,c all the patterns in P1 that include c
7: for each pattern p1,c 2 P1,c do
8: pjoin construct a pattern by joining pi and p1,c on node c
9: if pjoin exists in LD then
10: Pi+1 Pi+1 [ pjoin
11: end if
12: end for
13: end for
14: end for
15: P P [ Pi+1, i i + 1
16: end while
return P
Fiers
  • 21
  • 3
  • show your effort! – Wasi Ahmad Dec 13 '16 at 01:57
  • while (results.hasNext()) { QuerySolution qs = results.next(); System.out.println(qs); //display the result //Recursive Algorithm for Extract LD Pattern List LD = new ArrayList<>(); int i = 1; int k = 2; //ResultSet P1 = results; //ResultSet = Pi, qs = p //ResultSet P = P1; while (i < k) { for (){ //each pattern pi => Pi – Fiers Dec 13 '16 at 02:15

1 Answers1

1

//Read a file into a model Model model = ModelFactory.createOntologyModel(); InputStream in = FileManager.get().open("/Users/nurulfirdaus/Documents/University0_0.owl"); model.read(in,null, "RDF/XML");

    //Put the query as string
    String sparqlQuery =
           "PREFIX ub:<http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#>\n" +
           "PREFIX owl:<http://www.w3.org/2002/07/owl#>\n" +
           "PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
           "PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>\n" +
           "\n" +     
           "select distinct ?c1 ?p ?c2 (COUNT(*) as ?count) \n"+ //extract length 1
           "where { \n" +
           "?x ?p ?y. \n" + //List all the resources with the property "?p"
           "?x rdf:type ?c1. \n" +
           "?y rdf:type ?c2. \n" +
           "} \n" +
           "group by ?c1 ?p ?c2 ";

   //Execute the query
   Query query = QueryFactory.create(sparqlQuery);
   QueryExecution qe = QueryExecutionFactory.create(query, model);
   ResultSet results = qe.execSelect();
Fiers
  • 21
  • 3
  • Is this the answer to your question? I mean this simply shows how to run the SPARQL query via Apache Jena API. – UninformedUser Dec 13 '16 at 10:01
  • No, I just extract length 1 from the the sparql query. I didn't know how to implement the algorithm. Can you help me? AKSW – Fiers Dec 13 '16 at 10:21
  • I do not understand. You have the algorithm in pseudo code and it's basically doing it in Java - some loops + query building via String concatenation + query execution. No magic. – UninformedUser Dec 13 '16 at 11:56