View unanswered posts | View active topics It is currently Tue Oct 23, 2018 8:27 pm



Reply to topic  [ 26 posts ]  Go to page Previous  1, 2, 3
 Nullifying Values in Part7/8 
Author Message

Joined: Sun Jan 22, 2012 10:02 pm
Posts: 283
@Onno

Not really small, but hopefully clarifying:

Attachment:
plant lifecycle model-20140201.png
plant lifecycle model-20140201.png [ 238.5 KiB | Viewed 1170 times ]


Fri Jan 24, 2014 8:38 pm
Profile

Joined: Thu Jul 05, 2012 2:33 pm
Posts: 39
While the diagram may be significant to you I'm afraid I haven't got a clue how that demonstrates the representation of an unset property in a system within a temporal part. As Keith has pointed out there is a need to say for this temporal part property x has an unspecified value. It is not sufficient just to say property x is not defined within the temporal part.


Thu Feb 27, 2014 8:50 am
Profile

Joined: Sun Jan 22, 2012 10:02 pm
Posts: 283
@Andy - Why would you want to specify what isn't there?
But if you insist, why don't you leave the value blank, e.g.:

<tpl:valPropertyValue rdf:datatype="&xsd;float"></tpl:valPropertyValue>

In the triple format that results in: ""^^http://www.w3.org/2001/XMLSchema#float


Sun Mar 09, 2014 4:30 pm
Profile

Joined: Thu Jul 05, 2012 2:33 pm
Posts: 39
A couple of reasons why empty values are not sufficient...

1) "" is not a valid float value, all validators that check data types should swear at you
2) With string values there is a difference between an intentionally empty string and an unset/null value. Our customers/Partners are insisting we know the difference and report it.
3) I have no idea what it means in terms of template expansion/usage if people just start leaving empty roles. It would be good to understand/explore the implications since it could greatly affect the semantic understanding and usefulness of the information presented.


Thu May 15, 2014 7:59 am
Profile

Joined: Thu Jul 05, 2012 2:33 pm
Posts: 39
Options discussed in the Part 8 working group :

Code:
<!-- Current indirect property in Part 8 representation with scale -->
<owl:Thing>
   <rdf:type rdf:resource="&tpl;IndividualHasIndirectPropertywithValue"/>
   <tpl:hasPossessor rdf:Resource="#MyDataObject"/>
   <tpl:hasIndirectPropertyType rdf:resource="&rdl;SomeProperty"/>
   <tpl:valPropertyValue rdf:datatype="&xsd;float">10.0</tpl:valPropertyValue>
   <tpl:hasScale rdf:resource="&rdl;DegreesCelsius"/>
</owl:Thing>

<!-- option a : Use of empty strings to represent nulls
Notes:
- An empty string for a string property does not have the same meaning as null.
- A template role with a type of xsd:double or xsd:anyURI is not permitted to have an empty string as a value.
- The type associated with the roles would need to be relaxed to support plain literals or the current type
- for unit qualified values would both the value and scale need to be nullified???
-->
<owl:Thing>
   <rdf:type rdf:resource="&tpl;IndividualHasIndirectPropertywithValue"/>
   <tpl:hasPossessor rdf:Resource="#MyDataObject"/>
   <tpl:hasIndirectPropertyType rdf:resource="&rdl;SomeProperty"/>
   <tpl:valPropertyValue/>  <!-- data type defaults to rdf:PlainLiteral, value is an empty string -->
   <tpl:hasScale/>          <!-- data type defaults to rdf:PlainLiteral, value is an empty string -->
</owl:Thing>

<!-- option b : new template for nulls -->
<owl:Thing>
   <rdf:type rdf:resource="&tpl:NullProperty"/>
   <tpl:hasPossessor rdf:Resource="#MyDataObject"/>
   <tpl:hasPropertyType rdf:resource="&rdl;SomeProperty"/>
</owl:Thing>

<!-- option c : status of property on property templates
- Notes :
- Could the status roles be lists of status values so that status isn't limited to being one per property??
- Since the property can't be null it would have to be assigned a value even if the status was null
-->
<!-- single status option -->
<owl:Thing>
   <rdf:type rdf:resource="&tpl;IndividualHasIndirectPropertywithValue"/>
   <tpl:hasPossessor rdf:Resource="#MyDataObject"/>
   <tpl:hasIndirectPropertyType rdf:resource="&rdl;SomeProperty"/>
   <tpl:valPropertyValue rdf:datatype="&xsd;float">0.0</tpl:valPropertyValue>
   <tpl:hasScale rdf:resource="&rdl;DegreesCelsius"/>
   <tpl:hasStatus rdf:resource="&rdl;null"/>
</owl:Thing>
<!-- list of statuses option -->
<owl:Thing>
   <rdf:type rdf:resource="&tpl;IndividualHasIndirectPropertywithValue"/>
   <tpl:hasPossessor rdf:Resource="#MyDataObject"/>
   <tpl:hasIndirectPropertyType rdf:resource="&rdl;SomeProperty"/>
   <tpl:valPropertyValue rdf:datatype="&xsd;float">0.0</tpl:valPropertyValue>
   <tpl:hasScale rdf:resource="&rdl;DegreesCelsius"/>
   <tpl:hasStatuses rdf:parseType="Collection">
      <rdf:Description rdf:about="&rdl;null"/>
      <rdf:Description rdf:about="&rdl;Status1"/>
   </tpl:hasStatuses
</owl:Thing>


<!-- option d : status of property in separate templates
- Note :
- Properties would have to be assigned identities so that they can be referenced from several templates
-->
<owl:Thing>
   <rdf:type rdf:resource="&tpl;IndividualHasIndirectPropertywithValue"/>
   <tpl:hasPossessor rdf:Resource="#MyDataObject"/>
   <tpl:hasProperty rdf:Resource="#MyObjectsPropertyID"/>
   <tpl:hasIndirectPropertyType rdf:resource="&rdl;SomeProperty"/>
   <tpl:valPropertyValue rdf:datatype="&xsd;float">10.0</tpl:valPropertyValue>
   <tpl:hasScale rdf:resource="&rdl;DegreesCelsius"/>
</owl:Thing>
<owl:Thing>
   <rdf:type rdf:resource="&tpl:PropertyStatus"/>
   <tpl:hasPossessor rdf:Resource="#MyDataObject"/>
   <tpl:hasProperty rdf:Resource="#MyObjectsPropertyID"/>
   <tpl:hasPropertyType rdf:resource="&rdl;SomeProperty"/>
   <tpl:hasStatus rdf:resource="&rdl;null"/>
</owl:Thing>

<!-- option e : use of xsi:nil
- this is not valid RDF in the way that it is intended in xsi.
- the nil statement actually forces the creatoon of a blank node that has an xsi:nil predicate with a plainLiteral value
-->
<owl:Thing>
   <rdf:type rdf:resource="&tpl;IndividualHasIndirectPropertywithValue"/>
   <tpl:hasPossessor rdf:Resource="#MyDataObject"/>
   <tpl:hasProperty rdf:Resource="#MyObjectsPropertyID"/>
   <tpl:hasIndirectPropertyType rdf:resource="&rdl;SomeProperty"/>
   <tpl:valPropertyValue xsi:nil="true"/>
   <tpl:hasScale  xsi:nil="true"/>
</owl:Thing>

this becomes the following when parsed :-

<owl:Thing>
   <rdf:type rdf:resource="&tpl;IndividualHasIndirectPropertywithValue"/>
   <tpl:hasPossessor rdf:Resource="#MyDataObject"/>
   <tpl:hasProperty rdf:Resource="#MyObjectsPropertyID"/>
   <tpl:hasIndirectPropertyType rdf:resource="&rdl;SomeProperty"/>
   <tpl:valPropertyValue>
      <rdf:Description>
         <xsi:nil rdf:datatype="&rdf;PlainLiteral">true</xsi:nil>
      </rdf:Description>
   </tpl:valPropertyValue>
   <tpl:hasScale  xsi:nil="true">
      <rdf:Description>
         <xsi:nil rdf:datatype="&rdf;PlainLiteral">true</xsi:nil>
      </rdf:Description>
   </tpl:hasScale>
</owl:Thing>


Tue Aug 05, 2014 1:06 pm
Profile

Joined: Sun Jan 22, 2012 10:02 pm
Posts: 283
@Andy
xsi:nil isn't valid RDF, unfortunately.

You might add the use of an unrealistic number, such as '99999'.

I don't know why scales should be NULL. On each project that is well known.


Sun Aug 24, 2014 9:08 pm
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 26 posts ]  Go to page Previous  1, 2, 3

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
eXTReMe Tracker
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.