Toggle navigation
Toggle navigation
This project
Loading...
Sign in
data.posccaesar.org
/
npd
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Graphs
Issues
1
Merge Requests
0
Wiki
Network
Create a new issue
Commits
Issue Boards
Authored by
David Leal
2011-08-04 10:48:00 +0100
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
135b12df2a6900c5e4c91d9bb84c6a9c2d77449f
135b12df
1 parent
46edf535
Use of temporal parts of a WellBore
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
114 additions
and
77 deletions
www.reportinghub.no/ep/schema/1.1/SCHEMA_EP-ACTIVITY-(v1.1).ttl
www.reportinghub.no/ep/schema/1.1/SCHEMA_EP-WELL-(v1.1).ttl
www.reportinghub.no/ep/spin/SPIN_EPIM-lib-(v1.1).ttl
www.reportinghub.no/ep/spin/SPIN_EPIM-lib-(v1.1).ttl.tbc
www.reportinghub.no/ep/transform/TRANSFORM_ddr-drillReport-(v1.1.1).ttl
www.reportinghub.no/ep/transform/TRANSFORM_ddr-drillReport-(v1.1.1).ttl.tbc
www.reportinghub.no/ep/transform/TRANSFORM_ddr-normalization-(v1.1.1).ttl
www.reportinghub.no/ep/transform/TRANSFORM_ddr-normalization-(v1.1.1).ttl.tbc
www.reportinghub.no/ep/schema/1.1/SCHEMA_EP-ACTIVITY-(v1.1).ttl
View file @
135b12d
# Saved by TopBraid on T
ue Aug 02 12:39:11
BST 2011
# Saved by TopBraid on T
hu Aug 04 09:28:03
BST 2011
# baseURI: http://www.reportinghub.no/ep/schema/1.1/activity
# imports: http://www.linkedmodel.org/1.2/schema/vaem
# imports: http://www.reportinghub.no/ep/schema/1.1/well
...
...
@@ -15,7 +15,7 @@
<http://www.reportinghub.no/ep/schema/1.1/activity>
rdf:
type
owl:
Ontology
;
owl:
imports
<http://www.
linkedmodel.org/1.1/schema/ordered>
,
<http://www.reportinghub.no/ep/schema/1.1/well>
,
<http://www.reportinghub.no/ep/schema/1.1/equipment>
,
<http://www.linkedmodel.org/1.2/schema/vaem>
,
<http://www.reportinghub.no/ep/schema/1.1/core
>
;
owl:
imports
<http://www.
reportinghub.no/ep/schema/1.1/core>
,
<http://www.linkedmodel.org/1.2/schema/vaem>
,
<http://www.reportinghub.no/ep/schema/1.1/equipment>
,
<http://www.reportinghub.no/ep/schema/1.1/well>
,
<http://www.linkedmodel.org/1.1/schema/ordered
>
;
owl:
versionInfo
"Created with TopBraid Composer"
^^
xsd:
string
.
ep-activity:
Activity
...
...
@@ -24,33 +24,33 @@ ep-activity:Activity
rdfs:
subClassOf
owl:
Thing
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
allValuesFrom
ep-activity:
Activity
;
owl:
onProperty
<http://www.linkedmodel.org/schema/ordered#during>
owl:
maxCardinality
"1"
^^
xsd:
nonNegativeInteger
;
owl:
onProperty
ep-activity:
startedAt
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
allValuesFrom
ep-activity:
Activity
;
owl:
onProperty
<http://www.linkedmodel.org/schema/ordered#overlaps>
owl:
maxCardinality
"1"
^^
xsd:
nonNegativeInteger
;
owl:
onProperty
ep-activity:
finishedAt
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
allValuesFrom
ep-activity:
Activity
;
owl:
onProperty
<http://www.linkedmodel.org/schema/ordered#
before
>
owl:
onProperty
<http://www.linkedmodel.org/schema/ordered#
after
>
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
allValuesFrom
ep-activity:
Activity
;
owl:
onProperty
<http://www.linkedmodel.org/schema/ordered#
after
>
owl:
onProperty
<http://www.linkedmodel.org/schema/ordered#
before
>
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
maxCardinality
"1"
^^
xsd:
nonNegativeInteger
;
owl:
onProperty
ep-activity:
finishedAt
owl:
allValuesFrom
ep-activity:
Activity
;
owl:
onProperty
<http://www.linkedmodel.org/schema/ordered#overlaps>
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
maxCardinality
"1"
^^
xsd:
nonNegativeInteger
;
owl:
onProperty
ep-activity:
startedAt
owl:
allValuesFrom
ep-activity:
Activity
;
owl:
onProperty
<http://www.linkedmodel.org/schema/ordered#during>
]
.
ep-activity:
DailyDrillingActivity
...
...
@@ -59,13 +59,13 @@ ep-activity:DailyDrillingActivity
rdfs:
subClassOf
ep-activity:
OffshoreWellActivity
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
allValuesFrom
ep-activity:
DrillingActivity
;
owl:
onProperty
<http://www.linkedmodel.org/schema/ordered#last>
owl:
allValuesFrom
<http://www.reportinghub.no/ep/schema/well#AllOrPartOfTheLifeOfAWellBore>
;
owl:
onProperty
ep-activity:
onWellBore
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
maxCardinality
"1"
^^
xsd:
nonNegativeInteger
;
owl:
onProperty
<http://www.linkedmodel.org/schema/ordered#first>
owl:
allValuesFrom
ep-activity:
DrillingActivity
;
owl:
onProperty
ep-activity:
hasSubActivity
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
...
...
@@ -74,13 +74,13 @@ ep-activity:DailyDrillingActivity
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
allValuesFrom
ep-activity:
DrillingActivity
;
owl:
onProperty
ep-activity:
hasSubActivity
owl:
maxCardinality
"1"
^^
xsd:
nonNegativeInteger
;
owl:
onProperty
<http://www.linkedmodel.org/schema/ordered#first>
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
allValuesFrom
<http://www.reportinghub.no/ep/schema/well#WellBore>
;
owl:
onProperty
ep-activity:
onWellBore
owl:
allValuesFrom
ep-activity:
DrillingActivity
;
owl:
onProperty
<http://www.linkedmodel.org/schema/ordered#last>
]
.
ep-activity:
DailyDrillingReport
...
...
@@ -147,22 +147,22 @@ ep-activity:OffshoreWellActivity
rdfs:
subClassOf
ep-activity:
OffshoreActivity
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
cardinality
"1"
^^
xsd:
nonNegativeInteger
;
owl:
allValuesFrom
<http://www.reportinghub.no/ep/schema/well#Well>
;
owl:
onProperty
ep-activity:
onWell
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
allValuesFrom
<http://www.reportinghub.no/ep/schema/equipment#Rig>
;
owl:
cardinality
"1"
^^
xsd:
nonNegativeInteger
;
owl:
onProperty
ep-activity:
onRig
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
cardinality
"1"
^^
xsd:
nonNegativeInteger
;
owl:
allValuesFrom
<http://www.reportinghub.no/ep/schema/equipment#Rig>
;
owl:
onProperty
ep-activity:
onRig
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
allValuesFrom
<http://www.reportinghub.no/ep/schema/well#Well>
;
owl:
cardinality
"1"
^^
xsd:
nonNegativeInteger
;
owl:
onProperty
ep-activity:
onWell
]
.
...
...
@@ -206,7 +206,7 @@ ep-activity:WeeklyProductionActivity
]
.
ep-activity:
createdAt
rdf:
type
owl:
DatatypeProperty
,
owl:
Functional
Property
;
rdf:
type
owl:
FunctionalProperty
,
owl:
Datatype
Property
;
rdfs:
label
"created at"
^^
xsd:
string
;
rdfs:
range
<http://www.linkedmodel.org/schema/vaem#dateUnion>
.
...
...
@@ -228,7 +228,7 @@ ep-activity:onWell
rdfs:
label
"on well"
^^
xsd:
string
.
ep-activity:
onWellBore
rdf:
type
owl:
ObjectProperty
,
owl:
Functional
Property
;
rdf:
type
owl:
FunctionalProperty
,
owl:
Object
Property
;
rdfs:
label
"on WellBore"
^^
xsd:
string
.
ep-activity:
reportOn
...
...
www.reportinghub.no/ep/schema/1.1/SCHEMA_EP-WELL-(v1.1).ttl
View file @
135b12d
# Saved by TopBraid on
Mon Aug 01 13:33:39 PD
T 2011
# Saved by TopBraid on
Thu Aug 04 10:01:25 BS
T 2011
# baseURI: http://www.reportinghub.no/ep/schema/1.1/well
# imports: http://www.reportinghub.no/ep/schema/1.1/core
...
...
@@ -14,25 +14,34 @@
owl:
imports
<http://www.reportinghub.no/ep/schema/1.1/core>
;
owl:
versionInfo
"Created with TopBraid Composer"
^^
xsd:
string
.
ep-well:
AllOrPartOfTheLifeOfAWellBore
rdf:
type
owl:
Class
;
rdfs:
label
"all or part of the life of a well bore"
^^
xsd:
string
.
ep-well:
TemporalPartOfAWellBore
rdf:
type
owl:
Class
;
rdfs:
label
"temporal part of a well bore"
^^
xsd:
string
;
rdfs:
subClassOf
ep-well:
AllOrPartOfTheLifeOfAWellBore
.
ep-well:
Well
rdf:
type
owl:
Class
;
rdfs:
label
"Well"
^^
xsd:
string
;
rdfs:
subClassOf
owl:
Thing
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
allValuesFrom
ep-well:
WellBore
;
owl:
onProperty
<http://www.reportinghub.no/ep/schema/core#
hasPart
>
owl:
cardinality
"1"
^^
xsd:
nonNegativeInteger
;
owl:
onProperty
<http://www.reportinghub.no/ep/schema/core#
name
>
]
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
cardinality
"1"
^^
xsd:
nonNegativeInteger
;
owl:
onProperty
<http://www.reportinghub.no/ep/schema/core#
name
>
owl:
allValuesFrom
ep-well:
WellBore
;
owl:
onProperty
<http://www.reportinghub.no/ep/schema/core#
hasPart
>
]
.
ep-well:
WellBore
rdf:
type
owl:
Class
;
rdfs:
label
"
W
ell bore"
^^
xsd:
string
;
rdfs:
subClassOf
owl:
Thing
;
rdfs:
label
"
w
ell bore"
^^
xsd:
string
;
rdfs:
subClassOf
ep-well:
AllOrPartOfTheLifeOfAWellBore
;
rdfs:
subClassOf
[
rdf:
type
owl:
Restriction
;
owl:
cardinality
"1"
^^
xsd:
nonNegativeInteger
;
...
...
www.reportinghub.no/ep/spin/SPIN_EPIM-lib-(v1.1).ttl
View file @
135b12d
# Saved by TopBraid on
Wed Aug 03 06:33:37
BST 2011
# Saved by TopBraid on
Thu Aug 04 09:22:54
BST 2011
# baseURI: http://www.reportinghub.no/ep/spin/1.1/lib
# imports: http://spinrdf.org/spin
...
...
@@ -66,13 +66,34 @@ ep-spin-lib:buildDailyDrillingReportURI
])
]
.
ep-spin-lib:
buildTemporalPartOfAWellBoreURI
rdf:
type
spin:
Function
;
rdfs:
label
"build TemporalPartOfWellBore URI"
^^
xsd:
string
;
rdfs:
subClassOf
ep-spin-lib:
Function
;
spin:
body
[
rdf:
type
sp:
Select
;
sp:
resultVariables
(
_:
b3
)
;
sp:
where
([
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
ep-spin-lib:
buildURI
;
sp:
arg1
"https://www.reportinghub.no/ep/data/WellBore#"
;
sp:
arg2
[
rdf:
type
fn:
concat
;
sp:
arg1
spin:
_arg1
;
sp:
arg2
"$"
;
sp:
arg3
spin:
_arg2
]
]
;
sp:
variable
_:
b3
])
]
.
ep-spin-lib:
buildURI
rdf:
type
spin:
Function
;
rdfs:
label
"build URI"
^^
xsd:
string
;
rdfs:
subClassOf
ep-spin-lib:
Function
;
spin:
body
[
rdf:
type
sp:
Select
;
sp:
resultVariables
(
_:
b
3
)
;
sp:
resultVariables
(
_:
b
4
)
;
sp:
where
([
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
smf:
resource
;
...
...
@@ -81,17 +102,17 @@ ep-spin-lib:buildURI
sp:
arg2
spin:
_arg2
]
]
;
sp:
variable
_:
b
3
sp:
variable
_:
b
4
])
]
;
spin:
constraint
[
rdf:
type
spl:
Argument
;
spl:
predicate
sp:
arg
1
;
spl:
predicate
sp:
arg
2
;
spl:
valueType
xsd:
string
]
;
spin:
constraint
[
rdf:
type
spl:
Argument
;
spl:
predicate
sp:
arg
2
;
spl:
predicate
sp:
arg
1
;
spl:
valueType
xsd:
string
]
.
...
...
@@ -101,14 +122,14 @@ ep-spin-lib:buildWellBoreURI
rdfs:
subClassOf
ep-spin-lib:
Function
;
spin:
body
[
rdf:
type
sp:
Select
;
sp:
resultVariables
(
_:
b
4
)
;
sp:
resultVariables
(
_:
b
5
)
;
sp:
where
([
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
ep-spin-lib:
buildURI
;
sp:
arg1
"https://www.reportinghub.no/ep/data/WellBore#"
;
sp:
arg2
spin:
_arg1
]
;
sp:
variable
_:
b
4
sp:
variable
_:
b
5
])
]
.
...
...
@@ -118,14 +139,14 @@ ep-spin-lib:buildWellURI
rdfs:
subClassOf
ep-spin-lib:
Function
;
spin:
body
[
rdf:
type
sp:
Select
;
sp:
resultVariables
(
_:
b
5
)
;
sp:
resultVariables
(
_:
b
6
)
;
sp:
where
([
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
ep-spin-lib:
buildURI
;
sp:
arg1
"https://www.reportinghub.no/ep/data/Well#"
;
sp:
arg2
spin:
_arg1
]
;
sp:
variable
_:
b
5
sp:
variable
_:
b
6
])
]
.
...
...
@@ -135,7 +156,7 @@ ep-spin-lib:normalizeString
rdfs:
subClassOf
ep-spin-lib:
Function
;
spin:
body
[
rdf:
type
sp:
Select
;
sp:
resultVariables
(
_:
b
6
)
;
sp:
resultVariables
(
_:
b
7
)
;
sp:
where
([
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
smf:
regex
;
...
...
@@ -143,67 +164,67 @@ ep-spin-lib:normalizeString
sp:
arg2
"\\((.*)\\)"
;
sp:
arg3
""
]
;
sp:
variable
_:
b
7
sp:
variable
_:
b
8
]
[
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
smf:
trim
;
sp:
arg1
_:
b
7
sp:
arg1
_:
b
8
]
;
sp:
variable
_:
b
8
sp:
variable
_:
b
9
]
[
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
smf:
encodeURL
;
sp:
arg1
_:
b
8
sp:
arg1
_:
b
9
]
;
sp:
variable
_:
b
9
sp:
variable
_:
b
10
]
[
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
smf:
regex
;
sp:
arg1
_:
b
9
;
sp:
arg1
_:
b
10
;
sp:
arg2
"%2F"
;
sp:
arg3
"_"
]
;
sp:
variable
_:
b1
0
sp:
variable
_:
b1
1
]
[
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
smf:
regex
;
sp:
arg1
_:
b1
0
;
sp:
arg1
_:
b1
1
;
sp:
arg2
"%[0-9A-F][0-9A-F]"
;
sp:
arg3
""
]
;
sp:
variable
_:
b1
1
sp:
variable
_:
b1
2
]
[
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
smf:
regex
;
sp:
arg1
_:
b1
1
;
sp:
arg1
_:
b1
2
;
sp:
arg2
"\\+"
;
sp:
arg3
"_"
]
;
sp:
variable
_:
b1
2
sp:
variable
_:
b1
3
]
[
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
smf:
regex
;
sp:
arg1
_:
b1
2
;
sp:
arg1
_:
b1
3
;
sp:
arg2
"_+"
;
sp:
arg3
"_"
]
;
sp:
variable
_:
b1
3
sp:
variable
_:
b1
4
]
[
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
smf:
regex
;
sp:
arg1
_:
b1
3
;
sp:
arg1
_:
b1
4
;
sp:
arg2
"\\*"
;
sp:
arg3
""
]
;
sp:
variable
_:
b1
4
sp:
variable
_:
b1
5
]
[
rdf:
type
sp:
Bind
;
sp:
expression
[
rdf:
type
xsd:
string
;
sp:
arg1
[
rdf:
type
smf:
upperCase
;
sp:
arg1
_:
b1
4
sp:
arg1
_:
b1
5
]
]
;
sp:
variable
_:
b
6
sp:
variable
_:
b
7
])
]
;
spin:
constraint
...
...
@@ -212,34 +233,37 @@ ep-spin-lib:normalizeString
spl:
valueType
xsd:
string
]
.
_:
b
4
sp:
varName
"uri"
^^
xsd:
string
.
_:
b
3
sp:
varName
"uri"
^^
xsd:
string
.
_:
b5
sp:
varName
"uri"
^^
xsd:
string
.
_:
b15
sp:
varName
"t4"
^^
xsd:
string
.
_:
b14
sp:
varName
"t
4
"
^^
xsd:
string
.
sp:
varName
"t
3
"
^^
xsd:
string
.
_:
b13
sp:
varName
"t
3
"
^^
xsd:
string
.
sp:
varName
"t
2
"
^^
xsd:
string
.
_:
b12
sp:
varName
"t
2
"
^^
xsd:
string
.
sp:
varName
"t
1
"
^^
xsd:
string
.
_:
b11
sp:
varName
"t
1
"
^^
xsd:
string
.
sp:
varName
"t
0b
"
^^
xsd:
string
.
_:
b10
sp:
varName
"t0
b
"
^^
xsd:
string
.
sp:
varName
"t0
a
"
^^
xsd:
string
.
_:
b9
sp:
varName
"
t0a
"
^^
xsd:
string
.
_:
b9
sp:
varName
"
s2
"
^^
xsd:
string
.
_:
b8
sp:
varName
"s
2
"
^^
xsd:
string
.
_:
b8
sp:
varName
"s
1
"
^^
xsd:
string
.
_:
b7
sp:
varName
"
s1
"
^^
xsd:
string
.
_:
b7
sp:
varName
"
normalizedStr
"
^^
xsd:
string
.
_:
b6
sp:
varName
"
normalizedStr
"
^^
xsd:
string
.
_:
b6
sp:
varName
"
uri
"
^^
xsd:
string
.
_:
b3
sp:
varName
"uri"
^^
xsd:
string
.
_:
b5
sp:
varName
"uri"
^^
xsd:
string
.
_:
b4
sp:
varName
"uri"
^^
xsd:
string
.
_:
b2
sp:
varName
"uri"
^^
xsd:
string
.
...
...
www.reportinghub.no/ep/spin/SPIN_EPIM-lib-(v1.1).ttl.tbc
View file @
135b12d
# Saved by TopBraid on
Wed Aug 03 06:33:37
BST 2011
# Saved by TopBraid on
Thu Aug 04 09:22:54
BST 2011
# baseURI: null
@prefix
composite:
<http://www.topbraid.org/2007/05/composite.owl#>
.
...
...
www.reportinghub.no/ep/transform/TRANSFORM_ddr-drillReport-(v1.1.1).ttl
View file @
135b12d
This diff is collapsed. Click to expand it.
www.reportinghub.no/ep/transform/TRANSFORM_ddr-drillReport-(v1.1.1).ttl.tbc
View file @
135b12d
# Saved by TopBraid on
Wed Aug 03 12:31:51
BST 2011
# Saved by TopBraid on
Thu Aug 04 10:29:52
BST 2011
# baseURI: null
@prefix
composite:
<http://www.topbraid.org/2007/05/composite.owl#>
.
...
...
www.reportinghub.no/ep/transform/TRANSFORM_ddr-normalization-(v1.1.1).ttl
View file @
135b12d
# Saved by TopBraid on
Wed Aug 03 07:44:47
BST 2011
# Saved by TopBraid on
Thu Aug 04 10:31:12
BST 2011
# baseURI: http://www.reportinghub.no/ep/transform/1.1/normalization
# imports: file:///www.reportinghub.no/examples/xml/NPD_110412124707.xml
# imports: http://www.reportinghub.no/ep/transform/1.1/ddr/drillReport
# imports: http://www.reportinghub.no/ep/transform/1.1/ddr/statusInfo
# imports: http://spinrdf.org/spin
@prefix
:
<http://www.reportinghub.no/ep/transform/1.1/normalization#>
.
...
...
@@ -14,5 +16,5 @@
<http://www.reportinghub.no/ep/transform/1.1/normalization>
rdf:
type
owl:
Ontology
;
owl:
imports
<http://
spinrdf.org/spin>
,
<http://www.reportinghub.no/ep/transform/1.1/ddr/drillReport
>
;
owl:
imports
<http://
www.reportinghub.no/ep/transform/1.1/ddr/drillReport>
,
<file:///www.reportinghub.no/examples/xml/NPD_110412124707.xml>
,
<http://spinrdf.org/spin>
,
<http://www.reportinghub.no/ep/transform/1.1/ddr/statusInfo
>
;
owl:
versionInfo
"Created with TopBraid Composer"
^^
xsd:
string
.
...
...
www.reportinghub.no/ep/transform/TRANSFORM_ddr-normalization-(v1.1.1).ttl.tbc
View file @
135b12d
# Saved by TopBraid on
Wed Aug 03 07:44:47
BST 2011
# Saved by TopBraid on
Thu Aug 04 10:31:12
BST 2011
# baseURI: null
@prefix
composite:
<http://www.topbraid.org/2007/05/composite.owl#>
.
...
...
@@ -13,5 +13,7 @@
[]
rdf:
type
inference:
Configuration
;
composite:
child
[
rdf:
type
<http://spinrdf.org/spin#TopSPIN>
;
<http://spinrdf.org/spin#topSPINOptions>
"singlePass"
;
composite:
index
"0"
^^
xsd:
int
]
.
...
...
Please
register
or
login
to post a comment