Like Condition 使用 Spark 查询得到 rdfs:label

Like Condition to get rdfs:label using Spark query

我正在使用此查询在使用 jena 和 spark 的 ontology 中获取特定的 class。

 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();

我应该如何更改查询以获取 classes 这个词是他们标签的一部分? 实际上我在 spark 中需要类似 "sql Like statement" 的东西。 谢谢你帮助我!

它不是 Spark,它是 Sparql,用于 apache spark 头 here。您正在寻找的是 String 函数。您可能正在寻找 regex() 函数。但是除了最琐碎的查询之外,其他任何事情都会花费很多时间,实际上建议不要在任何数据库系统中使用 like。您的 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)"
        "}";

此外,您不是在搜索 class 您正在寻找的主题可以是 URI、BN、文字。

经过更多搜索,我找到了正确的查询

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