繁体   English   中英

使用枚举自定义SPARQL构造

[英]Custom SPARQL Construct with enumeration

是否可以在查询范围之外添加信息时执行SPARQL构造? 例如,我想在定义枚举信息时执行SPARQL构造,如下所示:

PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
construct {
   ?s a skos:Concept
   ?s ex:index <enumeration starting from 1 -- this is just a sample>
}
where {
   ?s a skos:Concept
}

是否可以使用纯SPARQL执行类似的操作? 有什么选择?

* 附加信息 *

可能我没有清楚地解释我的问题,所以基本上我想实现以下(假设ex:index是一个有效的datatypeProperty):

==初始RDF三元组==

@prefix skos:<http://www.w3.org/2004/02/skos/core#>
@prefix ex: <http://example.org/> .

ex:abc rdf:type skos:Concept .
ex:def rdf:type skos:Concept .
...
ex:endOfSample rdf:type skos:Concept .

== SPARQL更新执行后的RDF三倍==

@prefix skos:<http://www.w3.org/2004/02/skos/core#>
@prefix ex: <http://example.org/> .

ex:abc rdf:type skos:Concept ;
    ex:index 1 .
ex:def rdf:type skos:Concept ;
    ex:index 2 .
...
ex:endOfSample rdf:type skos:Concept ;
    ex:index <endOfSampleNumber> .

您可以在CONSTRUCT中构造任何有效的RDF值。 但是,如果在执行WHERE图之后CONSTRUCT图模式中的任何变量未绑定,则查询将失败。 即你的查询中没有绑定到?p并且CONSTRUCT永远不会执行。

这是一个可以帮助您入门的示例:

PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
PREFIX ex:<http://example.org/construct#>
construct {
  ex:someProp a owl:ObjectProperty .
  ?s ex:someProp (1 2 3)
}
where {
  ?s a skos:Concept
}

这将导致为属性值和列表结构构建七个三元组。

添加了ex:someProp,因为SKOS中没有用于ad-hoc列表的良好对象属性。 最好定义具有某种语义含义的属性。 还要注意,虽然{ex:someProp a owl:ObjectProperty}三元组将为{?sa skos:Concept}的每个匹配声明,但它是相同的三元组,因此最终只会有一个。 价格是效率,因此在此查询之外声明属性将是更好的选择 - 为了示例完整性,它包含在上述查询中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM