This page (revision-180) was last changed on 05-May-2017 09:17 by Jochen Reutelshöfer

This page was created on 22-Apr-2017 17:20 by unknown

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Version Date Modified Size Author Changes ... Change note
180 05-May-2017 09:17 7 KB Jochen Reutelshöfer to previous
179 05-May-2017 09:15 7 KB Jochen Reutelshöfer to previous | to last
178 05-May-2017 09:15 7 KB Jochen Reutelshöfer to previous | to last
177 05-May-2017 09:14 7 KB Jochen Reutelshöfer to previous | to last
176 05-May-2017 09:13 7 KB Jochen Reutelshöfer to previous | to last
175 05-May-2017 09:13 7 KB Jochen Reutelshöfer to previous | to last
174 05-May-2017 09:08 7 KB Jochen Reutelshöfer to previous | to last
173 05-May-2017 09:08 7 KB Jochen Reutelshöfer to previous | to last
172 05-May-2017 09:07 7 KB Jochen Reutelshöfer to previous | to last
171 05-May-2017 09:07 7 KB Jochen Reutelshöfer to previous | to last
170 24-Apr-2017 22:29 7 KB Jochen Reutelshöfer to previous | to last
169 24-Apr-2017 22:26 7 KB Jochen Reutelshöfer to previous | to last
168 24-Apr-2017 22:26 7 KB Jochen Reutelshöfer to previous | to last
167 24-Apr-2017 22:25 7 KB Jochen Reutelshöfer to previous | to last
166 24-Apr-2017 22:25 7 KB Jochen Reutelshöfer to previous | to last
165 24-Apr-2017 22:24 7 KB Jochen Reutelshöfer to previous | to last
164 24-Apr-2017 22:24 7 KB Jochen Reutelshöfer to previous | to last
163 24-Apr-2017 22:22 7 KB Jochen Reutelshöfer to previous | to last
162 24-Apr-2017 22:22 7 KB Jochen Reutelshöfer to previous | to last
161 24-Apr-2017 22:22 6 KB Jochen Reutelshöfer to previous | to last
Incoming links Outgoing links

Difference between version and

At line 9 added 3 lines
%%namespace
c http://denkbares.com/ConfigOptionsDemo/
%
At line 13 added 3 lines
!! Definitions Configuration Options
At line 11 removed one line
dco:ConfigOptionAssignment a owl:Class .
At line 18 added 8 lines
dco:ChoiceConfigOption rdfs:subClassOf ConfigOption .
dco:NumConfigOption rdfs:subClassOf ConfigOption .
dco:ConfigOptionAssignment a owl:Class .
dco:option a owl:ObjectProperty .
dco:is a owl:ObjectProperty .
dco:isNot a owl:ObjectProperty .
dco:ChoiceValue a owl:Class .
dco:availableChoice a owl:ObjectProperty .
At line 27 added one line
%
At line 16 changed one line
dco:contradicts a owl:ObjectProperty .
!! Definitions Constraints
At line 32 added 9 lines
%%turtle
dco:Constraint a owl:Class .
dco:ContradictingConstraint rdfs:subClassOf Constraint .
dco:hasDisjointSet a owl:ObjectProperty .
dco:assignmentA a owl:ObjectProperty .
dco:assignmentB a owl:ObjectProperty .
dco:min a owl:DatatypeProperty .
dco:max a owl:DatatypeProperty .
At line 43 added 10 lines
!! Definitions Car configuration set
%%turtle
dco:CarConfigSet a owl:Class.
dco:hasConfiguration a owl:ObjectProperty .
%
At line 23 changed 4 lines
dco:Engine a coo:ChoiceConfigOption ; # A set of battery choices
dco:availableChoice dco:SmallEngine, dco:MediumEngine, dco:Turbo ;
dco:max 1 ;
dco:min 0 .
dco:Engine a dco:ChoiceConfigOption ;
dco:availableChoice dco:SmallEngine, dco:MediumEngine, dco:Turbo .
dco:SmallEngine a ChoiceValue .
dco:MediumEngine a ChoiceValue .
dco:Turbo a ChoiceValue .
At line 31 changed one line
! Constraint:
! Option Hitch
At line 68 added 311 lines
%%turtle
dco:Hitch a dco:ChoiceConfigOption ;
dco:availableChoice WithHitch, WithoutHitch .
dco:WithHitch a ChoiceValue .
dco:WithoutHitch a ChoiceValue .
%
! Option Edition
%%turtle
dco:Edition a dco:ChoiceConfigOption ;
dco:availableChoice FamilyEdition, SportsEdition, OffroadEdition .
dco:FamilyEdition a ChoiceValue .
dco:SportsEdition a ChoiceValue .
dco:OffroadEdition a ChoiceValue .
%
! Option Number of Doors
%%turtle
dco:NumberOfDoors a dco:NumConfigOption ;
dco:min "3" ;
dco:max "5" .
%
! Constraint 1 : Hitch contradicts Small Engine
%%
%%turtle
dco:HitchConstradictsSmallEngine a ContradictingConstraint ;
rdfs:label "Anhängerkupplung nicht mit kleinem Motor" ;
assignmentA [ option Hitch; is WithHitch] ;
assignmentB [ option Engine; is SmallEngine ] .
%
! Constraint 2 : Family Edition contradict 3 doors
%%turtle
dco:FamilyConstradicts3Doors a ContradictingConstraint ;
assignmentA [ option Edition; is FamilyEdition] ;
assignmentB [ option NumberOfDoors; is "3" ] .
%
! Constraint 3 : Offroad Edition requires TurboEngine
%%turtle
dco:OffroadRequiresTurboEngine a ContradictingConstraint ;
assignmentA [ option Edition; is OffroadEdition] ;
assignmentB [ option Engine; isNot Turbo ] .
%
!! Car 1
%%turtle
dco:Car1 a CarConfigSet ;
hasConfiguration
[ option Engine; is MediumEngine ] ,
[ option Hitch; is WithHitch] .
%
%%sparql
SELECT ?option ?value WHERE {
dco:Car1 dco:hasConfiguration ?assignment.
?assignment dco:option ?option .
?assignment dco:is ?value .
}
%
!! Car 2
%%turtle
dco:Car2 a CarConfigSet ;
hasConfiguration
[ option Engine; is SmallEngine ] ,
[ option Edition; is OffroadEdition ] ,
[ option Hitch; is WithHitch] .
%
%%sparql
SELECT ?option ?value WHERE {
dco:Car2 dco:hasConfiguration ?assignment.
?assignment dco:option ?option .
?assignment dco:is ?value .
}
%
! Car 3
%%turtle
dco:Car3 a CarConfigSet ;
hasConfiguration
[ option Edition; is FamilyEdition ] ,
[ option NumberOfDoors; is "3"] .
%
%%sparql
SELECT ?option ?value WHERE {
dco:Car3 dco:hasConfiguration ?assignment.
?assignment dco:option ?option .
?assignment dco:is ?value .
}
%
! Car 4
%%turtle
dco:Car4 a CarConfigSet ;
hasConfiguration
[ option Edition; is FamilyEdition ] ,
[ option NumberOfDoors; is "5"] .
%
%%sparql
SELECT ?option ?value WHERE {
dco:Car4 dco:hasConfiguration ?assignment.
?assignment dco:option ?option .
?assignment dco:is ?value .
}
%
! Ill-defined Car
%%turtle
dco:CarX a CarConfigSet ;
hasConfiguration
[ option Engine; is WithHitch ] ,
[ option NumberOfDoors; is "99" ] ,
[ option Hitch; is SportsEdition] .
%
%%sparql
SELECT ?option ?value WHERE {
dco:CarX dco:hasConfiguration ?assignment.
?assignment dco:option ?option .
?assignment dco:is ?value .
}
%
!! Assignment Consistency Query
%%Sparql
SELECT ?car ?option ?value {
{
?car rdf:type dco:CarConfigSet .
?car dco:hasConfiguration ?assignment .
?assignment dco:option ?option .
?assignment dco:is ?value .
?option rdf:type dco:ChoiceConfigOption .
FILTER NOT EXISTS {
?option dco:availableChoice ?value .
}
}
UNION {
?car rdf:type dco:CarConfigSet .
?car dco:hasConfiguration ?assignment .
?assignment dco:option ?option .
?assignment dco:is ?value .
?option rdf:type dco:NumConfigOption .
?option dco:min ?minValue .
?option dco:max ?maxValue .
FILTER (xsd:integer(?value) < xsd:integer(?minValue)
|| xsd:integer(?value) > xsd:integer(?maxValue) )
}
}
%
!! Constraint Validation Query
__Violated Constraints:__
%%sparql
SELECT ?car ?constraint ?constraintOptionA ?carOptionA ?valueA ?constraintOptionB ?carOptionB ?valueB ?compliesA ?compliesB WHERE {
# for each car config and constraint do...
?car rdf:type dco:CarConfigSet .
?constraint rdf:type dco:Constraint .
# First constraint/configuration match
?car dco:hasConfiguration ?carConfigAssignment1 .
?carConfigAssignment1 dco:is ?valueA .
?carConfigAssignment1 dco:option ?carOptionA .
?constraint dco:assignmentA ?constraintAssignmentA .
?constraintAssignmentA dco:option ?constraintOptionA .
FILTER (?constraintOptionA = ?carOptionA) .
OPTIONAL {
?constraintAssignmentA dco:is ?constraintValueA .
}
OPTIONAL {
?constraintAssignmentA dco:isNot ?constraintValueA .
}
BIND( IF (
(EXISTS{?constraintAssignmentA dco:is ?constraintValueA} && ?constraintValueA = ?valueA)
|| (EXISTS{?constraintAssignmentA dco:isNot ?constraintValueA} && ?constraintValueA != ?valueA)
, "true", "false") as ?compliesA) .
# Second constraint/configuration match
?car dco:hasConfiguration ?carConfigAssignment2 .
?carConfigAssignment2 dco:is ?valueB .
?carConfigAssignment2 dco:option ?carOptionB .
?constraint dco:assignmentB ?constraintAssignmentB .
?constraintAssignmentB dco:option ?constraintOptionB .
FILTER (?constraintOptionB = ?carOptionB) .
OPTIONAL {
?constraintAssignmentB dco:is ?constraintValueB .
}
OPTIONAL {
?constraintAssignmentB dco:isNot ?constraintValueB .
}
BIND( IF (
(EXISTS{?constraintAssignmentB dco:is ?constraintValueB} && ?constraintValueB = ?valueB)
|| (EXISTS{?constraintAssignmentB dco:isNot ?constraintValueB} && ?constraintValueB != ?valueB)
, "true", "false") as ?compliesB) .
# filter identities and aggregate result
FILTER (?constraintAssignmentA != ?constraintAssignmentB) .
FILTER (?carConfigAssignment1 != ?carConfigAssignment2) .
FILTER (?compliesA = "true" && ?compliesB = "true" ).
}
%
%%sparql
SELECT ?car ?constraint ?valueA ?valueB WHERE {
?car rdf:type dco:CarConfigSet .
?constraint rdf:type dco:Constraint .
?car dco:hasConfiguration ?carConfigAssignment1 .
?constraint dco:assignmentA ?constraintAssignmentA .
?constraintAssignmentA dco:is ?valueA .
?carConfigAssignment1 dco:is ?valueA .
?car dco:hasConfiguration ?carConfigAssignment2 .
?constraint dco:assignmentB ?constraintAssignmentB .
?constraintAssignmentB dco:is ?valueB .
?carConfigAssignment2 dco:is ?valueB .
}
%
%%sparql
SELECT ?constraint ?edge ?option WHERE {
?constraint dco:assignmentA|dco:assignmentB ?assignment .
?assignment dco:option ?option .
BIND ( "usesOption" AS ?edge ) .
}
%
%%sparqlVisualization
SELECT ?constraint ?edge ?option WHERE {
?constraint dco:assignmentA|dco:assignmentB ?assignment .
?assignment dco:option ?option .
BIND ( "usesOption" AS ?edge ) .
}
@config: configVis
%
%%VisualizationConfig
@name: configVis
@colors: c:color
%
%%turtle
c:color a owl:DatatypeProperty .
dco:Constraint c:color "orange" .
dco:ConfigOption c:color "#80ccff" .
%