使用 SPARQL 查询返回的个人数量较少

Less number of individuals returned using SPARQL query

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

我已经创建了两个 Observation class 个体(即 observation1 和 observation2),因此相应地创建了其他 classes(传感器输出,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 获取与两个观察值关联的 observationValues 时,我过去只获取与 observation2 关联的值,而没有获取任何关于 observation1 的值。 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.
        }

我想知道我哪里做错了,为什么只返回一个(即 observation2 而不是 observation1)个人?

您的文件有误。您的实例在不同位置以某种方式命名。要使您的查询正常运行,请使用完整的 uri:http://www.iiitd.edu.in/~haroonr/ontologies/DGO#SensorOutput1 重命名行 1581 上的个人 &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"/>

鉴于上述变化,查询 returns:

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 键入为字符串。

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