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 added 3 lines
%%namespace
c http://denkbares.com/ConfigOptionsDemo/
%
At line 13 added one line
At line 17 changed 2 lines
dco:hasOption a owl:ObjectProperty .
dco:val a owl:ObjectProperty .
dco:option a owl:ObjectProperty .
dco:is a owl:ObjectProperty .
dco:isNot a owl:ObjectProperty .
At line 31 changed 3 lines
dco:hasValueA a owl:ObjectProperty .
dco:hasValueB a owl:ObjectProperty .
dco:contradicts 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 42 changed one line
dco:hasConfigAssignment a owl:ObjectProperty .
dco:hasConfiguration a owl:ObjectProperty .
At line 88 changed one line
dco:NumberOfDoors a dco:NumConfigOption .
dco:NumberOfDoors a dco:NumConfigOption ;
dco:min "3" ;
dco:max "5" .
At line 98 changed 3 lines
dco:HitchConstradictsSmallEngine a ContradictingConstraint ;
hasValueA [ hasOption Hitch; val WithHitch] ;
hasValueB [ hasOption Engine; val SmallEngine ] .
dco:HitchConstradictsSmallEngine a ContradictingConstraint ;
rdfs:label "Anhängerkupplung nicht mit kleinem Motor" ;
assignmentA [ option Hitch; is WithHitch] ;
assignmentB [ option Engine; is SmallEngine ] .
At line 114 added 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 109 changed 3 lines
hasConfigAssignment
[ hasOption Engine; val MediumEngine ] ,
[ hasOption Hitch; val WithHitch] .
hasConfiguration
[ option Engine; is MediumEngine ] ,
[ option Hitch; is WithHitch] .
At line 116 changed 3 lines
dco:Car1 dco:hasConfigAssignment ?assignment.
?assignment dco:hasOption ?option .
?assignment dco:value ?value .
dco:Car1 dco:hasConfiguration ?assignment.
?assignment dco:option ?option .
?assignment dco:is ?value .
At line 128 changed 3 lines
hasConfigAssignment
[ hasOption Engine; val SmallEngine ] ,
[ hasOption Hitch; val WithHitch] .
hasConfiguration
[ option Engine; is SmallEngine ] ,
[ option Edition; is OffroadEdition ] ,
[ option Hitch; is WithHitch] .
At line 135 changed 3 lines
dco:Car2 dco:hasConfigAssignment ?assignment.
?assignment dco:hasOption ?option .
?assignment dco:value ?value .
dco:Car2 dco:hasConfiguration ?assignment.
?assignment dco:option ?option .
?assignment dco:is ?value .
At line 173 added 38 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 .
}
%
At line 147 changed 3 lines
hasConfigAssignment
[ hasOption Engine; val WithHitch ] ,
[ hasOption Hitch; val SportsEdition] .
hasConfiguration
[ option Engine; is WithHitch ] ,
[ option NumberOfDoors; is "99" ] ,
[ option Hitch; is SportsEdition] .
At line 154 changed 3 lines
dco:CarX dco:hasConfigAssignment ?assignment.
?assignment dco:hasOption ?option .
?assignment dco:value ?value .
dco:CarX dco:hasConfiguration ?assignment.
?assignment dco:option ?option .
?assignment dco:is ?value .
At line 166 changed 6 lines
?car rdf:type dco:CarConfigSet .
?car dco:hasConfigAssignment ?assignment .
?assignment dco:value ?value .
?assignment dco:hasOption ?option .
FILTER NOT EXISTS {
?option dco:availableChoice ?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 .
}
At line 247 added 11 lines
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 259 added 3 lines
}
At line 267 added 3 lines
__Violated Constraints:__
At line 181 changed one line
SELECT ?car ?constraint WHERE {
SELECT ?car ?constraint ?constraintOptionA ?carOptionA ?valueA ?constraintOptionB ?carOptionB ?valueB ?compliesA ?compliesB WHERE {
# for each car config and constraint do...
?car rdf:type dco:CarConfigSet .
At line 183 removed 6 lines
?constraint dco:hasValueA ?constraintAssignmentA .
?constraintAssignmentA dco:hasOption ?constraintAssignmentAOption .
?constraintAssignmentA dco:value ?valueA .
?constraint dco:hasValueB ?constraintAssignmentB .
?constraintAssignmentB dco:hasOption ?constraintAssignmentBOption .
?constraintAssignmentB dco:value ?valueB .
At line 277 added 51 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) .
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 {
At line 191 changed 4 lines
?car dco:hasConfigAssignment ?assignment1 .
?assignment1 dco:value ?valueA .
?car dco:hasConfigAssignment ?assignment2 .
?assignment2 dco:value ?valueB .
?constraint rdf:type dco:Constraint .
At line 331 added 2 lines
?car dco:hasConfiguration ?carConfigAssignment1 .
?constraint dco:assignmentA ?constraintAssignmentA .
At line 334 added 9 lines
?constraintAssignmentA dco:is ?valueA .
?carConfigAssignment1 dco:is ?valueA .
?car dco:hasConfiguration ?carConfigAssignment2 .
?constraint dco:assignmentB ?constraintAssignmentB .
?constraintAssignmentB dco:is ?valueB .
?carConfigAssignment2 dco:is ?valueB .
At line 345 added one line
At line 348 added 31 lines
%%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" .
%