0

首先我应该提到我正在使用 C-SPARQL,它用于流推理,所以我有与三元组相关的时间戳。下面是一个查询,它返回给我一个主题和谓词,以及使用 C-SPARQL 中的时间戳函数分配给它的最新时间戳(我希望),但是我希望它返回与此时间戳关联的对象值也是。有任何想法吗?我试图将 ?o 粘贴到 select 子句中,但这会产生 NON-group key 错误。

"REGISTER QUERY StreamQuery AS "
                                    + "PREFIX ex: <http://localhost/default/tr069#> "
                                    + "PREFIX f: <http://larkc.eu/csparql/sparql/jena/ext#> "
                + "SELECT DISTINCT ?s ?p (MAX(f:timestamp(?s,?p,?o)) AS ?ts)"
                + "FROM STREAM <http://localhost/default/tr069> [RANGE 5s STEP 1s] "
                + "WHERE { ?s ?p ?o . "
                                    + "} GROUP BY ?s ?p "

如果我还不够清楚,请询问。

编辑:经过一番摆弄,我似乎得到了看起来正确的结果,但不介意听到其他人对我所做的事情的看法。

"REGISTER QUERY StreamQuery AS "
                                    + "PREFIX ex: <http://localhost/default/tr069#> "
                                    + "PREFIX f: <http://larkc.eu/csparql/sparql/jena/ext#> "
                + "SELECT DISTINCT ?s ?p ?o "
                + "FROM STREAM <http://localhost/default/tr069> [RANGE 5s STEP 1s] "
                + "WHERE { ?s ?p ?o . "
                                    + "{SELECT ?s ?p (MAX(f:timestamp(?s,?p,?o)) AS ?ts) WHERE{?s ?p ?o} GROUP BY ?s ?p}"
                                    + " FILTER(f:timestamp(?s,?p,?o)=?ts) } " 
4

0 回答 0