Marklogic 标记逻辑嵌入三元组中的推理
我有以下两个文件。 1文件包含以下数据:Marklogic 标记逻辑嵌入三元组中的推理,marklogic,inference,triplestore,triples,inference-engine,Marklogic,Inference,Triplestore,Triples,Inference Engine,我有以下两个文件。 1文件包含以下数据: <Content> <sem:triples xmlns:sem="http://marklogic.com/semantics"> <sem:triple> <sem:subject>http://sector#Basic_Materials</sem:subject> <sem:predicate>http://relationship#isT
<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>
http://sector#Basic_Materials
http://relationship#isTRBCEconomicSectorOf
http://company#CST_Mining_Group_Limited
亨里克·克里斯蒂安森
pdf
以及另一份包含以下数据的文件:
<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>
http://sector#Energy_-_化石燃料
http://relationship#isTRBCEconomicSectorOf
http://company#Bodycote_PLC
帕维尔·季季季奇
pdf
我已经在这两个嵌入的三元组之间建立了一个关系
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
INSERT DATA
{
<http://company#CST_Mining_Group_Limited> rdfs:subClassOf <http://company#Bodycote_PLC> .
}
前缀rdfs:
插入数据
{
rdfs:子类。
}
当我查询以获得Bodycote Plc economicSector的所有结果时,我会得到两个三元组,这是正确的,但当我使用组合查询时,它不会给出所需的结果
例如,当查询的经济部门为BodyCote,并且分析师名称为Henrik Christianson时,我希望它返回第一个三元组,但它没有返回
我使用了以下查询:
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" )
) )
)
xquery版本“1.0-ml”;
导入模块命名空间sem=”http://marklogic.com/semantics"
位于“/MarkLogic/semantics.xqy”;
sem:sparql(
“选择”主题
在哪里{
?主题
}',
(),
(),
cts:和查询((
元素值查询(xs:QName(“AnalystName”),“Henrik Christianson”)
) )
)
我想知道是否有一种方法可以在组合查询中应用推断。您的方法的问题是cts:query只选择相关文档,而不是指定子类的托管三元组。这里您并没有使用真正的推理,而是通过添加三元组来将推理规则具体化。改用规则集,这样更灵活,效果也更好。有关详细信息,请参阅 规则集文件就位后,您需要将查询包装到中,然后使用以下命令应用规则集:
sem:sparql(
'
选择?主题
在哪里{
?主题
sem:sparql(
'
SELECT ?subject
WHERE {
?subject <http://relationship#isTRBCEconomicSectorOf <http://company#Bodycote_PLC>
}
',
(),
(),
sem:ruleset-store(
"myrules",
sem:store(
(),
cts:and-query((
cts:element-value-query( xs:QName("AnalystName"), "Henrik Christiansson" )
))
)
)
)