@prefix td: . @prefix hctl: . @prefix dct: . @prefix eve: . @prefix wotsec: . @prefix js: . @prefix htv: . @prefix onto: . @prefix foaf: . @prefix xsd: . a td:Thing, eve:Artifact, onto:PhantomX; td:title "leubot1"; td:hasSecurityConfiguration [ a wotsec:APIKeySecurityScheme; wotsec:in "header"; wotsec:name "X-API-Key" ]; td:hasBase ; td:hasPropertyAffordance [ a td:PropertyAffordance, onto:Base, js:ObjectSchema; td:name "base"; td:title "Read Base State"; td:hasForm [ hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:readProperty ]; td:isObservable false; js:properties [ a js:StringSchema, onto:JointName; js:propertyName "name" ], [ a js:IntegerSchema, onto:JointValue; js:propertyName "value" ]; js:required "name", "value" ], [ a td:PropertyAffordance, onto:Shoulder, js:ObjectSchema; td:name "shoulder"; td:title "Read Shoulder Angle"; td:hasForm [ hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:readProperty ]; td:isObservable false; js:properties [ a js:StringSchema, onto:JointName; js:propertyName "name" ], [ a js:IntegerSchema, onto:JointValue; js:propertyName "value" ]; js:required "name", "value" ], [ a td:PropertyAffordance, onto:Elbow, js:ObjectSchema; td:name "elbow"; td:title "Read Elbow Angle"; td:hasForm [ hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:readProperty ]; td:isObservable false; js:properties [ a js:StringSchema, onto:JointName; js:propertyName "name" ], [ a js:IntegerSchema, onto:JointValue; js:propertyName "value" ]; js:required "name", "value" ], [ a td:PropertyAffordance, onto:WristAngle, js:ObjectSchema; td:name "wristAngle"; td:title "Read Wrist Angle"; td:hasForm [ hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:readProperty ]; td:isObservable false; js:properties [ a js:StringSchema, onto:JointName; js:propertyName "name" ], [ a js:IntegerSchema, onto:JointValue; js:propertyName "value" ]; js:required "name", "value" ], [ a td:PropertyAffordance, onto:WristRotation, js:ObjectSchema; td:name "wristRotation"; td:title "Read Wrist Rotation"; td:hasForm [ hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:readProperty ]; td:isObservable false; js:properties [ a js:StringSchema, onto:JointName; js:propertyName "name" ], [ a js:IntegerSchema, onto:JointValue; js:propertyName "value" ]; js:required "name", "value" ], [ a td:PropertyAffordance, onto:Gripper, js:ObjectSchema; td:name "gripper"; td:title "Read Gripper"; td:hasForm [ hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:readProperty, td:writeProperty ]; td:isObservable false; js:properties [ a js:StringSchema, onto:JointName; js:propertyName "name" ], [ a js:IntegerSchema, onto:JointValue; js:propertyName "value" ]; js:required "name", "value" ], [ a td:PropertyAffordance, onto:Posture, js:ObjectSchema; td:name "posture"; td:title "Read Posture Information"; td:hasForm [ hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:readProperty ]; td:isObservable false; js:properties [ a js:IntegerSchema, onto:WristAngleJointValue; js:propertyName "WristAngle" ], [ a js:IntegerSchema, onto:GripperJointValue; js:propertyName "Gripper" ], [ a js:IntegerSchema, onto:ShoulderJointValue; js:propertyName "Shoulder" ], [ a js:IntegerSchema, onto:ElbowJointValue; js:propertyName "Elbow" ], [ a js:IntegerSchema, onto:BaseJointValue; js:propertyName "Base" ], [ a js:IntegerSchema, onto:WristRotationJointValue; js:propertyName "WristRotation" ]; js:required "Base", "Shoulder", "Elbow", "WristAngle", "WristRotation", "Gripper" ], [ a td:PropertyAffordance, foaf:Agent, js:ObjectSchema; td:name "user"; td:title "Read User Information"; td:hasForm [ hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:readProperty ]; td:isObservable false; js:properties [ a js:StringSchema, foaf:Name; js:propertyName "name" ], [ a js:StringSchema, foaf:Mbox; js:propertyName "email" ]; js:required "name", "email" ]; td:hasActionAffordance [ a td:ActionAffordance, onto:Reset; td:name "reset"; td:title "Reset"; td:hasForm [ htv:methodName "PUT"; hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:invokeAction ] ], [ a td:ActionAffordance, onto:SetBase; td:name "setBase"; td:title "Set Base"; td:hasForm [ htv:methodName "PUT"; hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:invokeAction ]; td:hasInputSchema [ a js:ObjectSchema, onto:BaseJoint; js:properties [ a js:IntegerSchema, onto:JointValue; js:propertyName "value"; js:minimum "512"^^xsd:int; js:maximum "1023"^^xsd:int ]; js:required "value" ] ], [ a td:ActionAffordance, onto:SetShoulder; td:name "setShoulder"; td:title "Set Shoulder"; td:hasForm [ htv:methodName "PUT"; hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:invokeAction ]; td:hasInputSchema [ a js:ObjectSchema, onto:ShoulderJoint; js:properties [ a js:IntegerSchema, onto:JointValue; js:propertyName "value"; js:minimum "205"^^xsd:int; js:maximum "810"^^xsd:int ]; js:required "value" ] ], [ a td:ActionAffordance, onto:SetElbow; td:name "setElbow"; td:title "Set Elbow"; td:hasForm [ htv:methodName "PUT"; hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:invokeAction ]; td:hasInputSchema [ a js:ObjectSchema, onto:ElbowJoint; js:properties [ a js:IntegerSchema, onto:JointValue; js:propertyName "value"; js:minimum "400"^^xsd:int; js:maximum "650"^^xsd:int ]; js:required "value" ] ], [ a td:ActionAffordance, onto:SetWristAngle; td:name "setWristAngle"; td:title "Set Wrist Angle"; td:hasForm [ htv:methodName "PUT"; hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:invokeAction ]; td:hasInputSchema [ a js:ObjectSchema, onto:WristAngleJoint; js:properties [ a js:IntegerSchema, onto:JointValue; js:propertyName "value"; js:minimum "200"^^xsd:int; js:maximum "830"^^xsd:int ]; js:required "value" ] ], [ a td:ActionAffordance, onto:SetWristRotation; td:name "setWristRotation"; td:title "Set Wrist Rotation"; td:hasForm [ htv:methodName "PUT"; hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:invokeAction ]; td:hasInputSchema [ a js:ObjectSchema, onto:WristRotateJoint; js:properties [ a js:IntegerSchema, onto:JointValue; js:propertyName "value"; js:minimum "0"^^xsd:int; js:maximum "1023"^^xsd:int ]; js:required "value" ] ], [ a td:ActionAffordance, onto:SetGripper; td:name "setGripper"; td:title "Set Gripper"; td:hasForm [ htv:methodName "PUT"; hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:invokeAction ]; td:hasInputSchema [ a js:ObjectSchema, onto:GripperJoint; js:properties [ a js:IntegerSchema, onto:JointValue; js:propertyName "value"; js:minimum "0"^^xsd:int; js:maximum "512"^^xsd:int ]; js:required "value" ] ], [ a td:ActionAffordance, onto:LogIn; td:name "logIn"; td:title "Log In"; td:hasForm [ htv:methodName "POST"; hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:invokeAction ]; td:hasInputSchema [ a js:ObjectSchema, foaf:Agent; js:properties [ a js:StringSchema, foaf:Name; js:propertyName "name" ], [ a js:StringSchema, foaf:Mbox; js:propertyName "email" ]; js:required "name", "email" ] ], [ a td:ActionAffordance, onto:LogOut; td:name "logOut"; td:hasUriTemplateSchema [ a js:StringSchema, onto:UserToken; td:name "token" ]; td:title "Log Out"; td:hasForm [ htv:methodName "DELETE"; hctl:hasTarget ; hctl:forContentType "application/json"; hctl:hasOperationType td:invokeAction ] ] .