func PublicKeyIsDisjointWith(other vocab.Type) bool {
	return false
}
PublicKeyIsDisjointWith returns true if the other provided type is disjoint
with the PublicKey type.
package typepublickey
import vocab "github.com/go-fed/activity/streams/vocab"
type W3IDSecurityV1PublicKey struct {
	JSONLDId                   vocab.JSONLDIdProperty
	W3IDSecurityV1Owner        vocab.W3IDSecurityV1OwnerProperty
	W3IDSecurityV1PublicKeyPem vocab.W3IDSecurityV1PublicKeyPemProperty
	alias                      string
	unknown                    map[string]interface{}
}
func DeserializePublicKey(m map[string]interface{}, aliasMap map[string]string) (*W3IDSecurityV1PublicKey, error) {
	alias := ""
	if a, ok := aliasMap["https://w3id.org/security/v1"]; ok {
		alias = a
	}
	this := &W3IDSecurityV1PublicKey{
		alias:   alias,
		unknown: make(map[string]interface{}),
	}
	if p, err := mgr.DeserializeIdPropertyJSONLD()(m, aliasMap); err != nil {
		return nil, err
	} else if p != nil {
		this.JSONLDId = p
	}
	if p, err := mgr.DeserializeOwnerPropertyW3IDSecurityV1()(m, aliasMap); err != nil {
		return nil, err
	} else if p != nil {
		this.W3IDSecurityV1Owner = p
	}
	if p, err := mgr.DeserializePublicKeyPemPropertyW3IDSecurityV1()(m, aliasMap); err != nil {
		return nil, err
	} else if p != nil {
		this.W3IDSecurityV1PublicKeyPem = p
	}
	for k, v := range m {
		if k == "id" {
			continue
		} else if k == "owner" {
			continue
		} else if k == "publicKeyPem" {
			continue
		}  
		this.unknown[k] = v
	}
	return this, nil
}
func IsOrExtendsPublicKey(other vocab.Type) bool {
	if other.GetTypeName() == "PublicKey" {
		return true
	}
	return PublicKeyIsExtendedBy(other)
}
func NewW3IDSecurityV1PublicKey() *W3IDSecurityV1PublicKey {
	return &W3IDSecurityV1PublicKey{
		alias:   "",
		unknown: make(map[string]interface{}),
	}
}