首页 文章

SPARQL选择查询条件?

提问于
浏览
1

我正在尝试形成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>

1 回答

  • 2

    通常,如果您首先将数据放入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" .
    

    一旦你正在寻找域和方法,你需要使用 union (假设你想将域和方法绑定为不同的变量) .

    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> |
    --------------------------------------------------
    

    作为另一种选择,您可以使用 values 块来指定要遵循的属性( 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> |
    ------------------------------------------------------------------
    

相关问题