【发布时间】:2014-03-11 05:58:53
【问题描述】:
我可以使用 ARQ 代数 (com.hp.hpl.jena.sparql.algebra) 从 sparql 查询字符串中获取代数形式:
String queryStr =
"PREFIX foaf: <http://xmlns.com/foaf/0.1/>" +
"SELECT DISTINCT ?name ?nick" +
"{?x foaf:mbox <mailt:person@server> ." +
"?x foaf:name ?name" +
"OPTIONAL { ?x foaf:nick ?nick }}";
Query query = QueryFactory.create(queryStr);
Op op = Algebra.compile(query);
打印op的返回值:
(distinct
(project (?name ?nick)
(join
(bgp
(triple ?x <http://xmlns.com/foaf/0.1/mbox> <mailt:person@server>)
(triple ?x <http://xmlns.com/foaf/0.1/name> ?nameOPTIONAL)
)
(bgp (triple ?x <http://xmlns.com/foaf/0.1/nick> ?nick)))))
返回值是Op类型,但是我找不到任何可以将op解析为元素的直接方法,例如s、p、o的基本图形模式,以及它们之间的关系这些图形模式。
感谢任何提示,谢谢。
【问题讨论】:
-
我不知道打印输出是否符合良好的语法。它可能,但一般来说,
toString(您在此处看到的)的结果是提供对象的 人类 可读描述,而不一定是明确的机器可读表示。通常可以找出“打破”解析 toString 输出尝试的方法。例如,见Parsing List<Map<String,String>> String form to POJO again。