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.

Page revision history

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

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 9 removed 3 lines
%%namespace
c http://denkbares.com/ConfigOptionsDemo/
%
At line 13 removed one line
At line 13 added 3 lines
dco:ConfigOptionAssignment a owl:Class .
dco:hasOption a owl:ObjectProperty .
dco:hasOptionValue a owl:ObjectProperty .
At line 19 removed 5 lines
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 .
At line 34 removed one line
dco:ContradictingConstraint rdfs:subClassOf Constraint .
At line 36 changed 4 lines
dco:assignmentA a owl:ObjectProperty .
dco:assignmentB a owl:ObjectProperty .
dco:min a owl:DatatypeProperty .
dco:max a owl:DatatypeProperty .
dco:hasValueA a owl:ObjectProperty .
dco:hasValueB a owl:ObjectProperty .
dco:contradicts a owl:ObjectProperty .
At line 48 changed one line
dco:hasConfiguration a owl:ObjectProperty .
dco:hasConfigAssignment a owl:ObjectProperty .
At line 78 removed 23 lines
! 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" .
%
At line 106 changed 4 lines
dco:HitchConstradictsSmallEngine a ContradictingConstraint ;
rdfs:label "Anhängerkupplung nicht mit kleinem Motor" ;
assignmentA [ option Hitch; is WithHitch] ;
assignmentB [ option Engine; is SmallEngine ] .
dco:HitchConstradictsSmallEngine a Constraint ;
hasValueA dco:WithHitch;
hasValueB dco:SmallEngine .
At line 114 removed 20 lines
! 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 ] .
%
At line 138 changed 3 lines
hasConfiguration
[ option Engine; is MediumEngine ] ,
[ option Hitch; is WithHitch] .
hasConfigAssignment
[ hasOption Engine; hasOptionValue MediumEngine ] ,
[ hasOption Hitch; hasOptionValue WithHitch] .
At line 145 changed 3 lines
dco:Car1 dco:hasConfiguration ?assignment.
?assignment dco:option ?option .
?assignment dco:is ?value .
dco:Car1 dco:hasConfigAssignment ?assignment.
?assignment dco:hasOption ?option .
?assignment dco:hasOptionValue ?value .
At line 157 changed 4 lines
hasConfiguration
[ option Engine; is SmallEngine ] ,
[ option Edition; is OffroadEdition ] ,
[ option Hitch; is WithHitch] .
hasConfigAssignment
[ hasOption Engine; hasOptionValue SmallEngine ] ,
[ hasOption Hitch; hasOptionValue WithHitch] .
At line 165 changed 3 lines
dco:Car2 dco:hasConfiguration ?assignment.
?assignment dco:option ?option .
?assignment dco:is ?value .
dco:Car2 dco:hasConfigAssignment ?assignment.
?assignment dco:hasOption ?option .
?assignment dco:hasOptionValue ?value .
At line 173 removed 92 lines
! 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) )
}
}
%
At line 267 removed 3 lines
__Violated Constraints:__
At line 271 changed 3 lines
SELECT ?car ?constraint ?constraintOptionA ?carOptionA ?valueA ?constraintOptionB ?carOptionB ?valueB ?compliesA ?compliesB WHERE {
# for each car config and constraint do...
SELECT ?car ?constraint WHERE {
?constraint rdf:type dco:Contraint .
At line 275 removed one line
?constraint rdf:type dco:Constraint .
At line 277 removed 7 lines
# 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) .
At line 285 removed 10 lines
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) .
At line 296 changed 10 lines
# 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 .
?car hasConfigAssignment ?assignment .
?assignment dco:hasOptionValue ?value
At line 307 removed 7 lines
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) .
At line 315 removed 4 lines
# filter identities and aggregate result
FILTER (?constraintAssignmentA != ?constraintAssignmentB) .
FILTER (?carConfigAssignment1 != ?carConfigAssignment2) .
FILTER (?compliesA = "true" && ?compliesB = "true" ).
At line 320 removed 3 lines
}
At line 325 removed 54 lines
%%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" .
%