有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java打印日期时间,但不在Sparql输出中指定数据类型

我在Jena中使用以下sparql查询来打印一些信息:

   String qr = "PREFIX : <http://www.example.com/tempsensor#>\n" +
               "PREFIX  xsd: <http://www.w3.org/2001/XMLSchema#> \n"+
                 "SELECT \n"+
                "?Place ?Temperature ?Date \n"+ 
                 "WHERE\n"+
                "{ ?ind :locatedIn ?Place .\n " +
                  "?ind :measures ?Temperature .\n " +
                  "?ind :onDate ?Date .\n " +
                "FILTER(regex(str(?Place),'Delhi', 'i'))\n"+
                "FILTER ( datatype(?Date) = xsd:dateTime)\n"+
                "}";

获得的产出是:

 --------------------------------------------------------------
| Place  | Temperature | Date                                |
==============================================================
| :Delhi | 16          | "2014-10-02T03:20:10"^^xsd:dateTime |

但是,我不希望数据类型附加在日期列中。我需要像这样的输出

--------------------------------------------------------------
| Place  | Temperature | Date                                |
==============================================================
| :Delhi | 16          | 2014-10-02T03:20:10                 |

我应该如何在查询中指定它


共 (1) 个答案

  1. # 1 楼答案

    您可以使用项目表达式仅获取文本的字符串形式:

    String qr = "PREFIX : <http://www.example.com/tempsensor#>\n" +
                "PREFIX  xsd: <http://www.w3.org/2001/XMLSchema#> \n"+
                "SELECT \n"+
                "?Place ?Temperature (STR(?Date) AS ?StrDate) \n"+ 
                "WHERE\n"+
                "{ ?ind :locatedIn ?Place .\n " +
                "  ?ind :measures ?Temperature .\n " +
                "  ?ind :onDate ?Date .\n " +
                "  FILTER(regex(str(?Place),'Delhi', 'i'))\n"+
                "  FILTER ( datatype(?Date) = xsd:dateTime)\n"+
                "}";
    

    这里,我们使用内置的STR()函数将?Date的值转换为不带数据类型的字符串形式

    SPARQL定义了广泛的内置函数,值得您花时间阅读-http://www.w3.org/TR/sparql11-query/#expressions