【发布时间】:2018-09-19 04:49:12
【问题描述】:
在下面的 RDF 示例中,我想根据条件获取属性之一的值。 条件如下:
- 如果属性
referProperty的值是"ex:sender",那么我得到属性ex:sender的值。 - 如果属性
referProperty的值为"ex:reciever",则我得到属性ex:reciever的值。
@prefix ex: <http://www.example.org#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:mail1
ex:sender "John"^^xsd:string ;
ex:receiver "Bill"^^xsd:string ;
ex:paymentType ex:paymentType1 .
ex:mail2
ex:sender "Jack"^^xsd:string ;
ex:receiver "Tom"^^xsd:string ;
ex:paymentType ex:paymentType2 .
ex:paymentType1
ex:paymentTypeDescription "PREPAID"^^xsd:string ;
ex:referProperty "ex:sender"^^xsd:string .
ex:paymentType2
ex:paymentTypeDescription "COLLECT"^^xsd:string ;
ex:referProperty "ex:receiver"^^xsd:string .
Sparql 获取值如下:
PREFIX ex:<http://ww....ex#>
SELECT ?mail ?refProp ?payer
WHERE
{
{
SELECT ?mail ?refProp
WHERE
{
?mail ex:paymentType / ex:referProperty ?refProp.
}
}
?mail ?refProp ?payer.
}
可以通过 Sparql 获取值。但我质疑使用上述 RDF 样本和 Sparql 的方式是不规则的,因为它似乎扩展了一阶谓词逻辑之外。 使用从文字节点获取的值作为变量来搜索属性是不规则的。理论上,属性“ex:referProperty”应该在RDFS中定义。 你认为是吗?如果您这么认为,请教我一个常规方法,其中包括正确的 RDF 和正确的 Sparql。
【问题讨论】:
-
我不明白...给定样本数据的预期结果是什么?什么意思 " 使用从文字节点获取的值作为变量来搜索属性是不规则的。"? “理论上,属性”ex:referProperty”应该在RDFS中定义。”?
-
如果是文字,为什么不简单地使用属性的 IRI 呢?例如。 'ex:referProperty ex:sender .'而不是 'ex:referProperty "ex:sender"^^xsd:string .'
标签: sparql rdf owl semantic-web rdfs