小编Mus*_*h87的帖子

使用Java代码将SPARQL查询到DBPedia

我想获得DBPedia页面的URI,其标签等于"London".也就是说,当我查询DBPedia时,如果页面是属性rdfs:label"London",那么我想得到它的URI,例如http://dbpedia.org/resource/London.我正在使用以下Java代码,但我没有得到任何结果.我在这做错了什么?

String strings = "London";
String service = "http://dbpedia.org/sparql";
String query = "PREFIX dbo:<http://dbpedia.org/ontology/>"
        + "PREFIX : <http://dbpedia.org/resource/>"
        + "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#/>"
        + "select ?URI where {?URI rdfs:label "+strings+".}";
QueryExecution qe=QueryExecutionFactory.sparqlService(service, query);
ResultSet rs = qe.execSelect();
while (rs.hasNext()){
    QuerySolution s= rs.nextSolution();
    System.out.println(s.getResource("?URI").toString());
}
Run Code Online (Sandbox Code Playgroud)

java rdf sparql dbpedia

4
推荐指数
1
解决办法
5606
查看次数

如何从SPARQL结果中排除具有特定rdf:type的资源?

我有这个查询SPARQL我在它上运行.dbpedia.org/sparql:

select ?resource where {
  ?resource rdfs:label "Piemonte"@it
}
Run Code Online (Sandbox Code Playgroud)

我得到这个结果:

http://it.dbpedia.org/resource/Categoria:Piemonte
http://it.dbpedia.org/resource/Piemonte
Run Code Online (Sandbox Code Playgroud)

我希望只有http://it.dbpedia.org/resource/Piemonte.我试图写这个查询SPARQL 从结果中删除http://it.dbpedia.org/resource/Categoria:Piemonte:

select ?resource where {
  ?resource rdfs:label "Piemonte"@it
  FILTER (rdf:type != skos:Concept)
}
Run Code Online (Sandbox Code Playgroud)

因为我注意到http://it.dbpedia.org/resource/Categoria:Piemonte有对象skos:Concepthttp://it.dbpedia.org/resource/Piemonte没有,但我得到了相同的结果.为什么?我在这做错了什么?

我也尝试添加LIMIT 1,但结果是http://it.dbpedia.org/resource/Categoria:Piemonte,因为结果不保证是相同的顺序.

java rdf semantic-web rdfs sparql

4
推荐指数
1
解决办法
2079
查看次数

使用iSPARQL使用相似性度量来比较值

我有一个问题问你.

我想编写一个查询,检索与给定字符串"Londn"相似的值(给定相似函数,如Lev),以与DBPedia的谓词"RDFS:label"进行比较.例如,在输出中,我想获得"伦敦"的价值.我已经读过可用的方法可能是使用iSPARQL("不精确的SPARQL"),尽管它在文献中没有被广泛使用.

我可以使用iSPARQL还是有一些SPARQL方法来执行相同的操作?

semantic-web similarity sparql dbpedia linked-data

3
推荐指数
1
解决办法
643
查看次数

如何使用Fuseki和Jena TDB

我有一个问题问你.

我有一个三元店"Jena TDB",我读过我可以为本地存储的RDF数据设置SPARQL端点.特别是,我在文献中看到,与耶拿TDB一起使用的是Fuseki.我以这种方式在Jena TDB中加载了我的文件rdf:

public void store(){
    String directory = "C:\\tdb";
    String source = "C:\\file1.rdf";
    String source1 = "C:\\file2.rdf";
    Dataset dataset = openTDB(directory);
    Model tdb = loadModel(source, dataset);
    dataset.addNamedModel("File1", tdb);

    Model tdb1 = loadModel(source1, dataset);
    dataset.addNamedModel("File2", tdb1);

    tdb.close();
    tdb1.close();
    dataset.close();
}


public Dataset openTDB(String directory){
    // open TDB dataset
    Dataset dataset = TDBFactory.createDataset(directory);
    return dataset;
}


public Model loadModel(String source, Dataset dataset){

    Model tdb = ModelFactory.createDefaultModel();
    FileManager.get().readModel( tdb, source, "RDF/XML" );
    return tdb;
}
Run Code Online (Sandbox Code Playgroud)

我正在阅读Apache网站上的Fuseki文档和这篇针对Jena(TDB)的Desktop SPARQL客户端文章,但我有问题. …

java sparql jena fuseki tdb

3
推荐指数
1
解决办法
3799
查看次数

我如何编写在Java代码中使用相似性度量的SPARQL查询

我想知道在Java代码中编写此SPARQL查询的简单方法:

select ?input
       ?string
       (strlen(?match)/strlen(?string) as ?percent)
where {
  values ?string { "London" "Londn" "London Fog" "Lando" "Land Ho!"
                   "concatenate" "catnap" "hat" "cat" "chat" "chart" "port" "part" }

  values (?input ?pattern ?replacement) {
    ("cat"   "^x[^cat]*([c]?)[^at]*([a]?)[^t]*([t]?).*$"                              "$1$2$3")
    ("Londn" "^x[^Londn]*([L]?)[^ondn]*([o]?)[^ndn]*([n]?)[^dn]*([d]?)[^n]*([n]?).*$" "$1$2$3$4$5")
  }

  bind( replace( concat('x',?string), ?pattern, ?replacement) as ?match )
}
order by ?pattern desc(?percent)
Run Code Online (Sandbox Code Playgroud)

此代码包含在讨论中使用iSPARQL使用相似性度量来比较值.此代码的目的是查找与DBPedia上的给定单词类似的资源.这个方法考虑到我事先知道字符串及其长度.我想知道如何在参数化方法中编写此查询,无论单词和长度如何,它都会返回给我相似性度量.

java similarity sparql jena

2
推荐指数
1
解决办法
700
查看次数

我如何访问 List 的数组元素

我有个问题:

我有一个用不同值填充的 List Java。例如,我有:

List<String[]> l = new ArrayList();
String[] lis = new String[3];
lis[0] = "A";
lis[1] = "B";
lis[2] = "C";
l.add(lis);
Run Code Online (Sandbox Code Playgroud)

我也有其他价值观。现在,我只想在此列表中搜索第一个字段。例如,我想要 A 的 indexOf。我曾尝试编写此代码:

int index = l.indexOf("A");
Run Code Online (Sandbox Code Playgroud)

但我得到 -1 作为回报。我想知道在加载数组时如何访问列表的字段。

java arrays list arraylist indexof

1
推荐指数
1
解决办法
1369
查看次数

使用 OpenCSV 在输入中使用字节数组将 CSV 文件转换为 XML

我有个问题:

我正在尝试将我的 CSV 文件转换为 XML 文件,并且我看到了这篇文章的响应:Java lib 或应用程序将 CSV 转换为 XML 文件?

我看到我需要使用这个 OpenCSV 库,特别是,我必须使用以下代码:

CSVReader reader = new CSVReader(new FileReader(startFile));
Run Code Online (Sandbox Code Playgroud)

在哪里 String startFile = "./startData.csv";

现在,我没有得到一个字符串作为 startFile,但我有一个byte[],因为对于其他问题,我已经将我的文件转换为 byte[]。如何将此代码与 byte[] 一起使用?

有替代品吗?

谢谢

java xml parsing converter opencsv

0
推荐指数
1
解决办法
3381
查看次数

在Virtuoso TripleStore上加载RDF三元组时出错

我有个问题.

我正在http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtJenaProvider上关注sample8 .

特别是,我有这个代码:

package ExampleVirtuoso;

import com.hp.hpl.jena.query.*;
import com.hp.hpl.jena.rdf.model.RDFNode;
import virtuoso.jena.driver.*;

public class ExampleVirtuoso {
    public static void main(String[] args) {
        /*          STEP 1          */
        VirtGraph set = new VirtGraph("jdbc:virtuoso://localhost:1111", "dba", "dba");

        /*          STEP 2          */
        System.out.println("\nexecute: CLEAR GRAPH <http://test1>");
        String str = "CLEAR GRAPH <http://test1>";
        VirtuosoUpdateRequest vur = VirtuosoUpdateFactory.create(str, set);
        vur.exec();

        System.out.println("\nexecute: INSERT INTO GRAPH <http://test1> { <aa> <bb> 'cc' . <aa1> <bb1> 123. }");
        str = "INSERT INTO GRAPH <http://test1> { <aa> <bb> 'cc' . …
Run Code Online (Sandbox Code Playgroud)

java rdf jena triplestore virtuoso

-2
推荐指数
1
解决办法
1143
查看次数