function parseSchemaProps (schema) {
return Object.keys(schema).map(id => {
const doctype = schema[id]
const propProps = doctype.props ? Object.keys(doctype.props).map(id => {
const prop = doctype.props[id]
return Object.keys(prop.schemaProps || {}).map(key => {
return [
`scm:${id}`,
`scm:${key}`,
typeof prop.schemaProps[key] === 'boolean' ? {'@type': 'xsd:boolean', '@value': prop.schemaProps[key]} : `${prop.schemaProps[key]}`
]
})
}) : []
const classProps = [Object.keys(doctype.schemaProps || {}).map(key => {
return [
`scm:${id}`,
`scm:${key}`,
typeof doctype.schemaProps[key] === 'boolean' ? {'@type': 'xsd:boolean', '@value': doctype.schemaProps[key]} : `${doctype.schemaProps[key]}`
]
})]
const subclassProps = doctype.subclasses ? parseSchemaProps(doctype.subclasses) : []
return [classProps, propProps, ...subclassProps]
}).flat()
.filter(quad => quad.length > 0)
}