【发布时间】:2016-05-30 07:37:38
【问题描述】:
考虑以下 subClassOf 关系:
m1
|_ m1_1
|_ m1_1_1
以下查询正确返回 m1_1 和 m1_1_1:
sem:sparql('
SELECT *
WHERE {
?s <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ <http://example.org/people#m1> .
}', (),
("optimize=1"))
但是,下面的查询只返回 m1_1:
sem:sparql('
SELECT *
WHERE {
?s <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ <http://example.org/people#m1> .
}', (),
("optimize=0"))
*也是如此。
升级到 MarkLogic 8.0-5.2 后,之前的 sem:sparql 查询返回正确的结果,但在对象是参数时返回正确结果。例如。以下查询不返回任何内容:
sem:sparql('
SELECT *
WHERE {
?s <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?item .
}',
(map:new ((map:entry ("item", sem:iri("http://example.org/people#m1"))))),
("optimize=0"))
【问题讨论】:
-
在没有看到您的数据的情况下,我们无法重现这一点。例如,它可能是 IRI 类中的一个拼写错误。 (我怀疑是这样,但这不是任何人都可以用来测试的完整示例。)
-
您使用的是什么版本的 MarkLogic?在 8.0-5.2 上,我得到相同的结果,将
optimize设置为 1 或 0。 -
@scotthenninger:感谢测试,我在 8.0-3.2。
-
@JoshuaTaylor:我的数据和我描述的一样简单,三个URI之间只有两个子类关系。
-
我尝试了一个包含 15M 三元组的非常复杂的层次结构。是否可以升级?在 8.0-4.0 左右有一些重要的语义工作。
标签: sparql marklogic marklogic-8 propertypath