编写 Jena 规则以将属性添加到具有某些特定 属性 值的资源?
Writing a Jena rule to add properties to a resource with some specific property values?
我正在尝试编写一条 Jena 规则,其先行词与网络带宽为 450^^xsd:float 的位置相匹配。我试过以下两条规则。第一个没有给我任何结果。第二个匹配标记为 Gate 23 和 Gate 15 的网络,但只有 Gate 15 应该匹配。
[AdaptedModel:
(?d2 rdf:type perSys:NetworkCharacteristics),
(?d2 perSys:Bandwidth '450'^^xsd:float)
(?d2 perSys:SpecificLocation ?a)
->
(?d2 perSys:AdaptedSpecificLocation ?a)]
[AdaptedModel:
(?d2 rdf:type perSys:NetworkCharacteristics),
(?d2 perSys:Bandwidth '450'^^xsd:float)
(?d3 perSys:SpecificLocation ?a)
->
(?d3 perSys:AdaptedSpecificLocation ?a)]
这是我的 RDF 数据:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:perSys="http://localhost:8080/NetworkContextWS/onto/NetworkContextDescription#">
<perSys:PervasiveContext>
<perSys:HasNetworkContext>
<perSys:NetworkContext rdf:about="file:///home/taylorj/n1111">
<perSys:Rules>
<perSys:NetworkSecurity>
<perSys:NetworkSecurityState rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Open Network</perSys:NetworkSecurityState>
<perSys:NetworkKey rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>No Key</perSys:NetworkKey>
</perSys:NetworkSecurity>
</perSys:Rules>
<perSys:Network>
<perSys:NetworkCharacteristics>
<perSys:SubNetworkType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>HSDPA</perSys:SubNetworkType>
<perSys:NetworkState rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>CONNECTED</perSys:NetworkState>
<perSys:Bandwidth rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>450</perSys:Bandwidth>
<perSys:LinkSpeed rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>65</perSys:LinkSpeed>
<perSys:NetworkAvailability rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Available</perSys:NetworkAvailability>
<perSys:NetworkName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>AF23_WI-FI_9F1B</perSys:NetworkName>
</perSys:NetworkCharacteristics>
</perSys:Network>
<perSys:Network>
<perSys:NetworkTraficStats>
<perSys:NumberBytesReceived rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>15599522</perSys:NumberBytesReceived>
<perSys:NumberPacketsReceived rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>24922</perSys:NumberPacketsReceived>
<perSys:NumberBytesTransmited rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>4111415</perSys:NumberBytesTransmited>
<perSys:NumberPacketsTransmited rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>26455</perSys:NumberPacketsTransmited>
<perSys:NetworkUpload rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>0</perSys:NetworkUpload>
<perSys:NetworkType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Connected</perSys:NetworkType>
<perSys:NetworkDownload rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>1</perSys:NetworkDownload>
<perSys:TotalData rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>1</perSys:TotalData>
</perSys:NetworkTraficStats>
</perSys:Network>
<perSys:Time>
<perSys:TimeCharacteristics>
<perSys:ConnexionTime rdf:datatype="http://www.w3.org/2001/XMLSchema#time"
>15:00:00</perSys:ConnexionTime>
<perSys:ConnexionDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date"
>2015-02-06</perSys:ConnexionDate>
</perSys:TimeCharacteristics>
</perSys:Time>
<perSys:Preferences>
<perSys:PreferencesCharacteristics>
<perSys:PreferencesName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>preferencesName</perSys:PreferencesName>
<perSys:PreferencesType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>preferencesValue</perSys:PreferencesType>
</perSys:PreferencesCharacteristics>
</perSys:Preferences>
<perSys:Device>
<perSys:DeviceCharacteristics>
<perSys:DeviceName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Bekri-Laptop</perSys:DeviceName>
<perSys:DeviceType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Laptop</perSys:DeviceType>
</perSys:DeviceCharacteristics>
</perSys:Device>
<perSys:Location>
<perSys:LocationCharacteristics>
<perSys:SpecificLocation rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Gate 23</perSys:SpecificLocation>
<perSys:FeatureName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Pittsburgh International Airport</perSys:FeatureName>
</perSys:LocationCharacteristics>
</perSys:Location>
</perSys:NetworkContext>
</perSys:HasNetworkContext>
<perSys:HasNetworkContext>
<perSys:NetworkContext rdf:about="file:///home/taylorj/lm333">
<perSys:Rules>
<perSys:NetworkSecurity>
<perSys:NetworkSecurityState rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Open Network</perSys:NetworkSecurityState>
<perSys:NetworkKey rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>No Key</perSys:NetworkKey>
</perSys:NetworkSecurity>
</perSys:Rules>
<perSys:Network>
<perSys:NetworkCharacteristics>
<perSys:SubNetworkType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>HSDPA</perSys:SubNetworkType>
<perSys:NetworkState rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>CONNECTED</perSys:NetworkState>
<perSys:Bandwidth rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>256</perSys:Bandwidth>
<perSys:LinkSpeed rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>65</perSys:LinkSpeed>
<perSys:NetworkAvailability rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Available</perSys:NetworkAvailability>
<perSys:NetworkName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>AF23_WI-FI_9F1B</perSys:NetworkName>
</perSys:NetworkCharacteristics>
</perSys:Network>
<perSys:Network>
<perSys:NetworkTraficStats>
<perSys:NumberBytesReceived rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>15599522</perSys:NumberBytesReceived>
<perSys:NumberPacketsReceived rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>24922</perSys:NumberPacketsReceived>
<perSys:NumberBytesTransmited rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>4111415</perSys:NumberBytesTransmited>
<perSys:NumberPacketsTransmited rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>26455</perSys:NumberPacketsTransmited>
<perSys:NetworkUpload rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>0</perSys:NetworkUpload>
<perSys:NetworkType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Connected</perSys:NetworkType>
<perSys:NetworkDownload rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>1</perSys:NetworkDownload>
<perSys:TotalData rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>1</perSys:TotalData>
</perSys:NetworkTraficStats>
</perSys:Network>
<perSys:Time>
<perSys:TimeCharacteristics>
<perSys:ConnexionTime rdf:datatype="http://www.w3.org/2001/XMLSchema#time"
>15:00:00</perSys:ConnexionTime>
<perSys:ConnexionDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date"
>2015-02-06</perSys:ConnexionDate>
</perSys:TimeCharacteristics>
</perSys:Time>
<perSys:Preferences>
<perSys:PreferencesCharacteristics>
<perSys:PreferencesName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>preferencesName</perSys:PreferencesName>
<perSys:PreferencesType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>preferencesValue</perSys:PreferencesType>
</perSys:PreferencesCharacteristics>
</perSys:Preferences>
<perSys:Device>
<perSys:DeviceCharacteristics>
<perSys:DeviceName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Bekri-Laptop</perSys:DeviceName>
<perSys:DeviceType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Laptop</perSys:DeviceType>
</perSys:DeviceCharacteristics>
</perSys:Device>
<perSys:Location>
<perSys:LocationCharacteristics>
<perSys:SpecificLocation rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Gate 15</perSys:SpecificLocation>
<perSys:FeatureName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Pittsburgh International Airport</perSys:FeatureName>
</perSys:LocationCharacteristics>
</perSys:Location>
</perSys:NetworkContext>
</perSys:HasNetworkContext>
</perSys:PervasiveContext>
</rdf:RDF>
第二条规则错误
你的第二条规则被打破了,因为 d2 和 d3 变量的值之间没有联系:
[AdaptedModel:
(?d2 rdf:type perSys:NetworkCharacteristics),
(?d2 perSys:Bandwidth '450'^^xsd:float)
(?d3 perSys:SpecificLocation ?a)
->
(?d3 perSys:AdaptedSpecificLocation ?a)]
粗略地说:
If some X has type NetworkCharacterstics and has bandwidth 450, and some Y has a specific location Z, then Y has an adapted specific location Z.
X 之间没有连接(它具有大约 450 的约束),因此具有特定位置的所有内容都连接到适应的特定位置。
为什么第一个规则不起作用,以及如何解决它
让我们看看您的数据中出现 450 的部分,以及出现 perSys:SpecificLocations 的部分。 N3连载更方便阅读:
<.../n1111>
a perSys:NetworkContext ;
perSys:Location [ a perSys:LocationCharacteristics ;
perSys:FeatureName "Pittsburgh International Airport"^^<http://www.w3.org/2001/XMLSchema#string> ;
perSys:SpecificLocation "Gate 23"^^<http://www.w3.org/2001/XMLSchema#string>
] ;
perSys:Network [ a perSys:NetworkCharacteristics ;
perSys:Bandwidth "450"^^<http://www.w3.org/2001/XMLSchema#float> ;
perSys:LinkSpeed "65"^^<http://www.w3.org/2001/XMLSchema#float> ;
perSys:NetworkAvailability "Available"^^<http://www.w3.org/2001/XMLSchema#string> ;
perSys:NetworkName "AF23_WI-FI_9F1B"^^<http://www.w3.org/2001/XMLSchema#string> ;
perSys:NetworkState "CONNECTED"^^<http://www.w3.org/2001/XMLSchema#string> ;
perSys:SubNetworkType "HSDPA"^^<http://www.w3.org/2001/XMLSchema#string>
] ;
带宽为 450 的东西是一个空白节点,类型为 perSys:NetworkCharacteristics,因此它可以匹配规则的前两部分。但是,它没有 perSys:SpecificLocation,因此您无法匹配第三部分。有 perSys:SpecificLocation 的是另一个空白节点。
我不知道你到底想把 perSys:AdaptedSpecificLocation 三元组放在哪里(也就是说,我不知道主题应该是什么),但你需要匹配的形状你的数据是这样的:
[(?context perSys:Location ?location)
(?location perSys:SpecificLocation ?specificLocation)
(?context perSys:Network ?network)
(?network perSys:Bandwidth '450'^^xsd:float)
->
(?location perSys:AdaptedSpecificLocation ?specificLocation)]
如果你要画图结构,它看起来像下面这样。实线是数据中的关系,虚线是规则将推断出的关系。
看到你必须匹配数据的整个结构了吗?有一个上下文,它有一个位置和一个网络。位置有具体位置,网络有带宽。当所有这些都匹配时,您可以说该位置具有经过调整的特定位置。这就是你必须 "connect" 变量的方式;他们需要以某种方式相互关联。
我正在尝试编写一条 Jena 规则,其先行词与网络带宽为 450^^xsd:float 的位置相匹配。我试过以下两条规则。第一个没有给我任何结果。第二个匹配标记为 Gate 23 和 Gate 15 的网络,但只有 Gate 15 应该匹配。
[AdaptedModel:
(?d2 rdf:type perSys:NetworkCharacteristics),
(?d2 perSys:Bandwidth '450'^^xsd:float)
(?d2 perSys:SpecificLocation ?a)
->
(?d2 perSys:AdaptedSpecificLocation ?a)]
[AdaptedModel:
(?d2 rdf:type perSys:NetworkCharacteristics),
(?d2 perSys:Bandwidth '450'^^xsd:float)
(?d3 perSys:SpecificLocation ?a)
->
(?d3 perSys:AdaptedSpecificLocation ?a)]
这是我的 RDF 数据:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:perSys="http://localhost:8080/NetworkContextWS/onto/NetworkContextDescription#">
<perSys:PervasiveContext>
<perSys:HasNetworkContext>
<perSys:NetworkContext rdf:about="file:///home/taylorj/n1111">
<perSys:Rules>
<perSys:NetworkSecurity>
<perSys:NetworkSecurityState rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Open Network</perSys:NetworkSecurityState>
<perSys:NetworkKey rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>No Key</perSys:NetworkKey>
</perSys:NetworkSecurity>
</perSys:Rules>
<perSys:Network>
<perSys:NetworkCharacteristics>
<perSys:SubNetworkType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>HSDPA</perSys:SubNetworkType>
<perSys:NetworkState rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>CONNECTED</perSys:NetworkState>
<perSys:Bandwidth rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>450</perSys:Bandwidth>
<perSys:LinkSpeed rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>65</perSys:LinkSpeed>
<perSys:NetworkAvailability rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Available</perSys:NetworkAvailability>
<perSys:NetworkName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>AF23_WI-FI_9F1B</perSys:NetworkName>
</perSys:NetworkCharacteristics>
</perSys:Network>
<perSys:Network>
<perSys:NetworkTraficStats>
<perSys:NumberBytesReceived rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>15599522</perSys:NumberBytesReceived>
<perSys:NumberPacketsReceived rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>24922</perSys:NumberPacketsReceived>
<perSys:NumberBytesTransmited rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>4111415</perSys:NumberBytesTransmited>
<perSys:NumberPacketsTransmited rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>26455</perSys:NumberPacketsTransmited>
<perSys:NetworkUpload rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>0</perSys:NetworkUpload>
<perSys:NetworkType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Connected</perSys:NetworkType>
<perSys:NetworkDownload rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>1</perSys:NetworkDownload>
<perSys:TotalData rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>1</perSys:TotalData>
</perSys:NetworkTraficStats>
</perSys:Network>
<perSys:Time>
<perSys:TimeCharacteristics>
<perSys:ConnexionTime rdf:datatype="http://www.w3.org/2001/XMLSchema#time"
>15:00:00</perSys:ConnexionTime>
<perSys:ConnexionDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date"
>2015-02-06</perSys:ConnexionDate>
</perSys:TimeCharacteristics>
</perSys:Time>
<perSys:Preferences>
<perSys:PreferencesCharacteristics>
<perSys:PreferencesName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>preferencesName</perSys:PreferencesName>
<perSys:PreferencesType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>preferencesValue</perSys:PreferencesType>
</perSys:PreferencesCharacteristics>
</perSys:Preferences>
<perSys:Device>
<perSys:DeviceCharacteristics>
<perSys:DeviceName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Bekri-Laptop</perSys:DeviceName>
<perSys:DeviceType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Laptop</perSys:DeviceType>
</perSys:DeviceCharacteristics>
</perSys:Device>
<perSys:Location>
<perSys:LocationCharacteristics>
<perSys:SpecificLocation rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Gate 23</perSys:SpecificLocation>
<perSys:FeatureName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Pittsburgh International Airport</perSys:FeatureName>
</perSys:LocationCharacteristics>
</perSys:Location>
</perSys:NetworkContext>
</perSys:HasNetworkContext>
<perSys:HasNetworkContext>
<perSys:NetworkContext rdf:about="file:///home/taylorj/lm333">
<perSys:Rules>
<perSys:NetworkSecurity>
<perSys:NetworkSecurityState rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Open Network</perSys:NetworkSecurityState>
<perSys:NetworkKey rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>No Key</perSys:NetworkKey>
</perSys:NetworkSecurity>
</perSys:Rules>
<perSys:Network>
<perSys:NetworkCharacteristics>
<perSys:SubNetworkType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>HSDPA</perSys:SubNetworkType>
<perSys:NetworkState rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>CONNECTED</perSys:NetworkState>
<perSys:Bandwidth rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>256</perSys:Bandwidth>
<perSys:LinkSpeed rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>65</perSys:LinkSpeed>
<perSys:NetworkAvailability rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Available</perSys:NetworkAvailability>
<perSys:NetworkName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>AF23_WI-FI_9F1B</perSys:NetworkName>
</perSys:NetworkCharacteristics>
</perSys:Network>
<perSys:Network>
<perSys:NetworkTraficStats>
<perSys:NumberBytesReceived rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>15599522</perSys:NumberBytesReceived>
<perSys:NumberPacketsReceived rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>24922</perSys:NumberPacketsReceived>
<perSys:NumberBytesTransmited rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>4111415</perSys:NumberBytesTransmited>
<perSys:NumberPacketsTransmited rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
>26455</perSys:NumberPacketsTransmited>
<perSys:NetworkUpload rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>0</perSys:NetworkUpload>
<perSys:NetworkType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Connected</perSys:NetworkType>
<perSys:NetworkDownload rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>1</perSys:NetworkDownload>
<perSys:TotalData rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
>1</perSys:TotalData>
</perSys:NetworkTraficStats>
</perSys:Network>
<perSys:Time>
<perSys:TimeCharacteristics>
<perSys:ConnexionTime rdf:datatype="http://www.w3.org/2001/XMLSchema#time"
>15:00:00</perSys:ConnexionTime>
<perSys:ConnexionDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date"
>2015-02-06</perSys:ConnexionDate>
</perSys:TimeCharacteristics>
</perSys:Time>
<perSys:Preferences>
<perSys:PreferencesCharacteristics>
<perSys:PreferencesName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>preferencesName</perSys:PreferencesName>
<perSys:PreferencesType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>preferencesValue</perSys:PreferencesType>
</perSys:PreferencesCharacteristics>
</perSys:Preferences>
<perSys:Device>
<perSys:DeviceCharacteristics>
<perSys:DeviceName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Bekri-Laptop</perSys:DeviceName>
<perSys:DeviceType rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Laptop</perSys:DeviceType>
</perSys:DeviceCharacteristics>
</perSys:Device>
<perSys:Location>
<perSys:LocationCharacteristics>
<perSys:SpecificLocation rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Gate 15</perSys:SpecificLocation>
<perSys:FeatureName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Pittsburgh International Airport</perSys:FeatureName>
</perSys:LocationCharacteristics>
</perSys:Location>
</perSys:NetworkContext>
</perSys:HasNetworkContext>
</perSys:PervasiveContext>
</rdf:RDF>
第二条规则错误
你的第二条规则被打破了,因为 d2 和 d3 变量的值之间没有联系:
[AdaptedModel:
(?d2 rdf:type perSys:NetworkCharacteristics),
(?d2 perSys:Bandwidth '450'^^xsd:float)
(?d3 perSys:SpecificLocation ?a)
->
(?d3 perSys:AdaptedSpecificLocation ?a)]
粗略地说:
If some X has type NetworkCharacterstics and has bandwidth 450, and some Y has a specific location Z, then Y has an adapted specific location Z.
X 之间没有连接(它具有大约 450 的约束),因此具有特定位置的所有内容都连接到适应的特定位置。
为什么第一个规则不起作用,以及如何解决它
让我们看看您的数据中出现 450 的部分,以及出现 perSys:SpecificLocations 的部分。 N3连载更方便阅读:
<.../n1111>
a perSys:NetworkContext ;
perSys:Location [ a perSys:LocationCharacteristics ;
perSys:FeatureName "Pittsburgh International Airport"^^<http://www.w3.org/2001/XMLSchema#string> ;
perSys:SpecificLocation "Gate 23"^^<http://www.w3.org/2001/XMLSchema#string>
] ;
perSys:Network [ a perSys:NetworkCharacteristics ;
perSys:Bandwidth "450"^^<http://www.w3.org/2001/XMLSchema#float> ;
perSys:LinkSpeed "65"^^<http://www.w3.org/2001/XMLSchema#float> ;
perSys:NetworkAvailability "Available"^^<http://www.w3.org/2001/XMLSchema#string> ;
perSys:NetworkName "AF23_WI-FI_9F1B"^^<http://www.w3.org/2001/XMLSchema#string> ;
perSys:NetworkState "CONNECTED"^^<http://www.w3.org/2001/XMLSchema#string> ;
perSys:SubNetworkType "HSDPA"^^<http://www.w3.org/2001/XMLSchema#string>
] ;
带宽为 450 的东西是一个空白节点,类型为 perSys:NetworkCharacteristics,因此它可以匹配规则的前两部分。但是,它没有 perSys:SpecificLocation,因此您无法匹配第三部分。有 perSys:SpecificLocation 的是另一个空白节点。
我不知道你到底想把 perSys:AdaptedSpecificLocation 三元组放在哪里(也就是说,我不知道主题应该是什么),但你需要匹配的形状你的数据是这样的:
[(?context perSys:Location ?location)
(?location perSys:SpecificLocation ?specificLocation)
(?context perSys:Network ?network)
(?network perSys:Bandwidth '450'^^xsd:float)
->
(?location perSys:AdaptedSpecificLocation ?specificLocation)]
如果你要画图结构,它看起来像下面这样。实线是数据中的关系,虚线是规则将推断出的关系。
看到你必须匹配数据的整个结构了吗?有一个上下文,它有一个位置和一个网络。位置有具体位置,网络有带宽。当所有这些都匹配时,您可以说该位置具有经过调整的特定位置。这就是你必须 "connect" 变量的方式;他们需要以某种方式相互关联。