Best Practices
This guide outlines practical guidelines for implementing high-quality Metaverse metadata. Following these practices ensures your metadata is discoverable, maintainable, and interoperable.
General
-
Keep It Simple
- Only use complex structures when necessary
- Prefer standard properties over custom ones
- Use clear, descriptive property names
-
Maintain Consistency
- Use consistent property patterns
- Maintain consistent value types
- Follow naming conventions
-
Think About Scale
- Plan for future extensions
- Consider performance implications
- Design for maintainability
Implementation Guidelines
-
Start Simple
- Begin with basic Schema.org properties
- Add technical details gradually
- Validate at each step
-
Maintain Consistency
- Use consistent property names
- Follow standard date formats
- Apply consistent naming conventions
-
Plan for Evolution
- Design for extensibility
- Document changes clearly
- Maintain backwards compatibility
-
Optimize for Discovery
- Use descriptive names
- Include relevant keywords
- Add proper categorization
-
Regular Validation
- Check required properties
- Verify format compliance
- Test references
Metadata Structure
Use Clear Organization
✅ Do: Group related properties logically
{
"@context": "https://schema.org/",
"@type": "3DModel",
"name": "Office Chair",
"description": "Ergonomic office chair with adjustable height",
"creator": {
"@type": "Organization",
"name": "Virtual Furnishings Inc.",
"url": "https://example.com/virtual-furnishings"
},
"contentUrl": "https://example.com/models/chair.glb",
"encodingFormat": "model/gltf-binary",
"license": "https://creativecommons.org/licenses/by/4.0/",
"dateCreated": "2024-03-15"
}
❌ Don't: Mix unrelated properties randomly
{
"@context": "https://schema.org/",
"@type": "3DModel",
"contentUrl": "https://example.com/models/chair.glb",
"creator": {"@type": "Organization"},
"dateCreated": "2024-03-15",
"name": "Office Chair",
"encodingFormat": "model/gltf-binary"
}
Use Proper Namespacing
✅ Do: Clearly separate different standards
{
"@context": {
"@vocab": "https://schema.org/",
"gltf": "https://www.khronos.org/gltf/"
},
"@type": "3DModel",
"name": "Office Chair",
"gltf:transform": {
"scale": [1.0, 1.0, 1.0],
"rotation": [0, 0, 0, 1],
"translation": [0, 0.45, 0]
}
}
❌ Don't: Mix standards without namespacing
{
"@context": "https://schema.org/",
"@type": "3DModel",
"name": "Office Chair",
"scale": [1.0, 1.0, 1.0],
"rotation": [0, 0, 0, 1]
}
Content Quality
Write Clear Descriptions
✅ Do: Provide detailed, specific descriptions
{
"@context": "https://schema.org/",
"@type": "3DModel",
"name": "Ergonomic Office Chair",
"description": "High-backed office chair with adjustable height, tilt mechanism, and lumbar support. Suitable for professional office environments. Available in blue and black variants.",
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "seatHeight",
"value": "45-60cm",
"unitCode": "CMT"
}
]
}
❌ Don't: Use vague or minimal descriptions
{
"@context": "https://schema.org/",
"@type": "3DModel",
"name": "Chair",
"description": "An office chair"
}
Include Technical Details
✅ Do: Specify precise technical information
{
"@context": {
"@vocab": "https://schema.org/",
"gltf": "https://www.khronos.org/gltf/"
},
"@type": "3DModel",
"name": "Office Chair",
"contentSize": "2048576",
"encodingFormat": "model/gltf-binary",
"gltf:materials": [{
"name": "Fabric",
"pbrMetallicRoughness": {
"baseColorFactor": [0.2, 0.2, 0.8, 1.0],
"metallicFactor": 0.0,
"roughnessFactor": 0.8
}
}]
}
❌ Don't: Omit or provide imprecise technical details
{
"@context": "https://schema.org/",
"@type": "3DModel",
"name": "Office Chair",
"contentSize": "2MB",
"encodingFormat": "glb"
}
Asset Relationships
Define Clear Hierarchies
✅ Do: Use explicit relationships
{
"@context": "https://schema.org/",
"@type": "CreativeWork",
"name": "Office Furniture Set",
"hasPart": [
{
"@type": "3DModel",
"@id": "https://example.com/models/chair",
"name": "Office Chair"
},
{
"@type": "3DModel",
"@id": "https://example.com/models/desk",
"name": "Office Desk"
}
]
}
❌ Don't: Use ambiguous relationships
{
"@context": "https://schema.org/",
"@type": "CreativeWork",
"name": "Office Set",
"related": [
"chair",
"desk"
]
}
Reference Resources Properly
✅ Do: Use full, resolvable URLs
{
"@context": "https://schema.org/",
"@type": "3DModel",
"name": "Office Chair",
"contentUrl": "https://example.com/models/chair.glb",
"thumbnail": "https://example.com/thumbnails/chair.jpg",
"sameAs": [
"https://other-platform.com/models/chair-123",
"ipfs://QmXaXa1XaX..."
]
}
❌ Don't: Use relative or incomplete references
{
"@context": "https://schema.org/",
"@type": "3DModel",
"name": "Office Chair",
"contentUrl": "/models/chair.glb",
"thumbnail": "chair.jpg"
}
Version Management
Track Changes Clearly
✅ Do: Include version information
{
"@context": "https://schema.org/",
"@type": "3DModel",
"name": "Office Chair",
"version": "2.1.0",
"dateModified": "2024-03-15",
"previousVersion": {
"@id": "https://example.com/models/chair/2.0.0",
"version": "2.0.0",
"dateModified": "2024-02-01"
}
}
❌ Don't: Omit version tracking
{
"@context": "https://schema.org/",
"@type": "3DModel",
"name": "Office Chair",
"dateModified": "2024-03-15"
}
Rights Management
Specify Clear Licensing
✅ Do: Include detailed rights information
{
"@context": "https://schema.org/",
"@type": "3DModel",
"name": "Office Chair",
"license": "https://creativecommons.org/licenses/by/4.0/",
"acquireLicensePage": "https://example.com/license/chair",
"creditText": "Created by Virtual Furnishings Inc.",
"copyrightNotice": "© 2024 Virtual Furnishings Inc. All rights reserved.",
"usageTerms": "Attribution required. Commercial use allowed."
}
❌ Don't: Use vague licensing terms
{
"@context": "https://schema.org/",
"@type": "3DModel",
"name": "Office Chair",
"license": "free for use"
}
Next Steps
- Review Metadata Profiles for structure templates
- Check Validation Tools for compliance testing
- Explore Standards for advanced features