SPARQL - 如果不存在则插入 属性
SPARQL - INSERT property if not exists
我目前正在尝试创建一个 SPARQL 查询,如果它不存在于目标图中,它可以插入新的公理。我正在使用集成了 Jena ARQ 的 ONT-API。
这是我的空白目标查询 ontology:
PREFIX t: <testOntologyIRI#>
INSERT DATA {
t:testClassA t:hasProperty t:testClassB
}
这没有产生预期的结果:我的空白处有一个新的公理 ontology testClassA hasProperty testClassB
如果目标 ontology 中不存在新的 属性,我会遇到一些问题。
要注意的是,如果我 运行 上面的相同查询(知道 属性 hasProperty 存在于 ontology 中)==> 它会隐式生成单独的 testClassA、testClassB最后是我的目标公理。
为了解决这个问题 "issue",我想在我的查询中创建条件,例如:
PREFIX t: <testOntologyIRI#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
INSERT DATA {
t:testClassA ?hasProperty t:testClassB .
BIND(IF(EXISTS{t:hasProperty},t:hasProperty, t:hasProperty a owl:ObjectProperty) as ?hasProperty).
}
这个查询对我来说很麻烦,而且它不起作用。
您建议编辑什么以自动生成 ontology 中不存在的 属性 并且需要插入所需的公理?
此致,
您需要使用负条件来测试特定三元组的缺失。
prefix t:<testOntologyIRI#>
insert { t:testClassA t:hasProperty t:testClassB .
t:hasProperty rdf:type owl:Property
}
where { minus { t:hasProperty rdf:type owl:Property }}
如果 属性 已经存在,则不会插入任何内容。
我目前正在尝试创建一个 SPARQL 查询,如果它不存在于目标图中,它可以插入新的公理。我正在使用集成了 Jena ARQ 的 ONT-API。
这是我的空白目标查询 ontology:
PREFIX t: <testOntologyIRI#>
INSERT DATA {
t:testClassA t:hasProperty t:testClassB
}
这没有产生预期的结果:我的空白处有一个新的公理 ontology testClassA hasProperty testClassB
如果目标 ontology 中不存在新的 属性,我会遇到一些问题。
要注意的是,如果我 运行 上面的相同查询(知道 属性 hasProperty 存在于 ontology 中)==> 它会隐式生成单独的 testClassA、testClassB最后是我的目标公理。
为了解决这个问题 "issue",我想在我的查询中创建条件,例如:
PREFIX t: <testOntologyIRI#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
INSERT DATA {
t:testClassA ?hasProperty t:testClassB .
BIND(IF(EXISTS{t:hasProperty},t:hasProperty, t:hasProperty a owl:ObjectProperty) as ?hasProperty).
}
这个查询对我来说很麻烦,而且它不起作用。 您建议编辑什么以自动生成 ontology 中不存在的 属性 并且需要插入所需的公理?
此致,
您需要使用负条件来测试特定三元组的缺失。
prefix t:<testOntologyIRI#>
insert { t:testClassA t:hasProperty t:testClassB .
t:hasProperty rdf:type owl:Property
}
where { minus { t:hasProperty rdf:type owl:Property }}
如果 属性 已经存在,则不会插入任何内容。