forked from NextGraph/nextgraph-rs
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
5.3 KiB
166 lines
5.3 KiB
import { Schema } from "shexj";
|
|
|
|
/**
|
|
* =============================================================================
|
|
* contactSchema: ShexJ Schema for contact
|
|
* =============================================================================
|
|
*/
|
|
export const contactSchema: Schema = {
|
|
type: "Schema",
|
|
shapes: [
|
|
{
|
|
id: "did:ng:x:class#SocialContact",
|
|
type: "ShapeDecl",
|
|
shapeExpr: {
|
|
type: "Shape",
|
|
expression: {
|
|
type: "EachOf",
|
|
expressions: [
|
|
{
|
|
type: "TripleConstraint",
|
|
predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
|
|
valueExpr: {
|
|
type: "NodeConstraint",
|
|
values: ["http://www.w3.org/2006/vcard/ns#Individual"],
|
|
},
|
|
annotations: [
|
|
{
|
|
type: "Annotation",
|
|
predicate: "http://www.w3.org/2000/01/rdf-schema#comment",
|
|
object: {
|
|
value: "Defines the node as an Individual (from vcard)",
|
|
},
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "TripleConstraint",
|
|
predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
|
|
valueExpr: {
|
|
type: "NodeConstraint",
|
|
values: ["http://schema.org/Person"],
|
|
},
|
|
annotations: [
|
|
{
|
|
type: "Annotation",
|
|
predicate: "http://www.w3.org/2000/01/rdf-schema#comment",
|
|
object: {
|
|
value: "Defines the node as a Person (from Schema.org)",
|
|
},
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "TripleConstraint",
|
|
predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
|
|
valueExpr: {
|
|
type: "NodeConstraint",
|
|
values: ["http://xmlns.com/foaf/0.1/Person"],
|
|
},
|
|
annotations: [
|
|
{
|
|
type: "Annotation",
|
|
predicate: "http://www.w3.org/2000/01/rdf-schema#comment",
|
|
object: {
|
|
value: "Defines the node as a Person (from foaf)",
|
|
},
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "TripleConstraint",
|
|
predicate: "http://www.w3.org/2006/vcard/ns#fn",
|
|
valueExpr: {
|
|
type: "NodeConstraint",
|
|
datatype: "http://www.w3.org/2001/XMLSchema#string",
|
|
},
|
|
annotations: [
|
|
{
|
|
type: "Annotation",
|
|
predicate: "http://www.w3.org/2000/01/rdf-schema#comment",
|
|
object: {
|
|
value:
|
|
"The formatted name of a person. Example: John Smith",
|
|
},
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "TripleConstraint",
|
|
predicate: "http://www.w3.org/2006/vcard/ns#hasEmail",
|
|
valueExpr: {
|
|
type: "NodeConstraint",
|
|
datatype: "http://www.w3.org/2001/XMLSchema#string",
|
|
},
|
|
min: 0,
|
|
max: 1,
|
|
annotations: [
|
|
{
|
|
type: "Annotation",
|
|
predicate: "http://www.w3.org/2000/01/rdf-schema#comment",
|
|
object: {
|
|
value: "The person's email.",
|
|
},
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "TripleConstraint",
|
|
predicate: "did:ng:x:skills#hasRating",
|
|
valueExpr: "did:ng:x:class#HasRating",
|
|
min: 0,
|
|
max: -1,
|
|
},
|
|
],
|
|
},
|
|
extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"],
|
|
},
|
|
},
|
|
{
|
|
id: "did:ng:x:class#HasRating",
|
|
type: "ShapeDecl",
|
|
shapeExpr: {
|
|
type: "Shape",
|
|
expression: {
|
|
type: "EachOf",
|
|
expressions: [
|
|
{
|
|
type: "TripleConstraint",
|
|
predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
|
|
valueExpr: {
|
|
type: "NodeConstraint",
|
|
values: ["did:ng:x:skills#Rating"],
|
|
},
|
|
},
|
|
{
|
|
type: "TripleConstraint",
|
|
predicate: "did:ng:x:skills#rated",
|
|
valueExpr: {
|
|
type: "NodeConstraint",
|
|
datatype: "http://www.w3.org/2001/XMLSchema#integer",
|
|
},
|
|
},
|
|
{
|
|
type: "TripleConstraint",
|
|
predicate: "did:ng:x:skills#skill",
|
|
valueExpr: {
|
|
type: "NodeConstraint",
|
|
values: [
|
|
"did:ng:k:skills:programming:svelte",
|
|
"did:ng:k:skills:programming:nextjs",
|
|
"did:ng:k:skills:programming:react",
|
|
"did:ng:k:skills:programming:vuejs",
|
|
"did:ng:k:skills:programming:tailwind",
|
|
"did:ng:k:skills:programming:rdf",
|
|
"did:ng:k:skills:programming:rust",
|
|
"did:ng:k:skills:programming:yjs",
|
|
"did:ng:k:skills:programming:automerge",
|
|
],
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
};
|
|
|