在apache jena上使用sparql查询本地RDF文件

时间:2015-05-08 07:54:30

标签: java apache rdf sparql jena

我的项目是创建一个Web应用程序,它将从某个rdfModel.txt搜索一个地方,我不知道如何在jena sparql上查询它,这是我到目前为止所拥有的。

@Path("/luoghi")
public class mostraRisultati {

@GET
@Produces(MediaType.TEXT_HTML)
public String getSearch() {

    String s = "Get Method called";

    return s;

}

@POST
public Response search(@FormParam("text") String text)
        throws URISyntaxException {

    System.out.println("post");

    String searchPlace = toURI(text);
    final String place = text.toLowerCase();
    System.out.println("Searching for : " + text);

    // Create a model from the rdfModel.txt
    Model model = ModelFactory.createDefaultModel();
    FileInputStream inputStream = null;
    try {
        // Find the path of the RDFModel text file provided in moodle
        inputStream = new FileInputStream(
                "C:\\Users\\AmielJairo\\Desktop\\RdfModel.txt");
    } catch (FileNotFoundException e) {
        System.out.println("RDF file not found.");
    }
    RDFDataMgr.read(model, inputStream, Lang.TURTLE);


    //RDFDataMgr.write(System.out, model, Lang.TURTLE);

    String query = "PREFIX property:  <file:///E:/Programming/Java/Eclipse%20Java%20%20EE/eclipse#> "

            + "PREFIX resource: <http://localhost:8080/LAB5/rest/luoghi#>"
            + "SELECT ?object WHERE {"
            + "?risorsa property:descrizione ?object"
            + "} limit 10";


    QueryExecution qe = QueryExecutionFactory.create(query, model);
    ResultSet results = qe.execSelect();
    for ( ; results.hasNext() ; ) {
    QuerySolution soln = results.nextSolution() ;
    Literal d = soln.getLiteral("nome");

    System.out.println("Query solution : " + soln);
    System.out.println("Literal : " +d);

    }

    return Response
            .status(Status.CREATED)
            .location(
                    new URI("http://localhost:8080/LAB5/rest/luoghi/"
                            + searchPlace)).build();

}// post

public String toURI(String place) {

    String newPlaceURI = place.replaceAll(" ", "_");

    return newPlaceURI;
}
}

它尚未完成,我只是测试控制台会发生什么,到目前为止还没有。我需要知道如何使用本地rdfModel.txt,将它以乌龟格式放入模型中并进行查询。

以下是rdfModel.txt文件的外观

这几行

<http://localhost:8080/LAB5/rest/luoghi/Oratorio di San Giacomo della Marina>
    <descrizione>  "L' Oratorio di San Giacomo della Marina, edificato sulle mura della città di Genova, lambite dal mare fino a poco più di un secolo fa, costituì per tutto il medioevo una tappa importante per i pellegrini in cammino verso Santiago di Compostela. Dell’originario edificio stile romanico non rimane più traccia visibile e l’oratorio, come appare oggi, è il frutto delle opere svolte nei secoli XVII e XVIII, periodo in cui la Confraternita di San Giacomo della Marina godeva di grande prestigio e potenza. Solo verso la fine del Settecento assunse l’aspetto attuale con il completamento della decorazione della volta e delle pareti. Danneggiato durante l’ultimo conflitto, si sarebbe avviato verso un’inesorabile decadenza se la Confraternita non avesse iniziato nel 1987 onerosi lavori di restauro che negli anni 1990-1992 subirono un importante e decisivo impulso. È stato necessario intervenire, oltre che sul tetto e sulla facciata, sulle finestre, sul pavimento, sugli intonaci, sugli stucchi, sugli impianti, sugli arredi e - in primis - sulle tele, che costituiscono il valore dell’Oratorio."^^<http://www.w3.org/2001/XMLSchema#string> ;
    <immagine>     "http://commons.wikimedia.org/wiki/Special:FilePath/Oratorio_di_San_Giacomo_della_Marina_Genova_01.jpg"^^<http://www.w3.org/2001/XMLSchema#string> ;
    <latitudine>   "44.4053"^^<http://www.w3.org/2001/XMLSchema#string> ;
    <longitudine>  "8.92861"^^<http://www.w3.org/2001/XMLSchema#string> .

0 个答案:

没有答案