像条件一样使用Spark查询来获取rdfs:label

时间:2017-01-29 20:55:26

标签: java apache-spark jena ontology

我正在使用此查询使用jena和spark获取本体中的特定类。

 final String queryString = "" +
            "prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n" +
            "\n" +
            "select ?class where {\n" +
            "  ?class rdfs:label \""+ word +"\"\n" +
            "}\n" +
            "";
ResultSet results = QueryExecutionFactory.create( queryString, model).execSelect();

我应该如何更改查询以获取word是其标签的一部分? 实际上我需要类似&#34; sql之类的声明&#34;在火花中。 谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

对于apache spark head here,它不是Spark它是Sparql。您正在寻找的是String函数。您可能正在寻找regex()函数。但是除了最简单的查询之外的任何事情都需要花费很多时间,事实上建议不要在任何数据库系统中使用。您的SPARQL字符串应该是:

final String queryString =
        "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> " +
        "SELECT ?s ?label ?contains" 
        "WHERE {" +
        "   ?s rdfs:label ?label ." +
        "   BIND(CONTAINS(?label,\""+ variableToFind +"\") AS ?contains)"
        "}";

此外,您不是在寻找正在寻找主题的课程,而且可以是URI,BN,文字。

答案 1 :(得分:0)

经过多次搜索后我找到了正确的查询

String Quert ="PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>"
            + " SELECT ?x WHERE { ?x rdfs:label ?v ." +
            "FILTER regex(?v, \"word\", \"i\")}" ;
相关问题