Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rdf 使用SPARQL查询返回的个人数较少_Rdf_Sparql_Jena_Owl_Ontology - Fatal编程技术网

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

Rdf 使用SPARQL查询返回的个人数较少,rdf,sparql,jena,owl,ontology,Rdf,Sparql,Jena,Owl,Ontology,我有一份工作,我对下图所示的课程感兴趣: 我创建了两个观察类个体(即观察1和观察2),因此创建了两个其他类个体(传感器输出、观察值),如下所示: <!-- http://www.iiitd.edu.in/~haroonr/ontologies/DGO#Observation1 --> <owl:NamedIndividual rdf:about="http://www.iiitd.edu.in/~haroonr/ontologies/DGO#Observatio

我有一份工作,我对下图所示的课程感兴趣:

我创建了两个观察类个体(即观察1和观察2),因此创建了两个其他类个体(传感器输出、观察值),如下所示:

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

216.56
121212
现在,当我使用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.
        }
前缀ssn:
前缀rdf:
前缀dul:
选择?x?r?val
哪里
{?x rdf:type ssn:Observation。
x ssn:观测结果?d。
d ssn:hasValue?r。
?r dul:hasRegionDataValue?val。
}

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

您的文件中有一个错误。您的实例在不同的位置以不同的方式命名。要使查询正常工作,请重命名个人
&j.3;第1581行的SensorOutput1
具有完整uri:
http://www.iiitd.edu.in/~harooner/ontologys/DGO#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
x | r | val
"121212"^^
216.56

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

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

您的数据样本不完整(缺少根元素和名称空间声明),这使得很难尝试重现问题。请确保在提出此类问题时,您提供了一个@JeenBroekstra,我只展示了本体的相关部分。在问题的开始,我提供了到我的完整本体的链接。在这里,我再次证明链接到完整的本体论,因为我很抱歉,但是链接到您的完整本体论对于这种事情来说确实不够好。这是一个要求,所有必要的信息都存在于问题本身,所以在这里。看看我提供的帮助部分的链接,它详细解释了为什么您应该总是尝试创建MCVE。