【问题标题】:Less number of individuals returned using SPARQL query使用 SPARQL 查询返回的个人数量较少
【发布时间】:2015-06-04 14:22:56
【问题描述】:

我有一个ontology,我对下图所示的课程很感兴趣:

我创建了两个 Observation 类(即observation1 和observation2),因此创建了两个其他类的个体(sensoroutput,observationvalue),如下所示:

<!-- http://www.iiitd.edu.in/~haroonr/ontologies/DGO#Observation1 -->
       <owl:NamedIndividual rdf:about="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#Observation1">
        <rdf:type rdf:resource="&j.3;Observation"/>
        <j.3:observationResult rdf:resource="&j.3;SensorOutput1"/>
        <j.3:observedBy rdf:resource="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#Co2Sensor_Diningroom"/>
        <j.3:observationSamplingTime rdf:resource="&j.2;Instant1"/>
    </owl:NamedIndividual>

     <!-- http://www.iiitd.edu.in/~haroonr/ontologies/DGO#Observation2 -->
         <owl:NamedIndividual rdf:about="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#Observation2">
        <rdf:type rdf:resource="&j.3;Observation"/>
        <j.3:observationResult rdf:resource="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#SensorOutput2"/>
    </owl:NamedIndividual>

     <!-- http://www.iiitd.edu.in/~haroonr/ontologies/DGO#ObservationValue1 -->
     <owl:NamedIndividual rdf:about="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#ObservationValue1">
        <rdf:type rdf:resource="&j.3;ObservationValue"/>
        <j.1:hasRegionDataValue rdf:datatype="&xsd;decimal">216.56</j.1:hasRegionDataValue>
    </owl:NamedIndividual>

     <!-- http://www.iiitd.edu.in/~haroonr/ontologies/DGO#ObservationValue2 -->
     <Owl: NamedIndividual rdf:about="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#ObservationValue2">
        <rdf:type rdf:resource="&j.3;ObservationValue"/>
        <j.1:hasRegionDataValue rdf:datatype="&xsd;string">121212</j.1:hasRegionDataValue>
    </owl:NamedIndividual>

     <!-- http://www.iiitd.edu.in/~haroonr/ontologies/DGO#SensorOutput1 -->
     <owl:NamedIndividual rdf:about="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#SensorOutput1">
        <rdf:type rdf:resource="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#Co2SensorOutput"/>
        <j.3:hasValue rdf:resource="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#ObservationValue1"/>
    </owl:NamedIndividual>

     <!-- http://www.iiitd.edu.in/~haroonr/ontologies/DGO#SensorOutput2 -->
         <owl:NamedIndividual rdf:about="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#SensorOutput2">
        <rdf:type rdf:resource="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#Co2SensorOutput"/>
        <j.3:hasValue rdf:resource="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#ObservationValue2"/>
    </owl:NamedIndividual>

现在,当我使用 SPARQL 获取与两个观察相关联的观察值时,我过去只获得与观察 2 相关联的值,而没有获得关于观察 1 的任何值。 Sparql 查询是:

PREFIX ssn: <http://purl.oclc.org/NET/ssnx/ssn#>
PREFIX rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dul: <http://www.loa-cnr.it/ontologies/DUL.owl#>
      SELECT  ?x ?r ?val
       WHERE
        { ?x  rdf:type ssn:Observation.
          ?x  ssn:observationResult ?d.
          ?d ssn:hasValue ?r.
          ?r dul:hasRegionDataValue ?val.
        }

我想知道我做错了什么以及为什么只返回一个(即观察 2 而不是观察 1)个人?

【问题讨论】:

  • 您的数据样本不完整(缺少根元素和命名空间声明),因此很难尝试重现问题。请确保在提出此类问题时提供Minimal, Complete, and Verifiable example
  • @JeenBroekstra 我只展示了本体的相关部分。在问题的开头,我提供了指向我的完整本体的链接。在这里,我再次提供完整本体的链接为link
  • 很抱歉,您的完整本体的链接对于这种事情确实不够好。要求所有必要的信息都存在于问题本身中。查看我提供的帮助部分的链接,它详细解释了为什么您应该始终尝试创建 MCVE。

标签: rdf sparql jena owl ontology


【解决方案1】:

您的文件中有错误。您的实例在不同的位置以不同的方式命名。要使您的查询正常工作,请使用完整的 uri:http://www.iiitd.edu.in/~haroonr/ontologies/DGO#SensorOutput1 重命名行 1581 上的个人 &amp;j.3;SensorOutput1。具体来说:

第 1581 行

改变这个:

<j.3:observationResult rdf:resource="&j.3;SensorOutput1"/>

到这里:

<j.3:observationResult rdf:resource="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#SensorOutput1"/>

鉴于上述变化,查询返回:

x | r | val

<http://www.iiitd.edu.in/~haroonr/ontologies/DGO#Observation2> <http://www.iiitd.edu.in/~haroonr/ontologies/DGO#ObservationValue2> "121212"^^<http://www.w3.org/2001/XMLSchema#string>

<http://www.iiitd.edu.in/~haroonr/ontologies/DGO#Observation1> <http://www.iiitd.edu.in/~haroonr/ontologies/DGO#ObservationValue1> 216.56

不要忘记正确输入数据中的原始值,即216.56 输入为十进制,而121212 输入为字符串。

【讨论】:

    【解决方案2】:

    Observation1 与您的查询不匹配,因为它的 ssn:observationResult 值 (ssn:SensorOutput1) 没有 ssn:hasValue 属性。因此,结果只返回Observation2

    【讨论】:

      猜你喜欢
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      • 2016-10-10
      • 1970-01-01
      • 2017-06-25
      • 2021-09-04
      相关资源
      最近更新 更多