繁体   English   中英

SPARQL选择条件查询?

[英]SPARQL select query with condition?

我正在尝试形成SPARQL查询,该查询将根据RDF下面的给定Java类给出域名和方法名称。 例如

选择DomainNames,MethodName,其中JavaClass ='MyJavaClass'。 这只是一个伪查询。 我需要在SPARQL中形成类似查询的帮助。 谢谢。

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:DOL="http://www.MyOnt.com/something/v1#"
    xmlns:DC="http://purl.org/dc/dcmitype/"
    xmlns:foaf="http://xmlns.com/foaf/0.1/">
  <rdf:Description rdf:about="http://www.MyOnt.com/something/data/MyJavaClass">
    <DOL:belongsTo>
      <rdf:Description rdf:about="http://www.MyOnt.com/something/data/MyDomain">
        <DOL:domainName>MyDomainValue2</DOL:domainName>
        <DOL:domainName>MyDomainValue</DOL:domainName>
      </rdf:Description>
    </DOL:belongsTo>
    <DOL:hasMethod>
      <rdf:Description rdf:about="http://www.MyOnt.com/something/data/MyMethod">
        <DOL:returnType>MethodReturnType</DOL:returnType>
      </rdf:Description>
    </DOL:hasMethod>
    <foaf:name>MyJavaClass</foaf:name>
  </rdf:Description>
</rdf:RDF>

如果您首先将数据放入Turtle(其语法与SPARQL非常相似),通常更容易理解SPARQL查询的外观。 这是您在Turtle中的数据:

@prefix DOL:   <http://www.MyOnt.com/something/v1#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
@prefix DC:    <http://purl.org/dc/dcmitype/> .

<http://www.MyOnt.com/something/data/MyDomain>
        DOL:domainName  "MyDomainValue2" , "MyDomainValue" .

<http://www.MyOnt.com/something/data/MyJavaClass>
        DOL:belongsTo  <http://www.MyOnt.com/something/data/MyDomain> ;
        DOL:hasMethod  <http://www.MyOnt.com/something/data/MyMethod> ;
        foaf:name      "MyJavaClass" .

<http://www.MyOnt.com/something/data/MyMethod>
        DOL:returnType  "MethodReturnType" .

完成此操作后,查询看起来几乎与数据完全一样,但其中包含变量。 唯一的问题是,由于您要查找域和方法,因此需要使用并 (假定您要将域和方法作为不同的变量绑定)。

prefix DOL:   <http://www.MyOnt.com/something/v1#>
prefix foaf:  <http://xmlns.com/foaf/0.1/>

select ?domain ?method {
  ?class foaf:name "MyJavaClass" .
  { ?class DOL:belongsTo ?domain }
  union
  { ?class DOL:hasMethod ?method }
}
---------------------------------------------------------------------------------------------------
| domain                                         | method                                         |
===================================================================================================
| <http://www.MyOnt.com/something/data/MyDomain> |                                                |
|                                                | <http://www.MyOnt.com/something/data/MyMethod> |
---------------------------------------------------------------------------------------------------

如果你愿意有绑定到同一个可变域和方法,你可以使用一个交替属性路径选择域或方法:

prefix DOL:   <http://www.MyOnt.com/something/v1#>
prefix foaf:  <http://xmlns.com/foaf/0.1/>

select ?domainOrMethod {
  ?class foaf:name "MyJavaClass" ;
         DOL:belongsTo|DOL:hasMethod ?domainOrMethod 
}
--------------------------------------------------
| domainOrMethod                                 |
==================================================
| <http://www.MyOnt.com/something/data/MyDomain> |
| <http://www.MyOnt.com/something/data/MyMethod> |
--------------------------------------------------

作为另一种选择,您可以使用块来指定要遵循的属性( hasMethodbelongsTo ),在这种情况下,您也可以选择该属性以知道您拥有哪种类型的值:

prefix DOL:   <http://www.MyOnt.com/something/v1#>
prefix foaf:  <http://xmlns.com/foaf/0.1/>

select ?property ?value {
  values ?property { DOL:belongsTo DOL:hasMethod }
  ?class foaf:name "MyJavaClass" ;
         ?property ?value  
}
------------------------------------------------------------------
| property      | value                                          |
==================================================================
| DOL:belongsTo | <http://www.MyOnt.com/something/data/MyDomain> |
| DOL:hasMethod | <http://www.MyOnt.com/something/data/MyMethod> |
------------------------------------------------------------------

暂无
暂无

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

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