我有以下 2 个文件。1 个文档包含以下数据:
<Content>
<sem:triples xmlns:sem="http://marklogic.com/semantics">
<sem:triple>
<sem:subject>http://sector#Basic_Materials</sem:subject>
<sem:predicate>http://relationship#isTRBCEconomicSectorOf</sem:predicate>
<sem:object>http://company#CST_Mining_Group_Limited</sem:object>
</sem:triple>
</sem:triples>
<AnalystName>Henrik Christiansson</AnalystName>
<DocumentFormat>pdf</DocumentFormat>
</Content>
另一个包含以下数据的文档:
<Content>
<sem:triples xmlns:sem="http://marklogic.com/semantics">
<sem:triple>
<sem:triple>
<sem:subject>http://sector#Energy_-_Fossil_Fuels</sem:subject>
<sem:predicate>http://relationship#isTRBCEconomicSectorOf</sem:predicate>
<sem:object>http://company#Bodycote_PLC</sem:object>
</sem:triple>
</sem:triple>
</sem:triples>
<AnalystName>Pawel Dziedzic</AnalystName>
<DocumentFormat>pdf</DocumentFormat>
</Content>
我在这两个嵌入式三元组之间建立了关系
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
INSERT DATA
{
<http://company#CST_Mining_Group_Limited> rdfs:subClassOf <http://company#Bodycote_PLC> .
}
当我查询以获取 Bodycote Plc 的经济部门的所有结果时,我得到了两个三元组,这是正确的,但是当我使用组合查询时,它并没有给我所需的结果。
例如,当查询具有 BodyCote 的经济部门并且分析师姓名是 Henrik Christiansson 时,我希望它返回第一个三元组,但它没有。
我使用了以下查询:
xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics"
at "/MarkLogic/semantics.xqy";
sem:sparql(
'SELECT ?subject
WHERE {
?subject <http://relationship#isTRBCEconomicSectorOf> <http://company#Bodycote_PLC>
}',
(),
(),
cts:and-query( (
cts:element-value-query( xs:QName("AnalystName"), "Henrik Christiansson" )
) )
)
我想知道是否有一种方法可以在组合查询中应用推理。