带有枚举的自定义SPARQL构造



在添加查询范围之外的信息时,是否可以执行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值。但是,如果CONSTRUCT图形模式中的任何变量在执行WHERE图形后被解除绑定,则查询将失败。也就是说,不能对?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中没有用于特定列表的好对象属性。最好用一些语义来定义属性。还要注意,虽然{ex:someProp a owl:ObjectProperty}三元组将为{?s a skos:Consept}的每个匹配断言,但它是相同的三元组,因此最终只有一个。代价是效率,因此在该查询之外断言属性将是一个更好的选择——为了示例的完整性,它包含在上面的查询中。

相关内容

  • 没有找到相关文章

最新更新