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



我正在使用此查询来获取使用耶拿和 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();

我应该如何更改查询以获取单词是其标签一部分的类?实际上,我需要在 Spark 中使用类似"sql Like 语句"之类的东西。谢谢你帮助我!

它不是Spark,而是Sparql,因为apache spark head在这里。您正在寻找的是字符串函数。您可能正在寻找 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、文字。

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

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

最新更新